Skip to content

Commit 68d4ef6

Browse files
committed
answer get-card-value questions
1 parent 51a8574 commit 68d4ef6

File tree

1 file changed

+32
-1
lines changed

1 file changed

+32
-1
lines changed

Sprint-3/1-implement-and-rewrite-tests/implement/3-get-card-value.js

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,17 @@
88
// write one test at a time, and make it pass, build your solution up methodically
99
// just make one change at a time -- don't rush -- programmers are deep and careful thinkers
1010
function getCardValue(card) {
11+
let rank = card.slice(0, -1);
1112
if (rank === "A") {
1213
return 11;
1314
}
15+
if (rank >= "2" && rank <= "9") {
16+
return Number(rank);
17+
}
18+
if (rank === "J" || rank === "Q" || rank === "K") {
19+
return 10;
20+
}
21+
throw new Error("Invalid card rank");
1422
}
1523

1624
// The line below allows us to load the getCardValue function into tests in other files.
@@ -39,19 +47,42 @@ assertEquals(aceofSpades, 11);
3947
// When the function is called with such a card,
4048
// Then it should return the numeric value corresponding to the rank (e.g., "5" should return 5).
4149
const fiveofHearts = getCardValue("5♥");
42-
// ====> write your test here, and then add a line to pass the test in the function above
50+
assertEquals(fiveofHearts, 5);
4351

4452
// Handle Face Cards (J, Q, K):
4553
// Given a card with a rank of "10," "J," "Q," or "K",
4654
// When the function is called with such a card,
4755
// Then it should return the value 10, as these cards are worth 10 points each in blackjack.
56+
const ten = getCardValue("10");
57+
assertEquals(ten, 10);
58+
59+
const jack = getCardValue("J♦");
60+
assertEquals(jack, 10);
61+
62+
const queen = getCardValue("Q♠");
63+
assertEquals(queen, 10);
64+
65+
const king = getCardValue("K♥");
66+
assertEquals(king, 10);
4867

4968
// Handle Ace (A):
5069
// Given a card with a rank of "A",
5170
// When the function is called with an Ace,
5271
// Then it should, by default, assume the Ace is worth 11 points, which is a common rule in blackjack.
5372

73+
const ace = getCardValue("A♥");
74+
assertEquals(ace, 11);
75+
5476
// Handle Invalid Cards:
5577
// Given a card with an invalid rank (neither a number nor a recognized face card),
5678
// When the function is called with such a card,
5779
// Then it should throw an error indicating "Invalid card rank."
80+
81+
try {
82+
getCardValue("Z♥");
83+
} catch (e) {
84+
console.assert(
85+
e.message === "Invalid card rank",
86+
`Expected "Invalid card rank" but got "${e.message}"`
87+
);
88+
}

0 commit comments

Comments
 (0)