From 62f2bc90244d2a8f390d0f89b981c0795a6e8081 Mon Sep 17 00:00:00 2001 From: Fayaz Date: Sat, 7 Mar 2026 22:21:36 +0000 Subject: [PATCH 01/20] corrected the branch to individual folders of sprint-3 implement and rewrite tests --- .../implement/1-get-angle-type.js | 35 ++++++++++++++++++- .../implement/2-is-proper-fraction.js | 17 +++++++++ .../implement/3-get-card-value.js | 18 ++++++++++ .../1-get-angle-type.test.js | 27 ++++++++++++++ .../2-is-proper-fraction.test.js | 8 +++++ .../3-get-card-value.test.js | 15 ++++++++ 6 files changed, 119 insertions(+), 1 deletion(-) diff --git a/Sprint-3/1-implement-and-rewrite-tests/implement/1-get-angle-type.js b/Sprint-3/1-implement-and-rewrite-tests/implement/1-get-angle-type.js index 9e05a871e..38b547131 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/implement/1-get-angle-type.js +++ b/Sprint-3/1-implement-and-rewrite-tests/implement/1-get-angle-type.js @@ -15,7 +15,22 @@ // execute the code to ensure all tests pass. function getAngleType(angle) { - // TODO: Implement this function + if (angle > 0 && angle < 90) { + return "Acute angle"; + } + if (angle === 90) { + return "Right angle"; + } + if (angle > 90 && angle < 180) { + return "Obtuse angle"; + } + if (angle === 180) { + return "Straight angle"; + } + if (angle > 180 && angle < 360) { + return "Reflex angle"; + } + return "Invalid angle"; } // The line below allows us to load the getAngleType function into tests in other files. @@ -35,3 +50,21 @@ function assertEquals(actualOutput, targetOutput) { // Example: Identify Right Angles const right = getAngleType(90); assertEquals(right, "Right angle"); + +const acute = getAngleType(45); +assertEquals(acute, "Acute angle"); + +const obtuse = getAngleType(135); +assertEquals(obtuse, "Obtuse angle"); + +const straight = getAngleType(180); +assertEquals(straight, "Straight angle"); + +const reflex = getAngleType(270); +assertEquals(reflex, "Reflex angle"); + +const invalid = getAngleType(-45); +assertEquals(invalid, "Invalid angle"); + +const invalid2 = getAngleType(361); +assertEquals(invalid2, "Invalid angle"); diff --git a/Sprint-3/1-implement-and-rewrite-tests/implement/2-is-proper-fraction.js b/Sprint-3/1-implement-and-rewrite-tests/implement/2-is-proper-fraction.js index 970cb9b64..a81a6a195 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/implement/2-is-proper-fraction.js +++ b/Sprint-3/1-implement-and-rewrite-tests/implement/2-is-proper-fraction.js @@ -12,6 +12,16 @@ function isProperFraction(numerator, denominator) { // TODO: Implement this function + if (denominator === 0) { + return false; + } + if (numerator < 0 && denominator < 0) { + return Math.abs(numerator) < Math.abs(denominator); + } + if (numerator < 0 || denominator < 0) { + return false; + } + return numerator < denominator; } // The line below allows us to load the isProperFraction function into tests in other files. @@ -31,3 +41,10 @@ function assertEquals(actualOutput, targetOutput) { // Example: 1/2 is a proper fraction assertEquals(isProperFraction(1, 2), true); +assertEquals(isProperFraction(2, 1), false); +assertEquals(isProperFraction(0, 1), true); +assertEquals(isProperFraction(-1, 2), false); +assertEquals(isProperFraction(1, -2), false); +assertEquals(isProperFraction(-1, -2), false); +assertEquals(isProperFraction(3, 4), true); +assertEquals(isProperFraction(4, 3), false); \ No newline at end of file diff --git a/Sprint-3/1-implement-and-rewrite-tests/implement/3-get-card-value.js b/Sprint-3/1-implement-and-rewrite-tests/implement/3-get-card-value.js index c7559e787..67d375824 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/implement/3-get-card-value.js +++ b/Sprint-3/1-implement-and-rewrite-tests/implement/3-get-card-value.js @@ -23,6 +23,15 @@ function getCardValue(card) { // TODO: Implement this function + const rank = card.slice(0, -1); + const suit = card.slice(-1); + if (rank === "A") { + return 11; + } + if (rank === "J" || rank === "Q" || rank === "K") { + return 10; + } + return parseInt(rank); } // The line below allows us to load the getCardValue function into tests in other files. @@ -50,3 +59,12 @@ try { } catch (e) {} // What other invalid card cases can you think of? +assertEquals(getCardValue("A"), 11); // Missing suit +try { + getCardValue("11♠"); // Invalid rank + console.error("Error was not thrown for invalid rank"); +} catch (e) {} + +try { getCardValue("9X"); // Invalid suit + console.error("Error was not thrown for invalid suit"); +} catch (e) {} diff --git a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js index d777f348d..45eb1e843 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js +++ b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js @@ -14,7 +14,34 @@ 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(135)).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 +test(`should return "Reflex angle" when (180 < angle < 360)`, () => { + expect(getAngleType(181)).toEqual("Reflex angle"); + expect(getAngleType(270)).toEqual("Reflex angle"); + expect(getAngleType(359)).toEqual("Reflex angle"); +}); + // Case 6: Invalid angles +test(`should return "Invalid angle" when (angle < 0)`, () => { + expect(getAngleType(-1)).toEqual("Invalid angle"); +}); + +test(`should return "Invalid angle" when (angle > 360)`, () => { + expect(getAngleType(361)).toEqual("Invalid angle"); +}); \ No newline at end of file diff --git a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js index 7f087b2ba..dd1e42c76 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js +++ b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js @@ -8,3 +8,11 @@ const isProperFraction = require("../implement/2-is-proper-fraction"); test(`should return false when denominator is zero`, () => { expect(isProperFraction(1, 0)).toEqual(false); }); + +test(`should return true when numerator is zero and denominator is positive`, () => { + expect(isProperFraction(0, 1)).toEqual(true); +}); + +test(`should return false when numerator is zero and denominator is negative`, () => { + expect(isProperFraction(0, -1)).toEqual(false); +}); \ No newline at end of file diff --git a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/3-get-card-value.test.js b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/3-get-card-value.test.js index cf7f9dae2..474ef4e7a 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/3-get-card-value.test.js +++ b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/3-get-card-value.test.js @@ -11,8 +11,23 @@ test(`Should return 11 when given an ace card`, () => { // Suggestion: Group the remaining test data into these categories: // Number Cards (2-10) +test(`Should return the numeric value for number cards`, () => { + expect(getCardValue("2♠")).toEqual(2); + expect(getCardValue("10♠")).toEqual(10); +}); // Face Cards (J, Q, K) +test(`Should return 10 for face cards`, () => { + expect(getCardValue("J♠")).toEqual(10); + expect(getCardValue("Q♠")).toEqual(10); + expect(getCardValue("K♠")).toEqual(10); +}); // Invalid Cards +test(`Should throw an error for invalid cards`, () => { + expect(() => getCardValue("invalid")).toThrow(); + expect(() => getCardValue("A")).toThrow(); // Missing suit + expect(() => getCardValue("11♠")).toThrow(); // Invalid rank + expect(() => getCardValue("9X")).toThrow(); // Invalid suit +}); // To learn how to test whether a function throws an error as expected in Jest, // please refer to the Jest documentation: From 5218dc71690f92f71d0bd4dfd79fb6cf76c6bcfe Mon Sep 17 00:00:00 2001 From: Fayaz Date: Sun, 8 Mar 2026 15:17:27 +0000 Subject: [PATCH 02/20] Updated isProperFraction implementation and correct tests for negative fractions --- .../implement/2-is-proper-fraction.js | 21 +++++----- .../2-is-proper-fraction.test.js | 41 ++++++++++++++++++- 2 files changed, 49 insertions(+), 13 deletions(-) diff --git a/Sprint-3/1-implement-and-rewrite-tests/implement/2-is-proper-fraction.js b/Sprint-3/1-implement-and-rewrite-tests/implement/2-is-proper-fraction.js index a81a6a195..21ae23ba8 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/implement/2-is-proper-fraction.js +++ b/Sprint-3/1-implement-and-rewrite-tests/implement/2-is-proper-fraction.js @@ -11,24 +11,20 @@ // execute the code to ensure all tests pass. function isProperFraction(numerator, denominator) { - // TODO: Implement this function if (denominator === 0) { return false; } - if (numerator < 0 && denominator < 0) { - return Math.abs(numerator) < Math.abs(denominator); - } - if (numerator < 0 || denominator < 0) { - return false; - } - return numerator < denominator; + + return Math.abs(numerator) < Math.abs(denominator); } +module.exports = isProperFraction; + // The line below allows us to load the isProperFraction function into tests in other files. // This will be useful in the "rewrite tests with jest" step. -module.exports = isProperFraction; +//module.exports = isProperFraction; -// Here's our helper again +/* Here's our helper again function assertEquals(actualOutput, targetOutput) { console.assert( actualOutput === targetOutput, @@ -40,6 +36,7 @@ function assertEquals(actualOutput, targetOutput) { // What combinations of numerators and denominators should you test? // Example: 1/2 is a proper fraction +/* assertEquals(isProperFraction(1, 2), true); assertEquals(isProperFraction(2, 1), false); assertEquals(isProperFraction(0, 1), true); @@ -47,4 +44,6 @@ assertEquals(isProperFraction(-1, 2), false); assertEquals(isProperFraction(1, -2), false); assertEquals(isProperFraction(-1, -2), false); assertEquals(isProperFraction(3, 4), true); -assertEquals(isProperFraction(4, 3), false); \ No newline at end of file +assertEquals(isProperFraction(4, 3), false); + +*/ \ No newline at end of file diff --git a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js index dd1e42c76..6c2b6f51e 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js +++ b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js @@ -13,6 +13,43 @@ test(`should return true when numerator is zero and denominator is positive`, () expect(isProperFraction(0, 1)).toEqual(true); }); -test(`should return false when numerator is zero and denominator is negative`, () => { - expect(isProperFraction(0, -1)).toEqual(false); +test(`should return true when numerator is zero and denominator is negative`, () => { + expect(isProperFraction(0, -1)).toEqual(true); +}); + + +test("1/2 is proper", () => { + expect(isProperFraction(1, 2)).toBe(true); +}); + +test("2/1 is improper", () => { + expect(isProperFraction(2, 1)).toBe(false); +}); + +test("0/1 is proper", () => { + expect(isProperFraction(0, 1)).toBe(true); +}); + +test("-1/2 is proper", () => { + expect(isProperFraction(-1, 2)).toBe(true); +}); + +test("1/-2 is proper", () => { + expect(isProperFraction(1, -2)).toBe(true); +}); + +test("-1/-2 is proper", () => { + expect(isProperFraction(-1, -2)).toBe(true); +}); + +test("3/4 is proper", () => { + expect(isProperFraction(3, 4)).toBe(true); +}); + +test("4/3 is improper", () => { + expect(isProperFraction(4, 3)).toBe(false); +}); + +test("denominator 0 returns false", () => { + expect(isProperFraction(1, 0)).toBe(false); }); \ No newline at end of file From 45412301cee2ea121cc225b4a4e7ca8c6e300387 Mon Sep 17 00:00:00 2001 From: Fayaz Date: Sun, 8 Mar 2026 15:56:07 +0000 Subject: [PATCH 03/20] added implementation for invalid cards and removed direct calls from get-value-card to test file --- .../implement/3-get-card-value.js | 27 +++++++++++++------ .../3-get-card-value.test.js | 12 ++++++--- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/Sprint-3/1-implement-and-rewrite-tests/implement/3-get-card-value.js b/Sprint-3/1-implement-and-rewrite-tests/implement/3-get-card-value.js index 67d375824..a1d09bff9 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/implement/3-get-card-value.js +++ b/Sprint-3/1-implement-and-rewrite-tests/implement/3-get-card-value.js @@ -22,15 +22,25 @@ // execute the code to ensure all tests pass. function getCardValue(card) { - // TODO: Implement this function - const rank = card.slice(0, -1); - const suit = card.slice(-1); - if (rank === "A") { - return 11; + const validRanks = ["A","2","3","4","5","6","7","8","9","10","J","Q","K"]; + const validSuits = ["♠","♥","♦","♣"]; + + // Check type + if (typeof card !== "string") { + throw new Error("Invalid card string"); } - if (rank === "J" || rank === "Q" || rank === "K") { - return 10; + + const suit = card.slice(-1); + const rank = card.slice(0, -1); + + // Validate rank and suit + if (!validRanks.includes(rank) || !validSuits.includes(suit)) { + throw new Error("Invalid card string"); } + + // Compute value + if (rank === "A") return 11; + if (["J","Q","K"].includes(rank)) return 10; return parseInt(rank); } @@ -48,7 +58,7 @@ function assertEquals(actualOutput, targetOutput) { // TODO: Write tests to cover all outcomes, including throwing errors for invalid cards. // Examples: -assertEquals(getCardValue("9♠"), 9); +/* assertEquals(getCardValue("9♠"), 9); // Handling invalid cards try { @@ -68,3 +78,4 @@ try { try { getCardValue("9X"); // Invalid suit console.error("Error was not thrown for invalid suit"); } catch (e) {} +*/ \ No newline at end of file diff --git a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/3-get-card-value.test.js b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/3-get-card-value.test.js index 474ef4e7a..2b55d3d5d 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/3-get-card-value.test.js +++ b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/3-get-card-value.test.js @@ -23,13 +23,17 @@ test(`Should return 10 for face cards`, () => { }); // Invalid Cards test(`Should throw an error for invalid cards`, () => { - expect(() => getCardValue("invalid")).toThrow(); - expect(() => getCardValue("A")).toThrow(); // Missing suit - expect(() => getCardValue("11♠")).toThrow(); // Invalid rank - expect(() => getCardValue("9X")).toThrow(); // Invalid suit + expect(() => getCardValue("invalid")).toThrow("Invalid card string"); + expect(() => getCardValue("A")).toThrow("Invalid card string"); // Missing suit + expect(() => getCardValue("11♠")).toThrow("Invalid card string"); // Invalid rank + expect(() => getCardValue("9X")).toThrow("Invalid card string"); // Invalid suit }); // 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 60dd1f1e4603d62753d094c859945a639f855da2 Mon Sep 17 00:00:00 2001 From: Fayaz Date: Sun, 8 Mar 2026 16:40:09 +0000 Subject: [PATCH 04/20] ensure only valid cards return numbers --- .../implement/3-get-card-value.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Sprint-3/1-implement-and-rewrite-tests/implement/3-get-card-value.js b/Sprint-3/1-implement-and-rewrite-tests/implement/3-get-card-value.js index a1d09bff9..3f0c8b6aa 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/implement/3-get-card-value.js +++ b/Sprint-3/1-implement-and-rewrite-tests/implement/3-get-card-value.js @@ -39,9 +39,9 @@ function getCardValue(card) { } // Compute value - if (rank === "A") return 11; - if (["J","Q","K"].includes(rank)) return 10; - return parseInt(rank); + if (rank === "A") return 11; +if (["J","Q","K"].includes(rank)) return 10; +return parseInt(rank); } // The line below allows us to load the getCardValue function into tests in other files. From d0b2a2601135c126bddb2893ec3f86691083acba Mon Sep 17 00:00:00 2001 From: Fayaz Date: Sun, 8 Mar 2026 16:49:08 +0000 Subject: [PATCH 05/20] return "Invalid angle" for angles <0 or >360 and added explicit invalid angle check in the beginning --- .../implement/1-get-angle-type.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Sprint-3/1-implement-and-rewrite-tests/implement/1-get-angle-type.js b/Sprint-3/1-implement-and-rewrite-tests/implement/1-get-angle-type.js index 38b547131..cf62de15c 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/implement/1-get-angle-type.js +++ b/Sprint-3/1-implement-and-rewrite-tests/implement/1-get-angle-type.js @@ -15,6 +15,10 @@ // execute the code to ensure all tests pass. function getAngleType(angle) { + if (angle < 0 || angle > 360) { + return "Invalid angle"; + } + if (angle > 0 && angle < 90) { return "Acute angle"; } @@ -30,6 +34,7 @@ function getAngleType(angle) { if (angle > 180 && angle < 360) { return "Reflex angle"; } + return "Invalid angle"; } From 22cbee3d2924bc0ec4b55ba32dbec897714af5fc Mon Sep 17 00:00:00 2001 From: Fayaz Date: Sun, 8 Mar 2026 20:07:49 +0000 Subject: [PATCH 06/20] =?UTF-8?q?=20clarify=20invalid=20angle=20tests=20us?= =?UTF-8?q?ing=20valid=20range=200=E2=80=93360?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rewrite-tests-with-jest/1-get-angle-type.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js index 45eb1e843..b42cc657d 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js +++ b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js @@ -38,10 +38,10 @@ test(`should return "Reflex angle" when (180 < angle < 360)`, () => { }); // Case 6: Invalid angles -test(`should return "Invalid angle" when (angle < 0)`, () => { +test(`should return "Invalid angle" when angle is less than the minimum valid angle (0)`, () => { expect(getAngleType(-1)).toEqual("Invalid angle"); }); -test(`should return "Invalid angle" when (angle > 360)`, () => { +test(`should return "Invalid angle" when angle is greater than the maximum valid angle (360)`, () => { expect(getAngleType(361)).toEqual("Invalid angle"); }); \ No newline at end of file From 9ab27166837c5ecbece21b9d54572af51ce84818 Mon Sep 17 00:00:00 2001 From: Fayaz Date: Sun, 8 Mar 2026 20:31:15 +0000 Subject: [PATCH 07/20] fixed the indentation in the function --- .../implement/3-get-card-value.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Sprint-3/1-implement-and-rewrite-tests/implement/3-get-card-value.js b/Sprint-3/1-implement-and-rewrite-tests/implement/3-get-card-value.js index 3f0c8b6aa..f589c76d1 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/implement/3-get-card-value.js +++ b/Sprint-3/1-implement-and-rewrite-tests/implement/3-get-card-value.js @@ -39,9 +39,15 @@ function getCardValue(card) { } // Compute value - if (rank === "A") return 11; -if (["J","Q","K"].includes(rank)) return 10; -return parseInt(rank); +if (rank === "A") { + return 11; +} + +if (["J", "Q", "K"].includes(rank)) { + return 10; +} + +return parseInt(rank); } // The line below allows us to load the getCardValue function into tests in other files. @@ -77,5 +83,4 @@ try { try { getCardValue("9X"); // Invalid suit console.error("Error was not thrown for invalid suit"); -} catch (e) {} -*/ \ No newline at end of file +} catch (e) {} */ From a517fe729a33aa8099c8591ed6d511f2647998a7 Mon Sep 17 00:00:00 2001 From: Fayaz Date: Sun, 8 Mar 2026 23:51:42 +0000 Subject: [PATCH 08/20] fixed the indentation issue --- .../implement/3-get-card-value.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Sprint-3/1-implement-and-rewrite-tests/implement/3-get-card-value.js b/Sprint-3/1-implement-and-rewrite-tests/implement/3-get-card-value.js index f589c76d1..64c568ece 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/implement/3-get-card-value.js +++ b/Sprint-3/1-implement-and-rewrite-tests/implement/3-get-card-value.js @@ -39,15 +39,15 @@ function getCardValue(card) { } // Compute value -if (rank === "A") { - return 11; -} + if (rank === "A") { + return 11; + } -if (["J", "Q", "K"].includes(rank)) { - return 10; -} + if (["J", "Q", "K"].includes(rank)) { + return 10; + } -return parseInt(rank); + return parseInt(rank); } // The line below allows us to load the getCardValue function into tests in other files. From 40bd7ce77d2355fc1f8473e017063640727d560c Mon Sep 17 00:00:00 2001 From: Fayaz Date: Mon, 9 Mar 2026 00:12:05 +0000 Subject: [PATCH 09/20] categorize cases with descriptive messages --- .../2-is-proper-fraction.test.js | 50 +++++-------------- 1 file changed, 13 insertions(+), 37 deletions(-) diff --git a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js index 6c2b6f51e..13ab4fbd5 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js +++ b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js @@ -4,52 +4,28 @@ const isProperFraction = require("../implement/2-is-proper-fraction"); // 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 true when numerator is zero and denominator is positive`, () => { - expect(isProperFraction(0, 1)).toEqual(true); +// Category 1: Numerator is zero +test("should return true when numerator is zero and denominator is positive", () => { + expect(isProperFraction(0, 1)).toBe(true); }); - -test(`should return true when numerator is zero and denominator is negative`, () => { - expect(isProperFraction(0, -1)).toEqual(true); +test("should return true when numerator is zero and denominator is negative", () => { + expect(isProperFraction(0, -1)).toBe(true); }); - -test("1/2 is proper", () => { +// Category 2: Proper fractions (numerator < denominator) +test("should return true when numerator is less than denominator", () => { expect(isProperFraction(1, 2)).toBe(true); + expect(isProperFraction(3, 5)).toBe(true); }); -test("2/1 is improper", () => { +// Category 3: Improper fractions (numerator >= denominator) +test("should return false when numerator is greater than or equal to denominator", () => { expect(isProperFraction(2, 1)).toBe(false); + expect(isProperFraction(5, 5)).toBe(false); }); -test("0/1 is proper", () => { - expect(isProperFraction(0, 1)).toBe(true); -}); - -test("-1/2 is proper", () => { - expect(isProperFraction(-1, 2)).toBe(true); -}); - -test("1/-2 is proper", () => { - expect(isProperFraction(1, -2)).toBe(true); -}); - -test("-1/-2 is proper", () => { - expect(isProperFraction(-1, -2)).toBe(true); -}); - -test("3/4 is proper", () => { - expect(isProperFraction(3, 4)).toBe(true); -}); - -test("4/3 is improper", () => { - expect(isProperFraction(4, 3)).toBe(false); -}); - -test("denominator 0 returns false", () => { +// Category 4: Denominator is zero +test("should return false when denominator is zero", () => { expect(isProperFraction(1, 0)).toBe(false); }); \ No newline at end of file From 8c587a25a3ba93119ca6b916f207b2e65a5fc2b7 Mon Sep 17 00:00:00 2001 From: Fayaz Date: Mon, 9 Mar 2026 00:17:28 +0000 Subject: [PATCH 10/20] used shorter descriptive text for test --- .../rewrite-tests-with-jest/1-get-angle-type.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js index b42cc657d..c3808df2f 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js +++ b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js @@ -38,10 +38,10 @@ test(`should return "Reflex angle" when (180 < angle < 360)`, () => { }); // Case 6: Invalid angles -test(`should return "Invalid angle" when angle is less than the minimum valid angle (0)`, () => { +test(`should return "Invalid angle" when angle < 1 `, () => { expect(getAngleType(-1)).toEqual("Invalid angle"); }); -test(`should return "Invalid angle" when angle is greater than the maximum valid angle (360)`, () => { +test(`should return "Invalid angle" when angle > 360 `, () => { expect(getAngleType(361)).toEqual("Invalid angle"); }); \ No newline at end of file From 560d5c61428a825a60675d713b6d4c231032b6a5 Mon Sep 17 00:00:00 2001 From: Fayaz Date: Mon, 9 Mar 2026 00:25:40 +0000 Subject: [PATCH 11/20] implementation to handle boundary angles correctly with test case --- .../implement/1-get-angle-type.js | 8 +++----- .../rewrite-tests-with-jest/1-get-angle-type.test.js | 5 +++++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Sprint-3/1-implement-and-rewrite-tests/implement/1-get-angle-type.js b/Sprint-3/1-implement-and-rewrite-tests/implement/1-get-angle-type.js index cf62de15c..8adb00746 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/implement/1-get-angle-type.js +++ b/Sprint-3/1-implement-and-rewrite-tests/implement/1-get-angle-type.js @@ -15,10 +15,6 @@ // execute the code to ensure all tests pass. function getAngleType(angle) { - if (angle < 0 || angle > 360) { - return "Invalid angle"; - } - if (angle > 0 && angle < 90) { return "Acute angle"; } @@ -34,7 +30,9 @@ function getAngleType(angle) { if (angle > 180 && angle < 360) { return "Reflex angle"; } - + if (angle === 360) { + return "Straight angle"; + } return "Invalid angle"; } diff --git a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js index c3808df2f..cdbac4bff 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js +++ b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js @@ -44,4 +44,9 @@ test(`should return "Invalid angle" when angle < 1 `, () => { test(`should return "Invalid angle" when angle > 360 `, () => { expect(getAngleType(361)).toEqual("Invalid angle"); +}); + +// Largest valid angle(boundary case) +test(`should return "Straight angle" when angle is the maximum valid value (360)`, () => { + expect(getAngleType(360)).toEqual("Straight angle"); }); \ No newline at end of file From 401d8cb1f812e7d204504b23cb20eaf683297237 Mon Sep 17 00:00:00 2001 From: Fayaz Date: Mon, 9 Mar 2026 00:29:14 +0000 Subject: [PATCH 12/20] implementation for small valid angle and test case for it --- .../implement/1-get-angle-type.js | 3 +++ .../rewrite-tests-with-jest/1-get-angle-type.test.js | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/Sprint-3/1-implement-and-rewrite-tests/implement/1-get-angle-type.js b/Sprint-3/1-implement-and-rewrite-tests/implement/1-get-angle-type.js index 8adb00746..4e5a2cb62 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/implement/1-get-angle-type.js +++ b/Sprint-3/1-implement-and-rewrite-tests/implement/1-get-angle-type.js @@ -33,6 +33,9 @@ function getAngleType(angle) { if (angle === 360) { return "Straight angle"; } + if (angle === 1) { + return "Acute angle"; + } return "Invalid angle"; } diff --git a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js index cdbac4bff..3a07b5b57 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js +++ b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js @@ -49,4 +49,8 @@ test(`should return "Invalid angle" when angle > 360 `, () => { // Largest valid angle(boundary case) test(`should return "Straight angle" when angle is the maximum valid value (360)`, () => { expect(getAngleType(360)).toEqual("Straight angle"); +}); + +test(`should return "Acute angle" when angle is the minimum valid value (1)`, () => { + expect(getAngleType(1)).toEqual("Acute angle"); }); \ No newline at end of file From 48cfeba63b3ebaa2803f4ec1c5f7e3756f4c63ac Mon Sep 17 00:00:00 2001 From: Fayaz Date: Mon, 9 Mar 2026 00:29:50 +0000 Subject: [PATCH 13/20] smallest valid angle --- .../rewrite-tests-with-jest/1-get-angle-type.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js index 3a07b5b57..9f9c426fa 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js +++ b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js @@ -50,7 +50,7 @@ test(`should return "Invalid angle" when angle > 360 `, () => { test(`should return "Straight angle" when angle is the maximum valid value (360)`, () => { expect(getAngleType(360)).toEqual("Straight angle"); }); - + // Smallest valid angle(boundary case) test(`should return "Acute angle" when angle is the minimum valid value (1)`, () => { expect(getAngleType(1)).toEqual("Acute angle"); }); \ No newline at end of file From 595de0034755f4746f956bad57931f9692a4dcbd Mon Sep 17 00:00:00 2001 From: Fayaz Date: Mon, 9 Mar 2026 23:18:18 +0000 Subject: [PATCH 14/20] updated the test description and function to match task specification --- .../implement/1-get-angle-type.js | 4 +--- .../1-get-angle-type.test.js | 14 +++++++------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/Sprint-3/1-implement-and-rewrite-tests/implement/1-get-angle-type.js b/Sprint-3/1-implement-and-rewrite-tests/implement/1-get-angle-type.js index 4e5a2cb62..ae37d6c33 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/implement/1-get-angle-type.js +++ b/Sprint-3/1-implement-and-rewrite-tests/implement/1-get-angle-type.js @@ -33,9 +33,7 @@ function getAngleType(angle) { if (angle === 360) { return "Straight angle"; } - if (angle === 1) { - return "Acute angle"; - } + return "Invalid angle"; } diff --git a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js index 9f9c426fa..7b261d844 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js +++ b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js @@ -6,7 +6,7 @@ const getAngleType = require("../implement/1-get-angle-type"); // including boundary and invalid cases. // Case 1: Acute angles -test(`should return "Acute angle" when (0 < angle < 90)`, () => { +test(`should return "Acute angle" for angles greater than 0° and less than 90°`, () => { // Test various acute angles, including boundary cases expect(getAngleType(1)).toEqual("Acute angle"); expect(getAngleType(45)).toEqual("Acute angle"); @@ -14,35 +14,35 @@ test(`should return "Acute angle" when (0 < angle < 90)`, () => { }); // Case 2: Right angle -test(`should return "Right angle" when (angle === 90)`, () => { +test(`should return "Right angle" for exactly 90°`, () => { expect(getAngleType(90)).toEqual("Right angle"); }); // Case 3: Obtuse angles -test(`should return "Obtuse angle" when (90 < angle < 180)`, () => { +test(`should return "Obtuse angle" for angles greater than 90° and less than 180°`, () => { expect(getAngleType(91)).toEqual("Obtuse angle"); expect(getAngleType(135)).toEqual("Obtuse angle"); expect(getAngleType(179)).toEqual("Obtuse angle"); }); // Case 4: Straight angle -test(`should return "Straight angle" when (angle === 180)`, () => { +test(`should return "Straight angle" for exactly 180°`, () => { expect(getAngleType(180)).toEqual("Straight angle"); }); // Case 5: Reflex angles -test(`should return "Reflex angle" when (180 < angle < 360)`, () => { +test(`should return "Reflex angle" for angles greater than 180° and less than 360°`, () => { expect(getAngleType(181)).toEqual("Reflex angle"); expect(getAngleType(270)).toEqual("Reflex angle"); expect(getAngleType(359)).toEqual("Reflex angle"); }); // Case 6: Invalid angles -test(`should return "Invalid angle" when angle < 1 `, () => { +test(`should return "Invalid angle" for angles less than 1°`, () => { expect(getAngleType(-1)).toEqual("Invalid angle"); }); -test(`should return "Invalid angle" when angle > 360 `, () => { +test(`should return "Invalid angle" for angles greater than 360°`, () => { expect(getAngleType(361)).toEqual("Invalid angle"); }); From e21d0fd1da677c23854bbac8d04e034bb3c3225c Mon Sep 17 00:00:00 2001 From: Fayaz Date: Mon, 9 Mar 2026 23:26:12 +0000 Subject: [PATCH 15/20] tests to include negative numerator and denominator cases --- .../rewrite-tests-with-jest/2-is-proper-fraction.test.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js index 13ab4fbd5..2b05e63fc 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js +++ b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js @@ -17,12 +17,16 @@ test("should return true when numerator is zero and denominator is negative", () test("should return true when numerator is less than denominator", () => { expect(isProperFraction(1, 2)).toBe(true); expect(isProperFraction(3, 5)).toBe(true); + expect(isProperFraction(-1, 2)).toBe(true); + expect(isProperFraction(1, -2)).toBe(true); }); // Category 3: Improper fractions (numerator >= denominator) test("should return false when numerator is greater than or equal to denominator", () => { expect(isProperFraction(2, 1)).toBe(false); expect(isProperFraction(5, 5)).toBe(false); + expect(isProperFraction(-3, 2)).toBe(false); + expect(isProperFraction(3, -2)).toBe(false); }); // Category 4: Denominator is zero From 921a30aab15b207f250b20a326a9eeeb7ae3d8cd Mon Sep 17 00:00:00 2001 From: Fayaz Date: Tue, 10 Mar 2026 23:04:28 +0000 Subject: [PATCH 16/20] align angle tests and implementation of function with specification of the task --- .../implement/1-get-angle-type.js | 3 --- .../rewrite-tests-with-jest/1-get-angle-type.test.js | 6 +++--- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/Sprint-3/1-implement-and-rewrite-tests/implement/1-get-angle-type.js b/Sprint-3/1-implement-and-rewrite-tests/implement/1-get-angle-type.js index ae37d6c33..7d49ed716 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/implement/1-get-angle-type.js +++ b/Sprint-3/1-implement-and-rewrite-tests/implement/1-get-angle-type.js @@ -30,9 +30,6 @@ function getAngleType(angle) { if (angle > 180 && angle < 360) { return "Reflex angle"; } - if (angle === 360) { - return "Straight angle"; - } return "Invalid angle"; } diff --git a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js index 7b261d844..e5699df41 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js +++ b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js @@ -46,9 +46,9 @@ test(`should return "Invalid angle" for angles greater than 360°`, () => { expect(getAngleType(361)).toEqual("Invalid angle"); }); -// Largest valid angle(boundary case) -test(`should return "Straight angle" when angle is the maximum valid value (360)`, () => { - expect(getAngleType(360)).toEqual("Straight angle"); + +test(`should return "Invalid angle" for angles equal to 360°`, () => { + expect(getAngleType(360)).toEqual("Invalid angle"); }); // Smallest valid angle(boundary case) test(`should return "Acute angle" when angle is the minimum valid value (1)`, () => { From 8a9fab65398c949d7760128a794970defbfa3bd5 Mon Sep 17 00:00:00 2001 From: Fayaz Date: Tue, 10 Mar 2026 23:07:16 +0000 Subject: [PATCH 17/20] removed the test written twice --- .../rewrite-tests-with-jest/1-get-angle-type.test.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js index e5699df41..8cc54ca5c 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js +++ b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js @@ -50,7 +50,4 @@ test(`should return "Invalid angle" for angles greater than 360°`, () => { test(`should return "Invalid angle" for angles equal to 360°`, () => { expect(getAngleType(360)).toEqual("Invalid angle"); }); - // Smallest valid angle(boundary case) -test(`should return "Acute angle" when angle is the minimum valid value (1)`, () => { - expect(getAngleType(1)).toEqual("Acute angle"); -}); \ No newline at end of file + \ No newline at end of file From 89c02e7c1cad01777ef8dddf527ad5ab78bc8d3b Mon Sep 17 00:00:00 2001 From: Fayaz Date: Tue, 10 Mar 2026 23:14:55 +0000 Subject: [PATCH 18/20] combined all invalid angles into one test --- .../1-get-angle-type.test.js | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js index 8cc54ca5c..f86311c8d 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js +++ b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/1-get-angle-type.test.js @@ -38,16 +38,9 @@ test(`should return "Reflex angle" for angles greater than 180° and less than 3 }); // Case 6: Invalid angles -test(`should return "Invalid angle" for angles less than 1°`, () => { +test(`should return "Invalid angle" when angle ≤ 0° or angle ≥ 360°`, () => { expect(getAngleType(-1)).toEqual("Invalid angle"); -}); - -test(`should return "Invalid angle" for angles greater than 360°`, () => { + expect(getAngleType(0)).toEqual("Invalid angle"); // boundary case + expect(getAngleType(360)).toEqual("Invalid angle"); // boundary case expect(getAngleType(361)).toEqual("Invalid angle"); -}); - - -test(`should return "Invalid angle" for angles equal to 360°`, () => { - expect(getAngleType(360)).toEqual("Invalid angle"); -}); - \ No newline at end of file +}); \ No newline at end of file From b3bbf8ac26182adee31017616d4da2bf58a0e8dc Mon Sep 17 00:00:00 2001 From: Fayaz Date: Tue, 10 Mar 2026 23:19:13 +0000 Subject: [PATCH 19/20] added another test case (0,0) --- .../rewrite-tests-with-jest/2-is-proper-fraction.test.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js index 2b05e63fc..1b997d5b8 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js +++ b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js @@ -32,4 +32,10 @@ test("should return false when numerator is greater than or equal to denominator // Category 4: Denominator is zero test("should return false when denominator is zero", () => { expect(isProperFraction(1, 0)).toBe(false); +}); + +// Category 5: Both numerator and denominator are zero + +test("should return false when numerator is zero and denominator is zero", () => { + expect(isProperFraction(0, 0)).toBe(false); }); \ No newline at end of file From 0f7221f021a22632d01a058e5bf81cd2e6b82f6b Mon Sep 17 00:00:00 2001 From: Fayaz Date: Tue, 10 Mar 2026 23:21:43 +0000 Subject: [PATCH 20/20] changes description for category 3. --- .../rewrite-tests-with-jest/2-is-proper-fraction.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js index 1b997d5b8..1d79431b1 100644 --- a/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js +++ b/Sprint-3/1-implement-and-rewrite-tests/rewrite-tests-with-jest/2-is-proper-fraction.test.js @@ -22,7 +22,7 @@ test("should return true when numerator is less than denominator", () => { }); // Category 3: Improper fractions (numerator >= denominator) -test("should return false when numerator is greater than or equal to denominator", () => { +test("should return false when abs(numerator) >= abs(denominator)", () => { expect(isProperFraction(2, 1)).toBe(false); expect(isProperFraction(5, 5)).toBe(false); expect(isProperFraction(-3, 2)).toBe(false);