Skip to content

Commit 9771ba6

Browse files
test pass
1 parent f88c295 commit 9771ba6

2 files changed

Lines changed: 68 additions & 1 deletion

File tree

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

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,55 @@ import { getCardValue } from "../implement/3-get-card-value.js";
77

88
test("Valid single-digit card", () => {
99
assert.equal(getCardValue("9♠"), 9);
10+
assert.equal(getCardValue("10♠"), 10);
11+
});
12+
13+
test("Ace card", () => {
14+
assert.equal(getCardValue("A♠"), 11);
15+
assert.equal(getCardValue("A♣"), 11);
16+
assert.equal(getCardValue("A♦"), 11);
17+
});
18+
19+
test("Face card", () => {
20+
assert.equal(getCardValue("J♠"), 10);
1021
});
1122

1223
test("Arbitrary non-card string", () => {
13-
assert.throws(() => getCardValue("invalid"), /Expected a number followed by a suit, but got "invalid"/, "Expected clear error");
24+
assert.throws(
25+
() => getCardValue("invalid"),
26+
/Expected a number followed by a suit, but got invalid/,
27+
"Expected clear error"
28+
);
29+
30+
assert.throws(
31+
() => getCardValue("1♠"),
32+
/Expected a number followed by a suit, but got invalid/,
33+
"Expected clear error"
34+
);
35+
36+
assert.throws(
37+
() => getCardValue("9X"),
38+
/Expected a number followed by a suit, but got invalid/,
39+
"Expected clear error"
40+
);
41+
42+
assert.throws(
43+
() => getCardValue("11♠"),
44+
/Expected a number followed by a suit, but got invalid/,
45+
"Expected clear error"
46+
);
47+
48+
assert.throws(
49+
() => getCardValue("7"),
50+
/Expected a number followed by a suit, but got invalid/,
51+
"Expected clear error"
52+
);
53+
54+
assert.throws(
55+
() => getCardValue(""),
56+
/Expected a number followed by a suit, but got invalid/,
57+
"Expected clear error"
58+
);
1459
});
1560

1661
// TODO: What other invalid card cases can you think of?

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,26 @@
2525

2626
export function getCardValue(card) {
2727
// TODO: Implement this function
28+
const rank = card.slice(0, -1);
29+
const suit = card.slice(-1);
30+
31+
if (suit != "♠" && suit != "♥" && suit != "♦" && suit != "♣") {
32+
throw new Error("Expected a number followed by a suit, but got invalid");
33+
}
34+
if (Number(rank) >= 2 && Number(rank) <= 10) {
35+
return rank;
36+
}
37+
38+
if (card.slice(0, 1) === "A") {
39+
return 11;
40+
}
41+
42+
if (
43+
card.slice(0, 1) === "J" ||
44+
card.slice(0, 1) === "Q" ||
45+
card.slice(0, 1) === "K"
46+
) {
47+
return 10;
48+
}
49+
throw new Error("Expected a number followed by a suit, but got invalid");
2850
}

0 commit comments

Comments
 (0)