Skip to content

Commit 6f0f79f

Browse files
committed
revised test and function for getCardValue
1 parent 3334102 commit 6f0f79f

3 files changed

Lines changed: 60 additions & 6 deletions

File tree

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

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,31 @@ test("Valid ace card", () => {
1818

1919
test("Arbitrary non-card string", () => {
2020
assert.throws(
21-
() => getCardValue("invalid"),
22-
/Expected a number followed by a suit, but got "invalid"/,
21+
() => getCardValue("10"),
22+
/Expected a number or face followed by a suit, but got "invalid"/,
23+
"Expected clear error"
24+
);
25+
assert.throws(
26+
() => getCardValue("♥"),
27+
/Expected a number or face followed by a suit, but got "invalid"/,
28+
"Expected clear error"
29+
);
30+
assert.throws(
31+
() => getCardValue(""),
32+
/Expected a number or face followed by a suit, but got "invalid"/,
33+
"Expected clear error"
34+
);
35+
assert.throws(
36+
() => getCardValue("♥10"),
37+
/Expected a number or face followed by a suit, but got "invalid"/,
38+
"Expected clear error"
39+
);
40+
});
41+
42+
test("Invalid Rank", () => {
43+
assert.throws(
44+
() => getCardValue("12♥"),
45+
/Valid rank: 2-10, A, J, Q, K only/,
2346
"Expected clear error"
2447
);
2548
});

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

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,16 @@ export function getCardValue(card) {
5151
"K",
5252
].includes(rank);
5353
const validSuit = ["♠", "♥", "♦", "♣"].includes(suit);
54+
const validCard = validRank + validSuit;
5455

55-
if (!validRank || !validSuit || card.length > 3 || card.length < 2) {
56-
throw new Error(`Expected a number followed by a suit, but got "invalid"`);
56+
if (!validCard || !validSuit || card.length > 3 || card.length < 2) {
57+
throw new Error(
58+
`Expected a number or face followed by a suit, but got "invalid"`
59+
);
60+
}
61+
62+
if (!validRank) {
63+
throw new Error(`Valid rank: 2-10, A, J, Q, K only.`);
5764
}
5865

5966
if (rank === "A") {

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

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,32 @@ test(`Should return 10 when given J/Q/K`, () => {
2020
});
2121
// Invalid Cards
2222
test(`Expected a number followed by a suit, but got invalid`, () => {
23-
expect(() => getCardValue("invalid")).toThrow(
24-
`Expected a number followed by a suit, but got "invalid"`
23+
expect(() => getCardValue("10")).toThrow(
24+
`Expected a number or face followed by a suit, but got "invalid"`
25+
);
26+
});
27+
28+
test(`Expected a number followed by a suit, but got invalid`, () => {
29+
expect(() => getCardValue("")).toThrow(
30+
`Expected a number or face followed by a suit, but got "invalid"`
31+
);
32+
});
33+
34+
test(`Expected a number followed by a suit, but got invalid`, () => {
35+
expect(() => getCardValue("♥")).toThrow(
36+
`Expected a number or face followed by a suit, but got "invalid"`
37+
);
38+
});
39+
40+
test(`Expected a number followed by a suit, but got invalid`, () => {
41+
expect(() => getCardValue("♥10")).toThrow(
42+
`Expected a number or face followed by a suit, but got "invalid"`
43+
);
44+
});
45+
46+
test(`Valid rank: 2-10, A, J, Q, K only`, () => {
47+
expect(() => getCardValue("12♥")).toThrow(
48+
`Valid rank: 2-10, A, J, Q, K only`
2549
);
2650
});
2751

0 commit comments

Comments
 (0)