Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
node_modules
.DS_Store
.vscode
testing.js
**/.DS_Store
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,20 @@
// Then, write the next test! :) Go through this process until all the cases are implemented

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";
}
// Run the tests, work out what Case 2 is testing, and implement the required code here.
// Then keep going for the other cases, one at a time.
Expand Down Expand Up @@ -49,15 +61,20 @@ assertEquals(acute, "Acute angle");
// Case 3: Identify Obtuse Angles:
// When the angle is greater than 90 degrees and less than 180 degrees,
// Then the function should return "Obtuse angle"
const obtuse = getAngleType(120);
// ====> write your test here, and then add a line to pass the test in the function above
const obtuse = getAngleType(120);
assertEquals(obtuse, "Obtuse angle");

// Case 4: Identify Straight Angles:
// When the angle is exactly 180 degrees,
// Then the function should return "Straight angle"
// ====> write your test here, and then add a line to pass the test in the function above
const straight = getAngleType(180);
assertEquals(straight, "Straight angle");

// Case 5: Identify Reflex Angles:
// When the angle is greater than 180 degrees and less than 360 degrees,
// Then the function should return "Reflex angle"
// ====> write your test here, and then add a line to pass the test in the function above
// ====> write your test here, and then add a line to pass the test in the function above
const reflex = getAngleType(300);
assertEquals(reflex, "Reflex angle");
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,11 @@
// write one test at a time, and make it pass, build your solution up methodically

