Skip to content

Commit

Permalink
feat: tests added for decimalIsolate and improved comments for clarity
Browse files Browse the repository at this point in the history
  • Loading branch information
Hridyanshu7 committed Oct 23, 2024
1 parent 5426682 commit cb9cd55
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 3 deletions.
11 changes: 8 additions & 3 deletions Maths/DecimalIsolate.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
/*
* function isolates the decimal part of a number.
* Take the number and subtract it from the floored number.
* Return the result.
* This function isolates the decimal part of a number.
* - If input is a number or a numeric string, it isolates and returns the decimal part.
* - If input is an array:
* - It isolates the decimal part of the first element.
* - If the array contains more than one element, only the first element is considered.
* - If the array is empty, it returns 0.
* - If input is not a number, a numeric string, or a valid first element array,
* the function returns 0.
*/

export const decimalIsolate = (number) => {
Expand Down
45 changes: 45 additions & 0 deletions Maths/test/DecimalIsolate.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import { describe } from 'node:test'
import { decimalIsolate } from '../decimalIsolate'

const invalidInputs = [
{ input: NaN, description: 'NaN' },
{ input: null, description: 'null' },
{ input: undefined, description: 'undefined' },
{ input: 'a string', description: 'a string' },
{ input: { a: 54.34 }, description: 'an object' },
{
input: ['OneDotTwoThree', 4.56, 7.89],
description: 'an array with invalid first element'
}
]

describe('DecimalIsolate', () => {
it('should isolate the decimal part of a positive number', () => {
expect(decimalIsolate(12.34)).toBe(0.34)
})

it('should isolate the decimal part of a negative number', () => {
expect(decimalIsolate(-456.789)).toBe(0.789)
})

it('should return 0 when the number is a whole number', () => {
expect(decimalIsolate(100)).toBe(0)
})

it('should isolate the decimal part of a number string', () => {
expect(decimalIsolate('12.34')).toBe(0.34)
})

it('should isolate the decimal part of the first element of an array if it is convertible to a number', () => {
expect(decimalIsolate([98.76, { a: 76.45 }])).toBe(0.76)
})

describe('Invalid Inputs', () => {
it.each(invalidInputs)(
'should return 0 for invalid input when input is $description',
({ input }) => {
expect(decimalIsolate(input)).toBe(0)
}
)
})
})

0 comments on commit cb9cd55

Please sign in to comment.