From 83be2bcf61dc6a3970b66dfc9a3751687eea5b63 Mon Sep 17 00:00:00 2001 From: Abdennour Hachemi Date: Sun, 18 Oct 2026 21:10:54 +0100 Subject: [PATCH 01/13] solving exercise 1-get-angle-type.js --- .../1-get-angle-type.test.js | 52 +++++++++++++++++++ .../implement/1-get-angle-type.js | 20 ++++++- package.json | 6 +-- 3 files changed, 74 insertions(+), 4 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 cf50f6cad..35c024b26 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,55 @@ test("Classifies right angles", () => { const right = getAngleType(90); assert.equal(right, "Right angle"); }); + + +test("Classifies acute angles", () => { + const acute = getAngleType(60); + assert.equal(acute, "Acute angle"); +}); + +test("Classifies obtuse angles", () => { + const obtuse = getAngleType(120); + assert.equal(obtuse, "Obtuse angle"); +}); + + +test("Classifies straight angles", () => { + const straight = getAngleType(180); + assert.equal(straight, "Straight angle"); +}); + + +test("Classifies reflex angles", () => { + const reflex = getAngleType(350); + assert.equal(reflex, "Reflex angle"); +}); + +test("Classifies invalid angles", () => { + const invalid = getAngleType(370); + assert.equal(invalid, "Invalid angle"); +}); + + +/* +export function getAngleType(angle) { + if (angle < 90) { + return "Acute angle"; + } + if (angle == 90) { + return "Right angle"; + } + if (angle < 180) { + return "Obtuse angle"; + } + if (angle == 180) { + return "Straight angle"; + } + if (angle < 360) { + return "Reflex angle"; + } + return "Invalid angle"; + + +} +*/ \ No newline at end of file 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..24cc3f859 100644 --- a/implement-and-rewrite-tests/implement/1-get-angle-type.js +++ b/implement-and-rewrite-tests/implement/1-get-angle-type.js @@ -1,4 +1,5 @@ // Implement a function getAngleType + // // Don't forget to write tests in implement-tests-with-node-test. // @@ -17,5 +18,22 @@ // execute the code to ensure all tests pass. export function getAngleType(angle) { - // TODO: Implement this function + if (angle < 90) { + return "Acute angle"; + } + if (angle == 90) { + return "Right angle"; + } + if (angle < 180) { + return "Obtuse angle"; + } + if (angle == 180) { + return "Straight angle"; + } + if (angle < 360) { + return "Reflex angle"; + } + return "Invalid angle"; + + } diff --git a/package.json b/package.json index 6ae16268c..1ddf89543 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "keywords": [], "author": "Code Your Future", "license": "ISC", - "dependencies": { - "jest": "^29.7.0" + "devDependencies": { + "jest": "^30.5.2" } -} \ No newline at end of file +} From 5b0e16631896db5d41503b47c516d89424c6d3e1 Mon Sep 17 00:00:00 2001 From: Abdennour Hachemi Date: Sun, 18 Oct 2026 22:06:04 +0100 Subject: [PATCH 02/13] solve exercise 1 and 2 --- .../1-get-angle-type.test.js | 33 ---------------- .../2-is-proper-fraction.test.js | 23 +++++++++++ .../implement/2-is-proper-fraction.js | 13 ++++++- .../1-get-angle-type.test.js | 38 ++++++++++++------- .../2-is-proper-fraction.test.js | 23 +++++++++++ 5 files changed, 83 insertions(+), 47 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 35c024b26..abb38c0aa 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 @@ -3,62 +3,29 @@ import test from "node:test"; import { getAngleType } from "../implement/1-get-angle-type.js"; -// TODO: Write tests to cover all cases, including boundary and invalid cases. -// Example: Identify Right Angles test("Classifies right angles", () => { const right = getAngleType(90); assert.equal(right, "Right angle"); }); - - test("Classifies acute angles", () => { const acute = getAngleType(60); assert.equal(acute, "Acute angle"); }); - test("Classifies obtuse angles", () => { const obtuse = getAngleType(120); assert.equal(obtuse, "Obtuse angle"); }); - - test("Classifies straight angles", () => { const straight = getAngleType(180); assert.equal(straight, "Straight angle"); }); - - test("Classifies reflex angles", () => { const reflex = getAngleType(350); assert.equal(reflex, "Reflex angle"); }); - test("Classifies invalid angles", () => { const invalid = getAngleType(370); assert.equal(invalid, "Invalid angle"); }); - -/* -export function getAngleType(angle) { - if (angle < 90) { - return "Acute angle"; - } - if (angle == 90) { - return "Right angle"; - } - if (angle < 180) { - return "Obtuse angle"; - } - if (angle == 180) { - return "Straight angle"; - } - if (angle < 360) { - return "Reflex angle"; - } - return "Invalid angle"; - - -} -*/ \ No newline at end of file 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..88fd7a692 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 @@ -10,3 +10,26 @@ test("Basic proper fraction", () => { // Example: 1/2 is a proper fraction assert.equal(isProperFraction(1, 2), true); }); + +test("decimal numerator should return flase", () => { + + assert.equal(isProperFraction(0.5, 2), false); +}); + + +test("zero numerator", () => { + assert.equal(isProperFraction(0, 5), true); +}); + +test("numerator bigger then denumnator", () => { + assert.equal(isProperFraction(20, 15), false); +}); +test("zero denumator", () => { + assert.equal(isProperFraction(100, 0), false); +}); + +test("equal numrator and denumerator ", () => { + assert.equal(isProperFraction(3, 3), false); +}); + + 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..1b72ec62e 100644 --- a/implement-and-rewrite-tests/implement/2-is-proper-fraction.js +++ b/implement-and-rewrite-tests/implement/2-is-proper-fraction.js @@ -14,5 +14,16 @@ // execute the code to ensure all tests pass. export function isProperFraction(numerator, denominator) { - // TODO: Implement this function + if (Number.isNaN(numerator) || Number.isNaN(denominator)|| denominator===0) { + return false; + } + if (!Number.isInteger(numerator) || !Number.isInteger(denominator)) { + return false; + } + if (numerator >= denominator ) { + return false; + } + return true; + + } 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..3b6e5d112 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 @@ -1,18 +1,30 @@ import { getAngleType } from "../implement/1-get-angle-type.js"; -// TODO: Write tests in Jest syntax to cover all cases/outcomes, -// including boundary and invalid cases. -// Case 1: Acute angles -test(`should return "Acute angle" when (0 < angle < 90)`, () => { - // Test various acute angles, including boundary cases - expect(getAngleType(1)).toEqual("Acute angle"); - expect(getAngleType(45)).toEqual("Acute angle"); - expect(getAngleType(89)).toEqual("Acute angle"); + +test("Classifies right angles", () => { + const right = getAngleType(90); + assert.equal(right, "Right angle"); +}); +test("Classifies acute angles", () => { + const acute = getAngleType(60); + assert.equal(acute, "Acute angle"); +}); +test("Classifies obtuse angles", () => { + const obtuse = getAngleType(120); + assert.equal(obtuse, "Obtuse angle"); +}); +test("Classifies straight angles", () => { + const straight = getAngleType(180); + assert.equal(straight, "Straight angle"); }); +test("Classifies reflex angles", () => { + const reflex = getAngleType(350); + assert.equal(reflex, "Reflex angle"); +}); +test("Classifies invalid angles", () => { + const invalid = getAngleType(370); + assert.equal(invalid, "Invalid angle"); +}); + -// Case 2: Right angle -// Case 3: Obtuse angles -// Case 4: Straight angle -// Case 5: Reflex angles -// Case 6: Invalid angles 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..8c5c178e4 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 @@ -6,3 +6,26 @@ import { isProperFraction } from "../implement/2-is-proper-fraction.js"; test(`should return false when denominator is zero`, () => { expect(isProperFraction(1, 0)).toEqual(false); }); + + +test("decimal numerator should return flase", () => { + + assert.equal(isProperFraction(0.5, 2), false); +}); + + +test("zero numerator", () => { + assert.equal(isProperFraction(0, 5), true); +}); + +test("numerator bigger then denumnator", () => { + assert.equal(isProperFraction(20, 15), false); +}); +test("zero denumator", () => { + assert.equal(isProperFraction(100, 0), false); +}); + +test("equal numrator and denumerator ", () => { + assert.equal(isProperFraction(3, 3), false); +}); + From bb24c34c3265389f53960f30453ac3dc9ebdb554 Mon Sep 17 00:00:00 2001 From: Abdennour Hachemi Date: Sun, 18 Oct 2026 22:51:21 +0100 Subject: [PATCH 03/13] rewriting 1-get-angle-type with jest test cases --- .../1-get-angle-type.test.js | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 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 3b6e5d112..3803bb758 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 @@ -2,29 +2,29 @@ import { getAngleType } from "../implement/1-get-angle-type.js"; + test("Classifies right angles", () => { - const right = getAngleType(90); - assert.equal(right, "Right angle"); + expect(getAngleType(90)).toBe("Right angle"); }); + test("Classifies acute angles", () => { - const acute = getAngleType(60); - assert.equal(acute, "Acute angle"); + expect(getAngleType(60)).toBe("Acute angle"); }); + test("Classifies obtuse angles", () => { - const obtuse = getAngleType(120); - assert.equal(obtuse, "Obtuse angle"); + expect(getAngleType(120)).toBe("Obtuse angle"); }); + test("Classifies straight angles", () => { - const straight = getAngleType(180); - assert.equal(straight, "Straight angle"); + expect(getAngleType(180)).toBe("Straight angle"); }); + test("Classifies reflex angles", () => { - const reflex = getAngleType(350); - assert.equal(reflex, "Reflex angle"); + expect(getAngleType(350)).toBe("Reflex angle"); }); + test("Classifies invalid angles", () => { - const invalid = getAngleType(370); - assert.equal(invalid, "Invalid angle"); + expect(getAngleType(370)).toBe("Invalid angle"); }); From 0cabd7943989108fee0bcf827933721ab8f1d76c Mon Sep 17 00:00:00 2001 From: Abdennour Hachemi Date: Sun, 18 Oct 2026 23:09:46 +0100 Subject: [PATCH 04/13] implement jest test in exercise 2-is-proper-fraction.js --- .../2-is-proper-fraction.test.js | 47 ++++++++++++++----- 1 file changed, 34 insertions(+), 13 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 8c5c178e4..a4a67a7cc 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 @@ -2,30 +2,51 @@ 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(false); +test("should return false when denominator is zero", () => { + expect(isProperFraction(1, 0)).toBe(false); }); +test("decimal numerator should return false", () => { + expect(isProperFraction(0.5, 2)).toBe(false); +}); + +test("zero numerator", () => { + expect(isProperFraction(0, 5)).toBe(true); +}); + +test("numerator bigger than denominator", () => { + expect(isProperFraction(20, 15)).toBe(false); +}); -test("decimal numerator should return flase", () => { - - assert.equal(isProperFraction(0.5, 2), false); +test("zero denominator", () => { + expect(isProperFraction(100, 0)).toBe(false); }); +test("equal numerator and denominator", () => { + expect(isProperFraction(3, 3)).toBe(false); +}); + +test("should return false when denominator is zero", () => { + expect(isProperFraction(1, 0)).toBe(false); +}); + +test("decimal numerator should return false", () => { + expect(isProperFraction(0.5, 2)).toBe(false); +}); test("zero numerator", () => { - assert.equal(isProperFraction(0, 5), true); + expect(isProperFraction(0, 5)).toBe(true); }); -test("numerator bigger then denumnator", () => { - assert.equal(isProperFraction(20, 15), false); +test("numerator bigger than denominator", () => { + expect(isProperFraction(20, 15)).toBe(false); }); -test("zero denumator", () => { - assert.equal(isProperFraction(100, 0), false); + +test("zero denominator should fail", () => { + expect(isProperFraction(100, 0)).toBe(false); }); -test("equal numrator and denumerator ", () => { - assert.equal(isProperFraction(3, 3), false); +test("negative numerator should pass", () => { + expect(isProperFraction(-75, 100)).toBe(true); }); From 911552436e9311b9fa0610cde24bfe82c8054c10 Mon Sep 17 00:00:00 2001 From: Abdennour Hachemi Date: Sun, 18 Oct 2026 23:15:55 +0100 Subject: [PATCH 05/13] solve last exercise --- .../3-get-card-value.test.js | 32 +++++++++++++++++++ .../implement/3-get-card-value.js | 20 ++++++++++-- .../2-is-proper-fraction.test.js | 1 - .../3-get-card-value.test.js | 31 ++++++++++++++++++ 4 files changed, 81 insertions(+), 3 deletions(-) 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..147cfde29 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 @@ -14,3 +14,35 @@ test("Arbitrary non-card string", () => { }); // TODO: What other invalid card cases can you think of? +test("Ace returns 11", () => { + assert.equal(getCardValue("A♠"), 11); +}); + +test("Number card returns its numeric value", () => { + assert.equal(getCardValue("2♥"), 2); + assert.equal(getCardValue("7♦"), 7); + assert.equal(getCardValue("10♣"), 10); +}); + +test("Face cards return 10", () => { + assert.equal(getCardValue("J♣"), 10); + assert.equal(getCardValue("Q♦"), 10); + assert.equal(getCardValue("K♥"), 10); +}); + +test("Invalid rank throws an error", () => { + assert.throws(() => getCardValue("11♠"), Error); + assert.throws(() => getCardValue("X♥"), Error); +}); + +test("Invalid suit throws an error", () => { + assert.throws(() => getCardValue("A★"), Error); +}); + +test("Invalid format throws an error", () => { + assert.throws(() => getCardValue("A"), Error); + assert.throws(() => getCardValue("♠A"), Error); + assert.throws(() => getCardValue(" A♠"), Error); + assert.throws(() => getCardValue("A♠♠"), Error); +}); + 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..f994b1c4d 100644 --- a/implement-and-rewrite-tests/implement/3-get-card-value.js +++ b/implement-and-rewrite-tests/implement/3-get-card-value.js @@ -24,5 +24,21 @@ // execute the code to ensure all tests pass. export function getCardValue(card) { - // TODO: Implement this function -} + const match = /^(A|[2-9]|10|J|Q|K)([♠♥♦♣])$/.exec(card); + + if (!match) { + throw new Error(`Expected a number followed by a suit, but got "${card}"`); + } + + const rank = match[1]; + + if (rank === "A") { + return 11; + } + + if (["J", "Q", "K"].includes(rank)) { + return 10; + } + + return Number(rank); +} \ No newline at end of file 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 a4a67a7cc..ab4189973 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 @@ -5,7 +5,6 @@ import { isProperFraction } from "../implement/2-is-proper-fraction.js"; test("should return false when denominator is zero", () => { expect(isProperFraction(1, 0)).toBe(false); }); - test("decimal numerator should return false", () => { expect(isProperFraction(0.5, 2)).toBe(false); }); 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..db7ff9561 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 @@ -16,3 +16,34 @@ test(`Should return 11 when given an ace card`, () => { // please refer to the Jest documentation: // https://jestjs.io/docs/expect#tothrowerror +test("Number card returns its numeric value", () => { + expect(getCardValue("2♥")).toEqual(2); + expect(getCardValue("7♦")).toEqual(7); + expect(getCardValue("10♣")).toEqual(10); +}); + +test("Face cards return 10", () => { + expect(getCardValue("J♣")).toEqual(10); + expect(getCardValue("Q♦")).toEqual(10); + expect(getCardValue("K♥")).toEqual(10); +}); + +test("Invalid rank throws an error", () => { + expect(() => getCardValue("11♠")).toThrow(Error); + expect(() => getCardValue("X♥")).toThrow(Error); +}); + +test("Invalid suit throws an error", () => { + expect(() => getCardValue("A★")).toThrow(Error); +}); + +test("Invalid format throws an error", () => { + expect(() => getCardValue("A")).toThrow(Error); + expect(() => getCardValue("♠A")).toThrow(Error); + expect(() => getCardValue(" A♠")).toThrow(Error); + expect(() => getCardValue("A♠♠")).toThrow(Error); +}); + +test("Arbitrary non-card string", () => { + expect(() => getCardValue("invalid")).toThrow(); +}); \ No newline at end of file From 7c634be97a6150fb927c89caa2555b03071d5f06 Mon Sep 17 00:00:00 2001 From: AbdennourHachemi Date: Sun, 18 Oct 2026 23:45:34 +0100 Subject: [PATCH 06/13] Update jest version in package.json --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 1ddf89543..c9d10e313 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "keywords": [], "author": "Code Your Future", "license": "ISC", - "devDependencies": { - "jest": "^30.5.2" + "dependencies": { + "jest": "^29.7.0" } } From 98b79a3f01c4dc723e453e3023ee28a34f5ac865 Mon Sep 17 00:00:00 2001 From: AbdennourHachemi Date: Sun, 18 Oct 2026 23:57:34 +0100 Subject: [PATCH 07/13] Update package.json From c438ca536ddd75f4fb6a80c2d7beff3695948ad9 Mon Sep 17 00:00:00 2001 From: Abdennour Hachemi Date: Tue, 20 Oct 2026 22:14:33 +0100 Subject: [PATCH 08/13] Revert "Update jest version in package.json" This reverts commit 7c634be97a6150fb927c89caa2555b03071d5f06. print-3-implement-and-rewrite --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index c9d10e313..1ddf89543 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "keywords": [], "author": "Code Your Future", "license": "ISC", - "dependencies": { - "jest": "^29.7.0" + "devDependencies": { + "jest": "^30.5.2" } } From 23023fd10e666dce7d1f17c5d764ff14ac9e99cc Mon Sep 17 00:00:00 2001 From: AbdennourHachemi Date: Mon, 26 Oct 2026 23:16:49 +0000 Subject: [PATCH 09/13] restore original package.json --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 1ddf89543..c9d10e313 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "keywords": [], "author": "Code Your Future", "license": "ISC", - "devDependencies": { - "jest": "^30.5.2" + "dependencies": { + "jest": "^29.7.0" } } From 3f1f7c215616d3b60c09fb157ca1e2eb9826cf75 Mon Sep 17 00:00:00 2001 From: Abdennour Hachemi Date: Tue, 27 Oct 2026 00:12:31 +0000 Subject: [PATCH 10/13] Revert accidental change to package.json --- 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 d1f12903ddc7752197450ec632d537a2649d1016 Mon Sep 17 00:00:00 2001 From: Abdennour Hachemi Date: Sat, 31 Oct 2026 15:04:54 +0000 Subject: [PATCH 11/13] adding more test cases --- .../1-get-angle-type.test.js | 13 +++++++++++++ .../implement/1-get-angle-type.js | 12 ++++++++++-- 2 files changed, 23 insertions(+), 2 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 abb38c0aa..f1602f24d 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 @@ -28,4 +28,17 @@ test("Classifies invalid angles", () => { const invalid = getAngleType(370); assert.equal(invalid, "Invalid angle"); }); +test("Classifies invalid angles", () => { + const invalid = getAngleType(-10); + assert.equal(invalid, "Invalid angle"); +}); + +test("Classifies Zero angle", () => { + const zero = getAngleType(0); + assert.equal(zero, "Zero angle"); +}); +test("Classifies Complete angle", () => { + const complete = getAngleType(360); + assert.equal(complete, "Complete angle"); +}); \ No newline at end of file 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 24cc3f859..8edca3616 100644 --- a/implement-and-rewrite-tests/implement/1-get-angle-type.js +++ b/implement-and-rewrite-tests/implement/1-get-angle-type.js @@ -18,6 +18,15 @@ // execute the code to ensure all tests pass. export function getAngleType(angle) { + if (angle ==0) { + return "Zero angle"; + } + if (angle == 360) { + return "Complete angle"; + } + if (angle <0||angle >360) { + return "Invalid angle"; + } if (angle < 90) { return "Acute angle"; } @@ -33,7 +42,6 @@ export function getAngleType(angle) { if (angle < 360) { return "Reflex angle"; } - return "Invalid angle"; - + } From f0d59ee93fac78fe5505c7cd93389377d74c7d68 Mon Sep 17 00:00:00 2001 From: Abdennour Hachemi Date: Sat, 31 Oct 2026 15:18:09 +0000 Subject: [PATCH 12/13] adding negative numbers to tests and correcting typos --- .../2-is-proper-fraction.test.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 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 88fd7a692..b5fd71528 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 @@ -17,19 +17,27 @@ test("decimal numerator should return flase", () => { }); -test("zero numerator", () => { +test("zero numerator should retrun true", () => { assert.equal(isProperFraction(0, 5), true); }); -test("numerator bigger then denumnator", () => { +test("numerator bigger then denumnator should return false", () => { assert.equal(isProperFraction(20, 15), false); }); -test("zero denumator", () => { +test("zero denumator should return false", () => { assert.equal(isProperFraction(100, 0), false); }); -test("equal numrator and denumerator ", () => { +test("equal numerator and denumerator should return false", () => { assert.equal(isProperFraction(3, 3), false); }); +test("negative numerator and positive denumerator should return true ", () => { + assert.equal(isProperFraction(-5, 16), true); +}); + +test("positive numerator and negative denumerator should return false", () => { + assert.equal(isProperFraction(5, -16), false); +}); + From 92ada3e632e474f67d2d7e317b3ae65f72145bee Mon Sep 17 00:00:00 2001 From: Abdennour Hachemi Date: Sat, 31 Oct 2026 15:31:41 +0000 Subject: [PATCH 13/13] adding more test cases for missing values and lowercase letters --- .../3-get-card-value.test.js | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) 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 147cfde29..adb34b66b 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,11 @@ 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("invalid"), + /Expected a number followed by a suit, but got "invalid"/, + "Expected clear error" + ); }); // TODO: What other invalid card cases can you think of? @@ -30,19 +34,18 @@ test("Face cards return 10", () => { assert.equal(getCardValue("K♥"), 10); }); -test("Invalid rank throws an error", () => { +test("Invalid format throws an error", () => { + assert.throws(() => getCardValue("A★"), Error); assert.throws(() => getCardValue("11♠"), Error); assert.throws(() => getCardValue("X♥"), Error); -}); - -test("Invalid suit throws an error", () => { - assert.throws(() => getCardValue("A★"), Error); -}); - -test("Invalid format throws an error", () => { assert.throws(() => getCardValue("A"), Error); assert.throws(() => getCardValue("♠A"), Error); assert.throws(() => getCardValue(" A♠"), Error); assert.throws(() => getCardValue("A♠♠"), Error); + assert.throws(() => getCardValue(undefined), Error); + assert.throws(() => getCardValue(null), Error); + assert.throws(() => getCardValue(""), Error); + assert.throws(() => getCardValue("a♠"), Error); + assert.throws(() => getCardValue("k♥"), Error); + assert.throws(() => getCardValue("q♦"), Error); }); -