From 053800f3357a278b6c2c4970b049f1f444920d9c Mon Sep 17 00:00:00 2001 From: Hridyanshu7 Date: Fri, 25 Oct 2024 11:07:10 +0530 Subject: [PATCH] feat: added tests for Decimal Isolate function --- Maths/DecimalIsolate.js | 11 +++++--- Maths/test/DecimalIsolate.test.js | 44 +++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 Maths/test/DecimalIsolate.test.js diff --git a/Maths/DecimalIsolate.js b/Maths/DecimalIsolate.js index ac9f81a076..63af16801a 100644 --- a/Maths/DecimalIsolate.js +++ b/Maths/DecimalIsolate.js @@ -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) => { diff --git a/Maths/test/DecimalIsolate.test.js b/Maths/test/DecimalIsolate.test.js new file mode 100644 index 0000000000..4c021b5d53 --- /dev/null +++ b/Maths/test/DecimalIsolate.test.js @@ -0,0 +1,44 @@ +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) + } + ) + }) +})