function isProperFraction(numerator, denominator) {
if (numerator < denominator) {
return true;
if(!Number.isInteger(numerator) || !Number.isInteger(denominator)) {
throw new Error("[ wrong input ]");
}

return Math.abs(numerator) < Math.abs(denominator) && denominator !== 0;
}

// The line below allows us to load the isProperFraction function into tests in other files.
Expand Down Expand Up @@ -47,13 +49,29 @@ assertEquals(improperFraction, false);
// Explanation: The fraction -4/7 is a proper fraction because the absolute value of the numerator (4) is less than the denominator (7). The function should return true.
const negativeFraction = isProperFraction(-4, 7);
// ====> complete with your assertion
assertEquals(negativeFraction, true);

// Equal Numerator and Denominator check:
// Input: numerator = 3, denominator = 3
// target output: false
// Explanation: The fraction 3/3 is not a proper fraction because the numerator is equal to the denominator. The function should return false.
const equalFraction = isProperFraction(3, 3);
// ====> complete with your assertion
assertEquals(equalFraction, false);

// Stretch:
// What other scenarios could you test for?

// Try 0 and a negative number check:
// Input: numerator = -10, denominator = 0
// target output: false
const tryZero = isProperFraction(-10, 0);
assertEquals(tryZero, false);

// check if inputs are proper numbers
// Input: numerator = "hello", denominator = 4 (any number)
//target output: string "[ wrong input ]"

// Uncomment to test error handling to see the assertion fail
// const tryString = isProperFraction("hello", 4);
// assertEquals(tryString, "[ wrong input ]");
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,26 @@
// write one test at a time, and make it pass, build your solution up methodically
// just make one change at a time -- don't rush -- programmers are deep and careful thinkers
function getCardValue(card) {
let rank = String(card).slice(0, -1);
if (rank === "A") {
return 11;
}
if (rank === "J" || rank === "Q"|| rank === "K") {
return 10;
}

if(!Number.isInteger(Number(rank) ) || /^0x/i.test(rank)) {
return "Invalid card rank.";
}

rank = Number(rank);
if ((rank >= 2) && (rank <= 10)) {
return rank;
}
return "Invalid card rank.";
}

console.log(getCardValue("0x00002♠"));
// The line below allows us to load the getCardValue function into tests in other files.
// This will be useful in the "rewrite tests with jest" step.
module.exports = getCardValue;
Expand Down Expand Up @@ -40,18 +55,37 @@ assertEquals(aceofSpades, 11);
// Then it should return the numeric value corresponding to the rank (e.g., "5" should return 5).
const fiveofHearts = getCardValue("5♥");
// ====> write your test here, and then add a line to pass the test in the function above
assertEquals(fiveofHearts, 5);

// Handle Face Cards (J, Q, K):
// Given a card with a rank of "10," "J," "Q," or "K",
// When the function is called with such a card,
// Then it should return the value 10, as these cards are worth 10 points each in blackjack.
const faceCards = getCardValue("J♠");
assertEquals(faceCards, 10);

// Handle Ace (A):
// Given a card with a rank of "A",
// When the function is called with an Ace,
// Then it should, by default, assume the Ace is worth 11 points, which is a common rule in blackjack.
const ace = getCardValue("A♠");
assertEquals(ace, 11);

// Handle Invalid Cards:
// Given a card with an invalid rank (neither a number nor a recognized face card),
// When the function is called with such a card,
// Then it should throw an error indicating "Invalid card rank."
const invalidCards = getCardValue("hello");
assertEquals(invalidCards, "Invalid card rank.");

// strings that represent valid numeric literals
const numericLiterals1 = getCardValue("hello");
assertEquals(numericLiterals1, "Invalid card rank.");

const numericLiterals2 = getCardValue("hello");
assertEquals(numericLiterals2, "Invalid card rank.");


// console.log(getCardValue("0x02♠")); // 2
// console.log(getCardValue("2.1♠")); // 2
// console.log(getCardValue("0002♠")); // 2
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,24 @@ test("should identify right angle (90°)", () => {
// REPLACE the comments with the tests
// make your test descriptions as clear and readable as possible

// Case 2: Identify Acute Angles:
// When the angle is less than 90 degrees,
// Then the function should return "Acute angle"
test("should identify Acute angle (less than 90°)", () => {
expect(getAngleType(80)).toEqual("Acute angle");
expect(getAngleType(45)).toEqual("Acute angle");
expect(getAngleType(10)).toEqual("Acute angle");
});

// Case 3: Identify Obtuse Angles:
// When the angle is greater than 90 degrees and less than 180 degrees,
// Then the function should return "Obtuse angle"
test("should identify Obtuse angle (greater than 90° and less than 180 )", () => {
expect(getAngleType(100)).toEqual("Obtuse angle");
expect(getAngleType(150)).toEqual("Obtuse angle");
expect(getAngleType(170)).toEqual("Obtuse angle");
});

// Case 4: Identify Straight Angles:
// When the angle is exactly 180 degrees,
// Then the function should return "Straight angle"
test("should identify Straight angle (180°)", () => {
expect(getAngleType(180)).toEqual("Straight angle");
});

// Case 5: Identify Reflex Angles:
// When the angle is greater than 180 degrees and less than 360 degrees,
// Then the function should return "Reflex angle"
test("should identify Reflex angle (greater than 180° and less than 360°)", () => {
expect(getAngleType(181)).toEqual("Reflex angle");
expect(getAngleType(359)).toEqual("Reflex angle");
expect(getAngleType(250)).toEqual("Reflex angle");
});
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,37 @@ const isProperFraction = require("../implement/2-is-proper-fraction");

test("should return true for a proper fraction", () => {
expect(isProperFraction(2, 3)).toEqual(true);
expect(isProperFraction(3, 2)).toEqual(false);
expect(isProperFraction(5, 8)).toEqual(true);
expect(isProperFraction(8, 5)).toEqual(false);
expect(isProperFraction(1, 4)).toEqual(true);
expect(isProperFraction(4, 1)).toEqual(false);
expect(isProperFraction(1, 4)).toEqual(true);
});

// Case 2: Identify Improper Fractions:
test("should return false for an improper Fractions", () => {
expect(isProperFraction(9, 4)).toEqual(false);
expect(isProperFraction(4, 9)).toEqual(true);
expect(isProperFraction(7, 3)).toEqual(false);
expect(isProperFraction(3, 7)).toEqual(true);
expect(isProperFraction(10, 2)).toEqual(false);
expect(isProperFraction(2, 10)).toEqual(true);
});

// Case 3: Identify Negative Fractions:
test("should return false for a negative Fractions", () => {
expect(isProperFraction(-6, 4)).toEqual(false);
expect(isProperFraction(-4, 6)).toEqual(true);
expect(isProperFraction(6, -4)).toEqual(false);
expect(isProperFraction(4, -6)).toEqual(true);
expect(isProperFraction(-6, -4)).toEqual(false);
expect(isProperFraction(-4, -6)).toEqual(true);
});

// Case 4: Identify Equal Numerator and Denominator:
test("should return false for an equal Fractions", () => {
expect(isProperFraction(7, 7)).toEqual(false);
expect(isProperFraction(10, 10)).toEqual(false);
expect(isProperFraction(1, 1)).toEqual(false);
});
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,28 @@ test("should return 11 for Ace of Spades", () => {
});

// Case 2: Handle Number Cards (2-10):
test("should return the number entered as input", () => {
for (let i = 2; i <= 10; i++) {
expect(getCardValue(`${i}♠`)).toEqual(i);
}
});

// Case 3: Handle Face Cards (J, Q, K):
test("should return 10 for face cards J Q K", () => {
expect(getCardValue("Q♠")).toEqual(10);
expect(getCardValue("J♠")).toEqual(10);
expect(getCardValue("K♠")).toEqual(10);
});

// Case 4: Handle Ace (A):
test("should return 11 when entering Ace A", () => {
expect(getCardValue("A♠")).toEqual(11);
});

// Case 5: Handle Invalid Cards:
test(`should return string ("Invalid card rank.") for invalid inputs`, () => {
expect(getCardValue("HelloWorld!")).toEqual("Invalid card rank.");
expect(getCardValue("♠")).toEqual("Invalid card rank.");
expect(getCardValue("979")).toEqual("Invalid card rank.");
expect(getCardValue("1")).toEqual("Invalid card rank.");
});
Loading