diff --git a/Maths/isDivisible.js b/Maths/IsDivisible.js similarity index 57% rename from Maths/isDivisible.js rename to Maths/IsDivisible.js index 072957e920..9c2ec81cf5 100644 --- a/Maths/isDivisible.js +++ b/Maths/IsDivisible.js @@ -1,11 +1,11 @@ // Checks if a number is divisible by another number. -const isDivisible = (num1, num2) => { - if (isNaN(num1) || isNaN(num2) || num1 == null || num2 == null) { - return 'All parameters have to be numbers' +export const isDivisible = (num1, num2) => { + if (!Number.isFinite(num1) || !Number.isFinite(num2)) { + throw new TypeError('Expected a number') } if (num2 === 0) { - return 'Not possible to divide by zero' + return false } return num1 % num2 === 0 } diff --git a/Maths/test/IsDivisible.test.js b/Maths/test/IsDivisible.test.js new file mode 100644 index 0000000000..80ece0a0d7 --- /dev/null +++ b/Maths/test/IsDivisible.test.js @@ -0,0 +1,39 @@ +import { isDivisible } from '../IsDivisible' + +describe('isDivisible', () => { + const testCases = [ + [0, 1, true], + [0, 2, true], + [1, 1, true], + [1, 2, false], + [2, 1, true], + [4, 4, true], + [16, 4, true], + [36978235, 5, true], + [36978235, 4, false], + [4.5, 1.5, true], + [4.5, 1.2, false], + [5, 0, false], + [5, -0, false] + ] + + test.each(testCases)('if parameters are (%i, %i) it returns %p', (dividend, divisor, expected) => { + expect(isDivisible(dividend, divisor)).toBe(expected) + }) + + const errorCases = [ + [NaN, NaN], + [NaN, 1], + [1, NaN], + ['1', 1], + [1, '1'], + [1, true], + [false, 2] + ] + + test.each(errorCases)('throws an error if parameters are (%p, %p)', (dividend, divisor) => { + expect(() => { + isDivisible(dividend, divisor) + }).toThrow() + }) +})
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: