Skip to content

Commit 651191c

Browse files
committed
Check valid card ranks
1 parent fa07e40 commit 651191c

2 files changed

Lines changed: 13 additions & 6 deletions

File tree

‎implement-and-rewrite-tests/implement-tests-with-node-test/3-get-card-value.test.js‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,7 @@ import { getCardValue } from "../implement/3-get-card-value.js";
88
test("Valid single-digit card", () => {
99
assert.equal(getCardValue("9♠"), 9);
1010
});
11-
1211
test("Arbitrary non-card string", () => {
1312
assert.throws(() => getCardValue("invalid"), /Expected a number followed by a suit, but got "invalid"/, "Expected clear error");
1413
});
15-
1614
// TODO: What other invalid card cases can you think of?

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

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,20 @@
2525

2626
export function getCardValue(card) {
2727
// TODO: Implement this function
28-
if (card === "A") {
28+
if (typeof card !== "string") {
29+
throw new Error("Invalid");
30+
}
31+
const rank = card.slice(0, -1);
32+
33+
if (rank === "A") {
2934
return 11;
30-
} else if (card === "J" || card === "Q" || card === "K") {
35+
}
36+
if (rank === "J" || rank === "Q" || rank === "K") {
3137
return 10;
32-
} else {
33-
return Number(card);
3438
}
39+
const value = Number(rank);
40+
if (Number.isInteger(value) && value >= 2 && value <= 10) {
41+
return value;
42+
}
43+
throw new Error(`Expected a number followed by a suit, but got "${card}"`);
3544
}

0 commit comments

Comments
 (0)