Skip to content
Open
Show file tree
Hide file tree
Changes from 14 commits
Commits
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
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,19 @@ function getAngleType(angle) {
if (angle === 90) {
return "Right 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.
if (angle < 90 && angle > 0) {
return "Acute angle";
}
if (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.
Expand Down Expand Up @@ -50,14 +61,33 @@ assertEquals(acute, "Acute angle");
// 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
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(270);
assertEquals(reflex, "Reflex angle");

let angle = 120;
console.log(angle + " degrees is a " + getAngleType(angle));
angle = 45;
console.log(angle + " degrees is a " + getAngleType(angle));
angle = 90;
console.log(angle + " degrees is a " + getAngleType(angle));
angle = 180;
console.log(angle + " degrees is a " + getAngleType(angle));
angle = 270;
console.log(angle + " degrees is a " + getAngleType(angle));
angle = -10;
console.log(angle + " degrees is a " + getAngleType(angle));
angle = 400;
console.log(angle + " degrees is a " + getAngleType(angle));
// Case 6: Handle Invalid Angles:
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,25 @@
// write one test at a time, and make it pass, build your solution up methodically

function isProperFraction(numerator, denominator) {
if (numerator < denominator) {
<<<<<<< HEAD
if (denominator) {
return true;
=======
if (typeof numerator !== "number" || typeof denominator !== "number") {
return false; // Invalid input types
>>>>>>> 52740052fb0ad97a2c7253a04978b14a15b9e763
}

if (denominator === 0) {
return false; // Division by zero is undefined
}

const value = numerator / denominator;
return Math.abs(value) < 1; // Proper fraction if the value is between -1 and 1
}

// 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;

// here's our helper again
function assertEquals(actualOutput, targetOutput) {
console.assert(
actualOutput === targetOutput,
`Expected ${actualOutput} to equal ${targetOutput}`
);
}

// Acceptance criteria:

Expand All @@ -47,13 +50,55 @@ 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?


// Zero Numerator check:
// Input: numerator = 0, denominator = 5
// target output: true
// Explanation: The fraction 0/5 is a proper fraction because the numerator (0) is less than the denominator (5). The function should return true.
const zeroNumerator = isProperFraction(0, 5);
assertEquals(zeroNumerator, true);

// Negative Denominator check:
// Input: numerator = 2, denominator = -3
// target output: false
// Explanation: The fraction 2/-3 is not a proper fraction because the denominator is negative. The function should return false.
const negativeDenominator = isProperFraction(2, -3);
assertEquals(negativeDenominator, true);

let numerator= 1;
let denominator= 7;
console.log(numerator + "/" + denominator + " check =", isProperFraction(numerator, denominator));
numerator= 5;
denominator= 1;
console.log(numerator + "/" + denominator + " check =", isProperFraction(numerator, denominator));
numerator= -4;
denominator= 9;
console.log(numerator + "/" + denominator + " check =", isProperFraction(numerator, denominator));
numerator= 0;
denominator= 6;
console.log(numerator + "/" + denominator + " check =", isProperFraction(numerator, denominator));
numerator= 4;
denominator= 4;
console.log(numerator + "/" + denominator + " check =", isProperFraction(numerator, denominator));
numerator= -5;
denominator= 8;
console.log(numerator + "/" + denominator + " check =", isProperFraction(numerator, denominator));
numerator= 4;
denominator= -2;
console.log(numerator + "/" + denominator + " check =", isProperFraction(numerator, denominator));
numerator= -3;
denominator= -7;
console.log(numerator + "/" + denominator + " check =", isProperFraction(numerator, denominator));
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,17 @@
// 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) {
const rank = card.slice(0, -1);
if (rank === "A") {
return 11;
}
if (["10", "J", "Q", "K"].includes(rank)) {
return 10;
}
if (["2", "3", "4", "5", "6", "7", "8", "9"].includes(rank)) {
return parseInt(rank, 10);
}
return "Invalid card rank";
}

// The line below allows us to load the getCardValue function into tests in other files.
Expand Down Expand Up @@ -38,20 +46,51 @@ assertEquals(aceofSpades, 11);
// Given a card with a rank between "2" and "9",
// When the function is called with such a card,
// Then it should return the numeric value corresponding to the rank (e.g., "5" should return 5).
const fiveofHearts = getCardValue("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 kingofDiamonds = getCardValue("K♦");
assertEquals(kingofDiamonds, 10);

const jackofHearts = getCardValue("J♥");
assertEquals(jackofHearts, 10);

const queenofSpades = getCardValue("Q♠");
assertEquals(queenofSpades, 10);

const tenofClubs = getCardValue("10♣");
assertEquals(tenofClubs, 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 aceofClubs = getCardValue("A♣");
assertEquals(aceofClubs, 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 invalidCard = getCardValue("1♠");
assertEquals(invalidCard, "Invalid card rank");
const invalidCard2 = getCardValue("11♠");
assertEquals(invalidCard2, "Invalid card rank");
const invalidCard3 = getCardValue("B♠");
assertEquals(invalidCard3, "Invalid card rank");


console.log( getCardValue("1♠"));
console.log( getCardValue("11♠"));
console.log( getCardValue("B♠"));
console.log( getCardValue("3♠"));
console.log( getCardValue("10♠"));
console.log( getCardValue("J♠"));
console.log( getCardValue("Q♠"));
console.log( getCardValue("K♠"));
console.log( getCardValue("A♠"));
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,24 @@ test("should identify right angle (90°)", () => {
// 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 (<90°)", () => {
expect(getAngleType(45)).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 (90°<angle<180°)", () => {
expect(getAngleType(120)).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 (180°<angle<360°)", () => {
expect(getAngleType(270)).toEqual("Reflex angle");
});
Original file line number Diff line number Diff line change
@@ -1,13 +1,123 @@
// This statement loads the isProperFraction function you wrote in the implement directory.
// We will use the same function, but write tests for it using Jest in this file.
const isProperFraction = require("../implement/2-is-proper-fraction");

<<<<<<< HEAD
// Case 1: Proper fraction
// When numerator < denominator, it should return true.
test("should return true for a proper fraction", () => {
=======
// Case 1: Proper Fraction
// Given a numerator smaller than denominator (2/3),
// When the function is called,
// Then it should return true because it's a proper fraction.
test("should return true for a proper fraction (2/3)", () => {
>>>>>>> 52740052fb0ad97a2c7253a04978b14a15b9e763
expect(isProperFraction(2, 3)).toEqual(true);
});

// Case 2: Identify Improper Fractions:
<<<<<<< HEAD
// Case 2: Improper fraction
// When numerator > denominator, it should return false.
test("should return false for an improper fraction", () => {
=======
// Case 2: Improper Fraction
// Given a numerator greater than denominator (5/2),
// When the function is called,
// Then it should return false because it's an improper fraction.
test("should return false for an improper fraction (5/2)", () => {
>>>>>>> 52740052fb0ad97a2c7253a04978b14a15b9e763
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The <<<<<<< HEAD, =======, and >>>>>>> are markers added by Git to show the difference between two versions of a conflicting file.

The difference between the two versions of the conflicting file are indicated by these markers as:


<<<<<<< HEAD

Content from version A

=======

Content from version B

>>>>>>> 52740052fb0ad97a2c7253a04978b14a15b9e763


Note: In your file, the long hexadecimal number following >>>>>>>> is probably the commit SHA of version B.

To resolve the conflict, you will need to manually delete all the unwanted content and the markers in an editor.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@cjyuan, I have delete it

expect(isProperFraction(5, 2)).toEqual(false);
});

<<<<<<< HEAD
// Case 3: Negative proper fraction
// When numerator is negative but |numerator| < |denominator|, it should return true.
test("should return true for a negative proper fraction", () => {
=======
// Case 3: Negative Proper Fraction
// Given a negative proper fraction (-1/2),
// When the function is called,
// Then it should return true because the value is between -1 and 1.
test("should return true for a negative proper fraction (-1/2)", () => {
>>>>>>> 52740052fb0ad97a2c7253a04978b14a15b9e763
expect(isProperFraction(-1, 2)).toEqual(true);
});

<<<<<<< HEAD
// Case 4: Equal numerator and denominator
// When numerator === denominator, it should return false.
test("should return false for equal numerator and denominator", () => {
=======
// Case 4: Equal Numerator and Denominator
// Given a numerator equal to denominator (3/3),
// When the function is called,
// Then it should return false because it's equal to 1 (not proper).
test("should return false for equal numerator and denominator (3/3)", () => {
>>>>>>> 52740052fb0ad97a2c7253a04978b14a15b9e763
expect(isProperFraction(3, 3)).toEqual(false);
});

<<<<<<< HEAD
// Case 5: Zero numerator
// 0 divided by any non-zero denominator is a proper fraction.
test("should return true for zero numerator", () => {
expect(isProperFraction(0, 5)).toEqual(true);
});

// Case 6: Negative denominator
// When denominator is negative, the fraction is still valid, so check absolute values.
test("should return true when denominator is negative but |numerator| < |denominator|", () => {
expect(isProperFraction(2, -3)).toEqual(true);
});

// Case 7: Denominator is zero
// Division by zero is undefined, should return false.
test("should return false when denominator is zero", () => {
expect(isProperFraction(3, 0)).toEqual(false);
});

// Case 3: Identify Negative Fractions:
// Case 8: Both numerator and denominator are negative but |numerator| < |denominator|
// Negative/negative cancels out, still a proper fraction.
test("should return true when both numerator and denominator are negative and |numerator| < |denominator|", () => {
expect(isProperFraction(-3, -7)).toEqual(true);
});

// Case 9: Large numbers
// It should handle large numbers correctly.
test("should return true for large proper fractions", () => {
expect(isProperFraction(999, 1000)).toEqual(true);
});

=======
// Case 5: Negative Improper Fraction
// Given a negative improper fraction (-4/3),
// When the function is called,
// Then it should return false because the absolute value is greater than 1.
test("should return false for a negative improper fraction (-4/3)", () => {
expect(isProperFraction(-4, 3)).toEqual(false);
});

// Case 6: Both Negative (Proper Fraction)
// Given both numerator and denominator negative (-2/-3),
// When the function is called,
// Then it should return true because the value is positive and less than 1.
test("should return true for both negative proper fraction (-2/-3)", () => {
expect(isProperFraction(-2, -3)).toEqual(true);
});

// Case 7: Zero Numerator
// Given a numerator of 0 (0/5),
// When the function is called,
// Then it should return true because 0 is less than any nonzero denominator.
test("should return true for zero numerator (0/5)", () => {
expect(isProperFraction(0, 5)).toEqual(true);
});

// Case 8: Zero Denominator
// Given a denominator of 0 (5/0),
// When the function is called,
// Then it should return false because division by zero is undefined.
test("should return false for zero denominator (5/0)", () => {
expect(isProperFraction(5, 0)).toEqual(false);
});

// Case 4: Identify Equal Numerator and Denominator:
>>>>>>> 52740052fb0ad97a2c7253a04978b14a15b9e763
Loading