mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-05 08:16:50 +08:00
Merge pull request #597 from Masa-Shin/fix-maths-is-divisible
Fix Maths/IsDivisible
This commit is contained in:
@ -1,11 +1,11 @@
|
|||||||
// Checks if a number is divisible by another number.
|
// Checks if a number is divisible by another number.
|
||||||
|
|
||||||
const isDivisible = (num1, num2) => {
|
export const isDivisible = (num1, num2) => {
|
||||||
if (isNaN(num1) || isNaN(num2) || num1 == null || num2 == null) {
|
if (!Number.isFinite(num1) || !Number.isFinite(num2)) {
|
||||||
return 'All parameters have to be numbers'
|
throw new TypeError('Expected a number')
|
||||||
}
|
}
|
||||||
if (num2 === 0) {
|
if (num2 === 0) {
|
||||||
return 'Not possible to divide by zero'
|
return false
|
||||||
}
|
}
|
||||||
return num1 % num2 === 0
|
return num1 % num2 === 0
|
||||||
}
|
}
|
39
Maths/test/IsDivisible.test.js
Normal file
39
Maths/test/IsDivisible.test.js
Normal file
@ -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()
|
||||||
|
})
|
||||||
|
})
|
Reference in New Issue
Block a user