From 7ed425103731ee1d2499b4d518815efcbbd23562 Mon Sep 17 00:00:00 2001 From: Aklilu Mihtsun Date: Sun, 11 Oct 2026 19:08:01 +0100 Subject: [PATCH 01/19] added different tests for different cases --- .../1-get-angle-type.test.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/implement-and-rewrite-tests/implement-tests-with-node-test/1-get-angle-type.test.js b/implement-and-rewrite-tests/implement-tests-with-node-test/1-get-angle-type.test.js index cf50f6cad..120f89060 100644 --- a/implement-and-rewrite-tests/implement-tests-with-node-test/1-get-angle-type.test.js +++ b/implement-and-rewrite-tests/implement-tests-with-node-test/1-get-angle-type.test.js @@ -10,3 +10,19 @@ test("Classifies right angles", () => { const right = getAngleType(90); assert.equal(right, "Right angle"); }); +test("Classifies acute angles", () => + assert.equal(getAngleType(89), "Acute angle")); +test("Classifies obtuse angle", () => + assert.equal(getAngleType(130), "Obtuse angle")); +test("Classifies straight angle", () => + assert.equal(getAngleType(180), "Straight angle")); +test("Classifies reflex angle", () => + assert.equal(getAngleType(240), "Reflex angle")); +test("Classifies zero angle", () => + assert.equal(getAngleType(0), "Zero angle")); +test("Classifies full angle", () => + assert.equal(getAngleType(360), "Full angle")); +test("Classifies invalid angle range", () => + assert.equal(getAngleType(-120), "Invalid angle")); +test("Classifies invalid angle range", () => + assert.equal(getAngleType(450), "Invalid angle")); From f4bec971d2249149032364c9a7a3ab9aeab345b4 Mon Sep 17 00:00:00 2001 From: Aklilu Mihtsun Date: Sun, 11 Oct 2026 19:09:25 +0100 Subject: [PATCH 02/19] added test cases for different angle type --- .../implement/1-get-angle-type.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/implement-and-rewrite-tests/implement/1-get-angle-type.js b/implement-and-rewrite-tests/implement/1-get-angle-type.js index 8a6fba050..dc595d48c 100644 --- a/implement-and-rewrite-tests/implement/1-get-angle-type.js +++ b/implement-and-rewrite-tests/implement/1-get-angle-type.js @@ -18,4 +18,22 @@ export function getAngleType(angle) { // TODO: Implement this function + switch (true) { + case angle === 90: + return "Right angle"; + case angle > 0 && angle < 90: + return "Acute angle"; + case angle > 90 && angle < 180: + return "Obtuse angle"; + case angle === 180: + return "Straight angle"; + case angle > 180 && angle < 360: + return "Reflex angle"; + case angle === 0: + return "Zero angle"; + case angle === 360: + return "Full angle"; + default: + return "Invalid angle"; + } } From fb120bc8114470643295d7312c37b3fc375b1a75 Mon Sep 17 00:00:00 2001 From: Aklilu Mihtsun Date: Mon, 12 Oct 2026 11:54:04 +0100 Subject: [PATCH 03/19] added different tests for different cases --- .../2-is-proper-fraction.test.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/implement-and-rewrite-tests/implement-tests-with-node-test/2-is-proper-fraction.test.js b/implement-and-rewrite-tests/implement-tests-with-node-test/2-is-proper-fraction.test.js index a29084605..f7fbe9add 100644 --- a/implement-and-rewrite-tests/implement-tests-with-node-test/2-is-proper-fraction.test.js +++ b/implement-and-rewrite-tests/implement-tests-with-node-test/2-is-proper-fraction.test.js @@ -8,5 +8,14 @@ import { isProperFraction } from "../implement/2-is-proper-fraction.js"; test("Basic proper fraction", () => { // Example: 1/2 is a proper fraction - assert.equal(isProperFraction(1, 2), true); + assert.equal(isProperFraction(1, -2), true); +}); +test("Basic improper fraction", () => { + assert.equal(isProperFraction(5, 3), false); +}); +test("When numerator and denominator are equal", function () { + assert.equal(isProperFraction(7, 7), false); +}); +test("when denominator is zero", () => { + assert.equal(isProperFraction(5, 0), NaN); }); From ee6343655b77ff07c087f320b97c43c0e5081c25 Mon Sep 17 00:00:00 2001 From: Aklilu Mihtsun Date: Mon, 12 Oct 2026 11:55:26 +0100 Subject: [PATCH 04/19] added different cases for the function --- .../implement/2-is-proper-fraction.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/implement-and-rewrite-tests/implement/2-is-proper-fraction.js b/implement-and-rewrite-tests/implement/2-is-proper-fraction.js index f983800f0..6f74de0f6 100644 --- a/implement-and-rewrite-tests/implement/2-is-proper-fraction.js +++ b/implement-and-rewrite-tests/implement/2-is-proper-fraction.js @@ -15,4 +15,12 @@ export function isProperFraction(numerator, denominator) { // TODO: Implement this function + switch (true) { + case denominator === 0: + return NaN; + case Math.abs(numerator) < Math.abs(denominator): + return true; + case Math.abs(numerator) >= Math.abs(denominator): + return false; + } } From c74d09571974012baee3d0da34a2bf3bfd09a271 Mon Sep 17 00:00:00 2001 From: Aklilu Mihtsun Date: Mon, 12 Oct 2026 13:30:58 +0100 Subject: [PATCH 05/19] added different test for different cases --- .../3-get-card-value.test.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/implement-and-rewrite-tests/implement-tests-with-node-test/3-get-card-value.test.js b/implement-and-rewrite-tests/implement-tests-with-node-test/3-get-card-value.test.js index f5092d9b1..1634c83e0 100644 --- a/implement-and-rewrite-tests/implement-tests-with-node-test/3-get-card-value.test.js +++ b/implement-and-rewrite-tests/implement-tests-with-node-test/3-get-card-value.test.js @@ -10,7 +10,17 @@ test("Valid single-digit card", () => { }); test("Arbitrary non-card string", () => { - assert.throws(() => getCardValue("invalid"), /Expected a number followed by a suit, but got "invalid"/, "Expected clear error"); + assert.throws( + () => getCardValue("H♠"), + /Expected a number followed by a suit, but got "invalid"/, + "Expected clear error" + ); +}); +test("Valid face card", function () { + assert.equal(getCardValue("J♣"), 10); +}); +test("Valid ace card", function () { + assert.equal(getCardValue("A♠"), 11); }); // TODO: What other invalid card cases can you think of? From 9f8645646ebd05d8c274b8a6d4ef17d19a39a520 Mon Sep 17 00:00:00 2001 From: Aklilu Mihtsun Date: Mon, 12 Oct 2026 13:32:30 +0100 Subject: [PATCH 06/19] added different cases for the function 3-get-card-values.js --- .../implement/3-get-card-value.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/implement-and-rewrite-tests/implement/3-get-card-value.js b/implement-and-rewrite-tests/implement/3-get-card-value.js index 9614ab1ee..f88a47b5f 100644 --- a/implement-and-rewrite-tests/implement/3-get-card-value.js +++ b/implement-and-rewrite-tests/implement/3-get-card-value.js @@ -25,4 +25,16 @@ export function getCardValue(card) { // TODO: Implement this function + const format = /^([AJQK]|[2-9]|10)[♠♥♦♣]$/; + if (typeof card === "string" && format.test(card)) { + switch (true) { + case parseInt(card) >= 2 && parseInt(card) <= 10: + return parseInt(card); + case card[0] === "K" || card[0] === "Q" || card[0] === "J": + return 10; + case card[0] === "A": + return 11; + } + } + throw new Error('Expected a number followed by a suit, but got "invalid"'); } From 732ade35c59660f8bf79fe75e76a5294b49d310f Mon Sep 17 00:00:00 2001 From: Aklilu Mihtsun Date: Mon, 12 Oct 2026 17:13:30 +0100 Subject: [PATCH 07/19] changing the key dependencies to Devdependencies then npm install to reflect change --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 6ae16268c..578d4385c 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "keywords": [], "author": "Code Your Future", "license": "ISC", - "dependencies": { + "devDependencies": { "jest": "^29.7.0" } -} \ No newline at end of file +} From 2101a9283338f55238b025fd4c91850cb015c11f Mon Sep 17 00:00:00 2001 From: Aklilu Mihtsun Date: Mon, 12 Oct 2026 19:17:30 +0100 Subject: [PATCH 08/19] added jest tests to the function getAngleType --- .../1-get-angle-type.test.js | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js b/implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js index e0ba786ab..db883af1c 100644 --- a/implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js +++ b/implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js @@ -12,7 +12,35 @@ test(`should return "Acute angle" when (0 < angle < 90)`, () => { }); // Case 2: Right angle +test(`should return "Right angle" when (angle === 90)`, () => { + expect(getAngleType(90)).toEqual("Right angle"); +}); // Case 3: Obtuse angles +test(`should return "Obtuse angle" when (90 < angle < 180)`, () => { + expect(getAngleType(91)).toEqual("Obtuse angle"); + expect(getAngleType(120)).toEqual("Obtuse angle"); + expect(getAngleType(179)).toEqual("Obtuse angle"); +}); // Case 4: Straight angle +test(`should return "Straight angle" when (angle === 180)`, () => { + expect(getAngleType(180)).toEqual("Straight angle"); +}); // Case 5: Reflex angles -// Case 6: Invalid angles +test(`should return "Reflex angle" when (180 < angle < 360)`, () => { + expect(getAngleType(181)).toEqual("Reflex angle"); + expect(getAngleType(260)).toEqual("Reflex angle"); + expect(getAngleType(359)).toEqual("Reflex angle"); +}); +//Case 6: Full angle +test(`should return "Full angle" when (angle === 360)`, () => { + expect(getAngleType(360)).toEqual("Full angle"); +}); +// Case 7: Zero angle +test(`should return "Zero angle" when (angle === 0)`, () => { + expect(getAngleType(0)).toEqual("Zero angle"); +}); +// Case 8: Invalid angles +test(`should return "Invalid angle" when (angle < 0 or angle > 360)`, () => { + expect(getAngleType(400)).toEqual("Invalid angle"); + expect(getAngleType(-12)).toEqual("Invalid angle"); +}); From aa359e0ad03eaecf5c848054b7ffd6ce4261ca63 Mon Sep 17 00:00:00 2001 From: Aklilu Mihtsun Date: Mon, 12 Oct 2026 23:35:25 +0100 Subject: [PATCH 09/19] =?UTF-8?q?=C3=A4dded=20diffrent=20jest=20tests=20to?= =?UTF-8?q?=20the=20function=20isProperFraction?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rewrite-tests-with-jest/2-is-proper-fraction.test.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js b/implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js index 5d49e2d8b..1ac65f4de 100644 --- a/implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js +++ b/implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js @@ -4,5 +4,12 @@ import { isProperFraction } from "../implement/2-is-proper-fraction.js"; // Special case: numerator is zero test(`should return false when denominator is zero`, () => { - expect(isProperFraction(1, 0)).toEqual(false); + expect(isProperFraction(1, 0)).toEqual(NaN); +}); +test(`should return false when (nominator >= denominator)`, () => { + expect(isProperFraction(4, 1)).toEqual(false); + expect(isProperFraction(3, 3)).toEqual(false); +}); +test(`should return true when (nominator < denominator)`, () => { + expect(isProperFraction(3, 5)).toEqual(true); }); From 3ccf18d607340a46d1775750f6e971c569aabfd7 Mon Sep 17 00:00:00 2001 From: Aklilu Mihtsun Date: Tue, 13 Oct 2026 00:10:00 +0100 Subject: [PATCH 10/19] added different jest test to the function getCardVlue --- .../3-get-card-value.test.js | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/implement-and-rewrite-tests/rewrite-tests-with-jest/3-get-card-value.test.js b/implement-and-rewrite-tests/rewrite-tests-with-jest/3-get-card-value.test.js index a6de5a82a..ebaad1365 100644 --- a/implement-and-rewrite-tests/rewrite-tests-with-jest/3-get-card-value.test.js +++ b/implement-and-rewrite-tests/rewrite-tests-with-jest/3-get-card-value.test.js @@ -6,6 +6,26 @@ import { getCardValue } from "../implement/3-get-card-value.js"; test(`Should return 11 when given an ace card`, () => { expect(getCardValue("A♠")).toEqual(11); }); +// Case 2: number cards (2-10) +test(`Should return the digit when given number card`, () => { + expect(getCardValue("10♠")).toEqual(10); + expect(getCardValue("6♠")).toEqual(6); + expect(getCardValue("2♠")).toEqual(2); +}); +// Case 3: face cards +test(`Should return 10 when given face card`, () => { + expect(getCardValue("J♣")).toEqual(10); + expect(getCardValue("Q♠")).toEqual(10); + expect(getCardValue("K♦")).toEqual(10); +}); +// Case 4: invalid cards +test(`Should return invalid when given invalid card`, () => { + expect(() => { + getCardValue("L♣").toThrow("invalid"); + getCardValue("A*").toThrow("invalid"); + getCardValue("12♣").toThrow("invalid"); + }); +}); // Suggestion: Group the remaining test data into these categories: // Number Cards (2-10) @@ -15,4 +35,3 @@ test(`Should return 11 when given an ace card`, () => { // To learn how to test whether a function throws an error as expected in Jest, // please refer to the Jest documentation: // https://jestjs.io/docs/expect#tothrowerror - From ed84cfc0c35610d388f15925a6726cb166b231cf Mon Sep 17 00:00:00 2001 From: Aklilu Mihtsun Date: Tue, 13 Oct 2026 00:38:57 +0100 Subject: [PATCH 11/19] updating the dependencies from devdependencies --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 578d4385c..c9d10e313 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "keywords": [], "author": "Code Your Future", "license": "ISC", - "devDependencies": { + "dependencies": { "jest": "^29.7.0" } } From 4a1dee63e8edf9c88cf3686a2cad1705c7eb5b9e Mon Sep 17 00:00:00 2001 From: Aklilu Mihtsun Date: Tue, 13 Oct 2026 00:42:19 +0100 Subject: [PATCH 12/19] Remove unrelated package.json changes --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c9d10e313..6ae16268c 100644 --- a/package.json +++ b/package.json @@ -13,4 +13,4 @@ "dependencies": { "jest": "^29.7.0" } -} +} \ No newline at end of file From 6aad8034218943baf8b1be412002d89c8b608476 Mon Sep 17 00:00:00 2001 From: Aklilu Mihtsun Date: Mon, 19 Oct 2026 13:01:54 +0100 Subject: [PATCH 13/19] Refactor getAngleType function to improve angle classification logic and remove unused switch statement --- .../1-get-angle-type.test.js | 15 +++++++-------- .../implement/1-get-angle-type.js | 18 ++++++++++++++++-- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/implement-and-rewrite-tests/implement-tests-with-node-test/1-get-angle-type.test.js b/implement-and-rewrite-tests/implement-tests-with-node-test/1-get-angle-type.test.js index 120f89060..346cd4b7b 100644 --- a/implement-and-rewrite-tests/implement-tests-with-node-test/1-get-angle-type.test.js +++ b/implement-and-rewrite-tests/implement-tests-with-node-test/1-get-angle-type.test.js @@ -18,11 +18,10 @@ test("Classifies straight angle", () => assert.equal(getAngleType(180), "Straight angle")); test("Classifies reflex angle", () => assert.equal(getAngleType(240), "Reflex angle")); -test("Classifies zero angle", () => - assert.equal(getAngleType(0), "Zero angle")); -test("Classifies full angle", () => - assert.equal(getAngleType(360), "Full angle")); -test("Classifies invalid angle range", () => - assert.equal(getAngleType(-120), "Invalid angle")); -test("Classifies invalid angle range", () => - assert.equal(getAngleType(450), "Invalid angle")); +test( + "Classifies invalid angle range", + () => assert.equal(getAngleType(450), "Invalid angle"), + assert.equal(getAngleType(0), "Invalid angle"), + assert.equal(getAngleType(360), "Invalid angle"), + assert.equal(getAngleType(-120), "Invalid angle") +); diff --git a/implement-and-rewrite-tests/implement/1-get-angle-type.js b/implement-and-rewrite-tests/implement/1-get-angle-type.js index dc595d48c..bb64c4650 100644 --- a/implement-and-rewrite-tests/implement/1-get-angle-type.js +++ b/implement-and-rewrite-tests/implement/1-get-angle-type.js @@ -18,7 +18,21 @@ export function getAngleType(angle) { // TODO: Implement this function - switch (true) { + if (angle === 90) { + return "Right angle"; + } else if (angle > 0 && angle < 90) { + return "Acute angle"; + } else if (angle > 90 && angle < 180) { + return "Obtuse angle"; + } else if (angle === 180) { + return "Straight angle"; + } else if (angle > 180 && angle < 360) { + return "Reflex angle"; + } else { + return "Invalid angle"; + } + + /*switch (true) { case angle === 90: return "Right angle"; case angle > 0 && angle < 90: @@ -35,5 +49,5 @@ export function getAngleType(angle) { return "Full angle"; default: return "Invalid angle"; - } + }*/ } From 6e842af87e23dd8ec6ca564e73c41d4a7f5d251e Mon Sep 17 00:00:00 2001 From: Aklilu Mihtsun Date: Mon, 19 Oct 2026 13:08:18 +0100 Subject: [PATCH 14/19] Remove redundant angle tests and update invalid angle test cases for clarity --- .../1-get-angle-type.test.js | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js b/implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js index db883af1c..250f07d87 100644 --- a/implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js +++ b/implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js @@ -31,16 +31,11 @@ test(`should return "Reflex angle" when (180 < angle < 360)`, () => { expect(getAngleType(260)).toEqual("Reflex angle"); expect(getAngleType(359)).toEqual("Reflex angle"); }); -//Case 6: Full angle -test(`should return "Full angle" when (angle === 360)`, () => { - expect(getAngleType(360)).toEqual("Full angle"); -}); -// Case 7: Zero angle -test(`should return "Zero angle" when (angle === 0)`, () => { - expect(getAngleType(0)).toEqual("Zero angle"); -}); + // Case 8: Invalid angles -test(`should return "Invalid angle" when (angle < 0 or angle > 360)`, () => { +test(`should return "Invalid angle" when (angle <= 0 or angle >= 360)`, () => { expect(getAngleType(400)).toEqual("Invalid angle"); expect(getAngleType(-12)).toEqual("Invalid angle"); + expect(getAngleType(0)).toEqual("Invalid angle"); + expect(getAngleType(360)).toEqual("Invalid angle"); }); From bd3754894c690cff5d3db4c2ed5dedd83632bc31 Mon Sep 17 00:00:00 2001 From: Aklilu Mihtsun Date: Mon, 19 Oct 2026 13:27:20 +0100 Subject: [PATCH 15/19] Refactor invalid angle range test for improved readability and structure --- .../1-get-angle-type.test.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/implement-and-rewrite-tests/implement-tests-with-node-test/1-get-angle-type.test.js b/implement-and-rewrite-tests/implement-tests-with-node-test/1-get-angle-type.test.js index 346cd4b7b..e850a3572 100644 --- a/implement-and-rewrite-tests/implement-tests-with-node-test/1-get-angle-type.test.js +++ b/implement-and-rewrite-tests/implement-tests-with-node-test/1-get-angle-type.test.js @@ -18,10 +18,9 @@ test("Classifies straight angle", () => assert.equal(getAngleType(180), "Straight angle")); test("Classifies reflex angle", () => assert.equal(getAngleType(240), "Reflex angle")); -test( - "Classifies invalid angle range", - () => assert.equal(getAngleType(450), "Invalid angle"), - assert.equal(getAngleType(0), "Invalid angle"), - assert.equal(getAngleType(360), "Invalid angle"), - assert.equal(getAngleType(-120), "Invalid angle") -); +test("Classifies invalid angle range", () => { + assert.equal(getAngleType(450), "Invalid angle"); + assert.equal(getAngleType(0), "Invalid angle"); + assert.equal(getAngleType(360), "Invalid angle"); + assert.equal(getAngleType(-120), "Invalid angle"); +}); From 9a9b6159fe4bc69ab7766dbde601c1da6f2cb05d Mon Sep 17 00:00:00 2001 From: Aklilu Mihtsun Date: Mon, 19 Oct 2026 13:49:43 +0100 Subject: [PATCH 16/19] Refactor isProperFraction function and update tests for improved accuracy and clarity --- .../2-is-proper-fraction.test.js | 7 ++++++- .../implement/2-is-proper-fraction.js | 9 +++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/implement-and-rewrite-tests/implement-tests-with-node-test/2-is-proper-fraction.test.js b/implement-and-rewrite-tests/implement-tests-with-node-test/2-is-proper-fraction.test.js index f7fbe9add..f9782a642 100644 --- a/implement-and-rewrite-tests/implement-tests-with-node-test/2-is-proper-fraction.test.js +++ b/implement-and-rewrite-tests/implement-tests-with-node-test/2-is-proper-fraction.test.js @@ -9,13 +9,18 @@ import { isProperFraction } from "../implement/2-is-proper-fraction.js"; test("Basic proper fraction", () => { // Example: 1/2 is a proper fraction assert.equal(isProperFraction(1, -2), true); + assert.equal(isProperFraction(-3, 5), true); + assert.equal(isProperFraction(0.5, 0.7), true); }); test("Basic improper fraction", () => { assert.equal(isProperFraction(5, 3), false); + assert.equal(isProperFraction(7, -3), false); + assert.equal(isProperFraction(-8, 6), false); }); test("When numerator and denominator are equal", function () { assert.equal(isProperFraction(7, 7), false); + assert.equal(isProperFraction(-2, -2), false); }); test("when denominator is zero", () => { - assert.equal(isProperFraction(5, 0), NaN); + assert.equal(isProperFraction(5, 0), "Invalid"); }); diff --git a/implement-and-rewrite-tests/implement/2-is-proper-fraction.js b/implement-and-rewrite-tests/implement/2-is-proper-fraction.js index 6f74de0f6..3840074eb 100644 --- a/implement-and-rewrite-tests/implement/2-is-proper-fraction.js +++ b/implement-and-rewrite-tests/implement/2-is-proper-fraction.js @@ -15,12 +15,17 @@ export function isProperFraction(numerator, denominator) { // TODO: Implement this function - switch (true) { + if (denominator === 0) { + return "Invalid"; + } else if (Math.abs(numerator) < Math.abs(denominator)) { + return true; + } else return false; + /*switch (true) { case denominator === 0: return NaN; case Math.abs(numerator) < Math.abs(denominator): return true; case Math.abs(numerator) >= Math.abs(denominator): return false; - } + }*/ } From 2a67c70ed737e06606678c695651e09b6f2fd0ce Mon Sep 17 00:00:00 2001 From: Aklilu Mihtsun Date: Mon, 19 Oct 2026 13:57:21 +0100 Subject: [PATCH 17/19] Update tests for isProperFraction to handle zero denominator and improve coverage --- .../rewrite-tests-with-jest/2-is-proper-fraction.test.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js b/implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js index 1ac65f4de..ef456a7ec 100644 --- a/implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js +++ b/implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js @@ -3,13 +3,17 @@ import { isProperFraction } from "../implement/2-is-proper-fraction.js"; // TODO: Write tests in Jest syntax to cover all combinations of positives, negatives, zeros, and other categories. // Special case: numerator is zero -test(`should return false when denominator is zero`, () => { - expect(isProperFraction(1, 0)).toEqual(NaN); +test(`should return Invalid when denominator is zero`, () => { + expect(isProperFraction(1, 0)).toEqual("Invalid"); }); test(`should return false when (nominator >= denominator)`, () => { expect(isProperFraction(4, 1)).toEqual(false); expect(isProperFraction(3, 3)).toEqual(false); + expect(isProperFraction(2, -1)).toEqual(false); + expect(isProperFraction(-4, 1)).toEqual(false); }); test(`should return true when (nominator < denominator)`, () => { expect(isProperFraction(3, 5)).toEqual(true); + expect(isProperFraction(3, -5)).toEqual(true); + expect(isProperFraction(-2, 7)).toEqual(true); }); From 89896e6cd1f22f7fc36bb0b9cc5ce5265c314e0b Mon Sep 17 00:00:00 2001 From: Aklilu Mihtsun Date: Mon, 19 Oct 2026 14:12:33 +0100 Subject: [PATCH 18/19] Refactor getCardValue function logic and enhance invalid card tests for better error handling --- .../implement/3-get-card-value.js | 11 +++++++++-- .../rewrite-tests-with-jest/3-get-card-value.test.js | 4 ++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/implement-and-rewrite-tests/implement/3-get-card-value.js b/implement-and-rewrite-tests/implement/3-get-card-value.js index f88a47b5f..ec5e2935d 100644 --- a/implement-and-rewrite-tests/implement/3-get-card-value.js +++ b/implement-and-rewrite-tests/implement/3-get-card-value.js @@ -27,14 +27,21 @@ export function getCardValue(card) { // TODO: Implement this function const format = /^([AJQK]|[2-9]|10)[♠♥♦♣]$/; if (typeof card === "string" && format.test(card)) { - switch (true) { + if (parseInt(card) >= 2 && parseInt(card) <= 10) { + return parseInt(card); + } else if (card[0] === "K" || card[0] === "Q" || card[0] === "J") { + return 10; + } else if (card[0] === "A") { + return 11; + } + /* switch (true) { case parseInt(card) >= 2 && parseInt(card) <= 10: return parseInt(card); case card[0] === "K" || card[0] === "Q" || card[0] === "J": return 10; case card[0] === "A": return 11; - } + }*/ } throw new Error('Expected a number followed by a suit, but got "invalid"'); } diff --git a/implement-and-rewrite-tests/rewrite-tests-with-jest/3-get-card-value.test.js b/implement-and-rewrite-tests/rewrite-tests-with-jest/3-get-card-value.test.js index ebaad1365..a7eedeae1 100644 --- a/implement-and-rewrite-tests/rewrite-tests-with-jest/3-get-card-value.test.js +++ b/implement-and-rewrite-tests/rewrite-tests-with-jest/3-get-card-value.test.js @@ -22,7 +22,11 @@ test(`Should return 10 when given face card`, () => { test(`Should return invalid when given invalid card`, () => { expect(() => { getCardValue("L♣").toThrow("invalid"); + }); + expect(() => { getCardValue("A*").toThrow("invalid"); + }); + expect(() => { getCardValue("12♣").toThrow("invalid"); }); }); From ed1d4a6b2724310961c3acdff374a863a8103b9f Mon Sep 17 00:00:00 2001 From: Aklilu Mihtsun Date: Mon, 19 Oct 2026 14:15:35 +0100 Subject: [PATCH 19/19] Simplify error message in getCardValue function for invalid card input --- implement-and-rewrite-tests/implement/3-get-card-value.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/implement-and-rewrite-tests/implement/3-get-card-value.js b/implement-and-rewrite-tests/implement/3-get-card-value.js index ec5e2935d..967a1ad19 100644 --- a/implement-and-rewrite-tests/implement/3-get-card-value.js +++ b/implement-and-rewrite-tests/implement/3-get-card-value.js @@ -43,5 +43,5 @@ export function getCardValue(card) { return 11; }*/ } - throw new Error('Expected a number followed by a suit, but got "invalid"'); + throw new Error("invalid"); }