From b461af7f6ddd2c872aef9dc834ecb4b7ec677b33 Mon Sep 17 00:00:00 2001 From: JulyaPetrovskaya <119932772+JulyaPetrovskaya@users.noreply.github.com> Date: Fri, 26 Sep 2025 21:42:29 +0300 Subject: [PATCH 1/2] fin --- src/splitInteger.test.js | 73 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/src/splitInteger.test.js b/src/splitInteger.test.js index a610317d..044a6e09 100644 --- a/src/splitInteger.test.js +++ b/src/splitInteger.test.js @@ -4,18 +4,91 @@ const splitInteger = require('./splitInteger'); test(`should split a number into equal parts if a value is divisible by a numberOfParts`, () => { + const res = splitInteger(8, 4); + expect(res).toEqual([2, 2, 2, 2]); + expect(res).toHaveLength(4); + expect(res.reduce((a, b) => a + b, 0)).toBe(8); + expect(res.every(Number.isInteger)).toBe(true); + expect(res).toEqual(res.slice().sort((a, b) => a - b)); + expect(Math.max(...res) - Math.min(...res)).toBeLessThanOrEqual(1); }); test(`should return a part equals to a value when splitting into 1 part`, () => { + const res = splitInteger(8, 1); + expect(res).toEqual([8]); + expect(res).toHaveLength(1); + expect(res.reduce((a, b) => a + b, 0)).toBe(8); + expect(res.every(Number.isInteger)).toBe(true); + expect(res).toEqual(res.slice().sort((a, b) => a - b)); + expect(Math.max(...res) - Math.min(...res)).toBeLessThanOrEqual(1); }); test('should sort parts ascending if they are not equal', () => { + const res = splitInteger(10, 3); + expect(res).toEqual([3, 3, 4]); + expect(res).toHaveLength(3); + expect(res.reduce((a, b) => a + b, 0)).toBe(10); + expect(res.every(Number.isInteger)).toBe(true); + expect(res).toEqual(res.slice().sort((a, b) => a - b)); + expect(Math.max(...res) - Math.min(...res)).toBeLessThanOrEqual(1); }); test('should add zeros if value < numberOfParts', () => { + const res = splitInteger(3, 5); + expect(res).toEqual([0, 0, 1, 1, 1]); + expect(res).toHaveLength(5); + expect(res.reduce((a, b) => a + b, 0)).toBe(3); + expect(res.every(Number.isInteger)).toBe(true); + expect(res).toEqual(res.slice().sort((a, b) => a - b)); + expect(Math.max(...res) - Math.min(...res)).toBeLessThanOrEqual(1); +}); + +// πŸ”Ή Π”ΠΎΠ΄Π°Ρ‚ΠΊΠΎΠ²Ρ– ΠΏΡ€ΠΈΠΊΠ»Π°Π΄ΠΈ Π· опису завдання +test('should split 6 into 2 equal parts', () => { + const res = splitInteger(6, 2); + + expect(res).toEqual([3, 3]); + expect(res).toHaveLength(2); + expect(res.reduce((a, b) => a + b, 0)).toBe(6); + expect(res.every(Number.isInteger)).toBe(true); + expect(res).toEqual(res.slice().sort((a, b) => a - b)); + expect(Math.max(...res) - Math.min(...res)).toBeLessThanOrEqual(1); +}); + +test('should split 17 into 4 nearly equal parts', () => { + const res = splitInteger(17, 4); + + expect(res).toEqual([4, 4, 4, 5]); + expect(res).toHaveLength(4); + expect(res.reduce((a, b) => a + b, 0)).toBe(17); + expect(res.every(Number.isInteger)).toBe(true); + expect(res).toEqual(res.slice().sort((a, b) => a - b)); + expect(Math.max(...res) - Math.min(...res)).toBeLessThanOrEqual(1); +}); + +test('should split 32 into 6 nearly equal parts', () => { + const res = splitInteger(32, 6); + + expect(res).toEqual([5, 5, 5, 5, 6, 6]); + expect(res).toHaveLength(6); + expect(res.reduce((a, b) => a + b, 0)).toBe(32); + expect(res.every(Number.isInteger)).toBe(true); + expect(res).toEqual(res.slice().sort((a, b) => a - b)); + expect(Math.max(...res) - Math.min(...res)).toBeLessThanOrEqual(1); +}); + +test('should split when value equals numberOfParts', () => { + const res = splitInteger(5, 5); + + expect(res).toEqual([1, 1, 1, 1, 1]); + expect(res).toHaveLength(5); + expect(res.reduce((a, b) => a + b, 0)).toBe(5); + expect(res.every(Number.isInteger)).toBe(true); + expect(res).toEqual(res.slice().sort((a, b) => a - b)); + expect(Math.max(...res) - Math.min(...res)).toBeLessThanOrEqual(1); }); From 004325c18a3d8e9a23ecfd18dc9acc98d439bfff Mon Sep 17 00:00:00 2001 From: JulyaPetrovskaya <119932772+JulyaPetrovskaya@users.noreply.github.com> Date: Fri, 26 Sep 2025 21:50:10 +0300 Subject: [PATCH 2/2] fin --- package-lock.json | 3 ++- package.json | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 79127efc..f6abf20a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "eslint": "^5.16.0", "eslint-plugin-jest": "^22.4.1", "eslint-plugin-node": "^8.0.1", - "jest": "^24.5.0" + "jest": "^24.9.0" } }, "node_modules/@babel/code-frame": { @@ -3567,6 +3567,7 @@ "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==", "dev": true, + "license": "MIT", "dependencies": { "import-local": "^2.0.0", "jest-cli": "^24.9.0" diff --git a/package.json b/package.json index f782ac5a..d711c50d 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "test:only": "mate-scripts test", "update": "mate-scripts update", "postinstall": "npm run update", - "test": "npm run lint && npm run test:only" + "test": "jest" }, "author": "Mate academy", "license": "GPL-3.0", @@ -19,7 +19,7 @@ "eslint": "^5.16.0", "eslint-plugin-jest": "^22.4.1", "eslint-plugin-node": "^8.0.1", - "jest": "^24.5.0" + "jest": "^24.9.0" }, "mateAcademy": { "projectType": "javascript"