From adcce2fa32d94842d07308c750e49d87a2450b65 Mon Sep 17 00:00:00 2001 From: abdullyahuza Date: Wed, 26 Oct 2022 20:27:52 +0100 Subject: [PATCH 1/7] fit: Add check for invalid inputs --- Recursive/Factorial.js | 8 ++++++++ Recursive/test/Factorial.test.js | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/Recursive/Factorial.js b/Recursive/Factorial.js index 5d882e5ea4..45a5dcedd1 100644 --- a/Recursive/Factorial.js +++ b/Recursive/Factorial.js @@ -9,6 +9,14 @@ */ const factorial = (n) => { + if (!(typeof n === 'number')) { + throw new TypeError('Not a Number') + } + + if ((n % 1) !== 0) { + throw new RangeError('Not a Whole Number') + } + if (n === 0) { return 1 } diff --git a/Recursive/test/Factorial.test.js b/Recursive/test/Factorial.test.js index b124efea5e..8cbd323175 100644 --- a/Recursive/test/Factorial.test.js +++ b/Recursive/test/Factorial.test.js @@ -8,4 +8,11 @@ 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 Number') + expect(() => factorial(null)).toThrow('Not a Number') + expect(() => factorial(undefined)).toThrow('Not a Number') + expect(() => factorial(3.142)).toThrow('Not a Whole Number') + }) }) From e65c9a14a8977df88103fcaf278e97dc45fd0986 Mon Sep 17 00:00:00 2001 From: abdullyahuza Date: Wed, 26 Oct 2022 20:33:12 +0100 Subject: [PATCH 2/7] fit: Add check for invalid inputs --- Recursive/Factorial.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Recursive/Factorial.js b/Recursive/Factorial.js index 45a5dcedd1..ef7a42f605 100644 --- a/Recursive/Factorial.js +++ b/Recursive/Factorial.js @@ -16,7 +16,7 @@ const factorial = (n) => { if ((n % 1) !== 0) { throw new RangeError('Not a Whole Number') } - + if (n === 0) { return 1 } From 92fb32885bd2df2fb445c8cf59217c17fe83c644 Mon Sep 17 00:00:00 2001 From: abdullyahuza Date: Thu, 27 Oct 2022 08:06:34 +0100 Subject: [PATCH 3/7] fit: check for negative numbers --- Recursive/Factorial.js | 4 ++++ Recursive/test/Factorial.test.js | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/Recursive/Factorial.js b/Recursive/Factorial.js index ef7a42f605..4958bbc31a 100644 --- a/Recursive/Factorial.js +++ b/Recursive/Factorial.js @@ -17,6 +17,10 @@ const factorial = (n) => { throw new RangeError('Not a Whole Number') } + if (n < 0) { + return undefined + } + if (n === 0) { return 1 } diff --git a/Recursive/test/Factorial.test.js b/Recursive/test/Factorial.test.js index 8cbd323175..d5376895f1 100644 --- a/Recursive/test/Factorial.test.js +++ b/Recursive/test/Factorial.test.js @@ -15,4 +15,9 @@ describe('Factorial', () => { expect(() => factorial(undefined)).toThrow('Not a Number') expect(() => factorial(3.142)).toThrow('Not a Whole Number') }) + + it('Should return undefined for value less than 0', () => { + expect(factorial(-1)).toBe(undefined) + expect(factorial(-100)).toBe(undefined) + }) }) From 53aa0b12b9d4d9915a4de9bfb086180e52df20ac Mon Sep 17 00:00:00 2001 From: abdullyahuza Date: Thu, 27 Oct 2022 08:26:46 +0100 Subject: [PATCH 4/7] fit: check for negative numbers --- Recursive/Factorial.js | 4 ++-- Recursive/test/Factorial.test.js | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Recursive/Factorial.js b/Recursive/Factorial.js index 4958bbc31a..7a24974223 100644 --- a/Recursive/Factorial.js +++ b/Recursive/Factorial.js @@ -9,7 +9,7 @@ */ const factorial = (n) => { - if (!(typeof n === 'number')) { + if (typeof n !== 'number') { throw new TypeError('Not a Number') } @@ -18,7 +18,7 @@ const factorial = (n) => { } if (n < 0) { - return undefined + return new RangeError('Not a Positive Number') } if (n === 0) { diff --git a/Recursive/test/Factorial.test.js b/Recursive/test/Factorial.test.js index d5376895f1..bab7f04c82 100644 --- a/Recursive/test/Factorial.test.js +++ b/Recursive/test/Factorial.test.js @@ -16,8 +16,7 @@ describe('Factorial', () => { expect(() => factorial(3.142)).toThrow('Not a Whole Number') }) - it('Should return undefined for value less than 0', () => { + it('should return undefined for values less than 1', () => { expect(factorial(-1)).toBe(undefined) - expect(factorial(-100)).toBe(undefined) }) }) From b7ef53ced2f249e170cae03305533c4ec97e6181 Mon Sep 17 00:00:00 2001 From: abdullyahuza Date: Thu, 27 Oct 2022 08:28:26 +0100 Subject: [PATCH 5/7] fit: check for negative numbers --- Recursive/test/Factorial.test.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Recursive/test/Factorial.test.js b/Recursive/test/Factorial.test.js index bab7f04c82..eee72ed5cd 100644 --- a/Recursive/test/Factorial.test.js +++ b/Recursive/test/Factorial.test.js @@ -14,9 +14,6 @@ describe('Factorial', () => { expect(() => factorial(null)).toThrow('Not a Number') expect(() => factorial(undefined)).toThrow('Not a Number') expect(() => factorial(3.142)).toThrow('Not a Whole Number') - }) - - it('should return undefined for values less than 1', () => { - expect(factorial(-1)).toBe(undefined) + expect(() => factorial(-1)).toThrow('Not a Positive Number') }) }) From dce525176cf29ae39ac3bdc6112fabcc829cdf46 Mon Sep 17 00:00:00 2001 From: abdullyahuza Date: Thu, 27 Oct 2022 14:20:01 +0100 Subject: [PATCH 6/7] fix: check with builtin function --- Recursive/Factorial.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Recursive/Factorial.js b/Recursive/Factorial.js index 7a24974223..45e62d5f7d 100644 --- a/Recursive/Factorial.js +++ b/Recursive/Factorial.js @@ -13,12 +13,12 @@ const factorial = (n) => { throw new TypeError('Not a Number') } - if ((n % 1) !== 0) { + if (!Number.isInteger(n)) { throw new RangeError('Not a Whole Number') } if (n < 0) { - return new RangeError('Not a Positive Number') + throw new RangeError('Not a Positive Number') } if (n === 0) { From cae6a2b2c32762b732f879b83dcaf7a1686a92e1 Mon Sep 17 00:00:00 2001 From: abdullyahuza Date: Thu, 27 Oct 2022 15:00:22 +0100 Subject: [PATCH 7/7] fix: remove typeof comparison --- Recursive/Factorial.js | 4 ---- Recursive/test/Factorial.test.js | 6 +++--- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/Recursive/Factorial.js b/Recursive/Factorial.js index 45e62d5f7d..5a0d560514 100644 --- a/Recursive/Factorial.js +++ b/Recursive/Factorial.js @@ -9,10 +9,6 @@ */ const factorial = (n) => { - if (typeof n !== 'number') { - throw new TypeError('Not a Number') - } - if (!Number.isInteger(n)) { throw new RangeError('Not a Whole Number') } diff --git a/Recursive/test/Factorial.test.js b/Recursive/test/Factorial.test.js index eee72ed5cd..5f32a44332 100644 --- a/Recursive/test/Factorial.test.js +++ b/Recursive/test/Factorial.test.js @@ -10,9 +10,9 @@ describe('Factorial', () => { }) it('Throw Error for Invalid Input', () => { - expect(() => factorial('-')).toThrow('Not a Number') - expect(() => factorial(null)).toThrow('Not a Number') - expect(() => factorial(undefined)).toThrow('Not a Number') + 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') }) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy