From 5be66d9b7af3b05ade44712a90fe1d85150eb4da Mon Sep 17 00:00:00 2001 From: oleh Date: Sat, 4 Oct 2025 16:45:43 +0200 Subject: [PATCH 1/2] added tests --- src/splitInteger.js | 2 +- src/splitInteger.test.js | 19 +++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/splitInteger.js b/src/splitInteger.js index d3da7485..0b646141 100644 --- a/src/splitInteger.js +++ b/src/splitInteger.js @@ -1,4 +1,4 @@ -'use strict'; +"use strict"; /** * @param {number} value diff --git a/src/splitInteger.test.js b/src/splitInteger.test.js index a610317d..40936650 100644 --- a/src/splitInteger.test.js +++ b/src/splitInteger.test.js @@ -1,21 +1,28 @@ -'use strict'; +"use strict"; -const splitInteger = require('./splitInteger'); +const splitInteger = require("./splitInteger"); test(`should split a number into equal parts if a value is divisible by a numberOfParts`, () => { - + expect(splitInteger(6, 2)).toEqual([3, 3]); }); test(`should return a part equals to a value when splitting into 1 part`, () => { - + expect(splitInteger(8, 1)).toEqual([8]); }); -test('should sort parts ascending if they are not equal', () => { +test("should sort parts ascending if they are not equal", () => { + const result = splitInteger(6, 2); + for (let i = 0; i < result.length - 1; i++) { + expect(result[i + 1]).toBeGreaterThanOrEqual(result[i]); + } }); -test('should add zeros if value < numberOfParts', () => { +test("should add zeros if value < numberOfParts", () => { + const result = splitInteger(5, 6); + expect(result).toContain(0); + expect(result).toHaveLength(6); }); From f87f79dea7e87ca74c1b311f8122e9113bcf471c Mon Sep 17 00:00:00 2001 From: oleh Date: Sat, 4 Oct 2025 18:20:32 +0200 Subject: [PATCH 2/2] test fix 1 --- src/splitInteger.test.js | 40 ++++++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/src/splitInteger.test.js b/src/splitInteger.test.js index 40936650..3236eb18 100644 --- a/src/splitInteger.test.js +++ b/src/splitInteger.test.js @@ -2,27 +2,51 @@ const splitInteger = require("./splitInteger"); +function assertSplitProperties(value, numberOfParts) { + const result = splitInteger(value, numberOfParts); + + expect(result).toHaveLength(numberOfParts); + + expect(result.reduce((acc, val) => acc + val, 0)).toBe(value); + + result.forEach((el) => expect(Number.isInteger(el)).toBe(true)); + + for (let i = 0; i < result.length - 1; i++) { + expect(result[i + 1]).toBeGreaterThanOrEqual(result[i]); + } + + const min = Math.min(...result); + const max = Math.max(...result); + + expect(max - min).toBeLessThanOrEqual(1); + + return result; +} + test(`should split a number into equal parts if a value is divisible by a numberOfParts`, () => { - expect(splitInteger(6, 2)).toEqual([3, 3]); + expect(assertSplitProperties(6, 2)).toEqual([3, 3]); }); test(`should return a part equals to a value when splitting into 1 part`, () => { - expect(splitInteger(8, 1)).toEqual([8]); + expect(assertSplitProperties(8, 1)).toEqual([8]); }); test("should sort parts ascending if they are not equal", () => { - const result = splitInteger(6, 2); + const result = assertSplitProperties(17, 4); - for (let i = 0; i < result.length - 1; i++) { - expect(result[i + 1]).toBeGreaterThanOrEqual(result[i]); - } + expect(result).toEqual([4, 4, 4, 5]); }); test("should add zeros if value < numberOfParts", () => { - const result = splitInteger(5, 6); + const result = assertSplitProperties(5, 6); expect(result).toContain(0); - expect(result).toHaveLength(6); +}); + +test("should handle example splitInteger(32, 6)", () => { + const result = assertSplitProperties(32, 6); + + expect(result).toEqual([5, 5, 5, 5, 6, 6]); });