From 5364a1c31be7d787a10a9fa0ed287844ff35c618 Mon Sep 17 00:00:00 2001 From: Abdulrazak Yahuza <40579655+abdullyahuza@users.noreply.github.com> Date: Thu, 27 Oct 2022 19:45:53 +0100 Subject: [PATCH] chore: check for invalid input to factorial (#1229) --- Recursive/Factorial.js | 8 ++++++++ Recursive/test/Factorial.test.js | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/Recursive/Factorial.js b/Recursive/Factorial.js index 5d882e5ea..5a0d56051 100644 --- a/Recursive/Factorial.js +++ b/Recursive/Factorial.js @@ -9,6 +9,14 @@ */ const factorial = (n) => { + if (!Number.isInteger(n)) { + throw new RangeError('Not a Whole Number') + } + + if (n < 0) { + throw new RangeError('Not a Positive Number') + } + if (n === 0) { return 1 } diff --git a/Recursive/test/Factorial.test.js b/Recursive/test/Factorial.test.js index b124efea5..5f32a4433 100644 --- a/Recursive/test/Factorial.test.js +++ b/Recursive/test/Factorial.test.js @@ -8,4 +8,12 @@ describe('Factorial', () => { it('should return factorial 120 for value "5"', () => { expect(factorial(5)).toBe(120) }) + + it('Throw Error for Invalid Input', () => { + expect(() => factorial('-')).toThrow('Not a Whole Number') + expect(() => factorial(null)).toThrow('Not a Whole Number') + expect(() => factorial(undefined)).toThrow('Not a Whole Number') + expect(() => factorial(3.142)).toThrow('Not a Whole Number') + expect(() => factorial(-1)).toThrow('Not a Positive Number') + }) })