2222// execute the code to ensure all tests pass.
2323
2424function getCardValue ( card ) {
25- // TODO: Implement this function
25+ const validRank = [
26+ "A" ,
27+ "2" ,
28+ "3" ,
29+ "4" ,
30+ "5" ,
31+ "6" ,
32+ "7" ,
33+ "8" ,
34+ "9" ,
35+ "10" ,
36+ "J" ,
37+ "Q" ,
38+ "K" ,
39+ ] ;
40+ const validSuits = [ "♠" , "♣" , "♦" , "♥" ] ;
41+ let rank = card . slice ( 0 , - 1 ) ;
42+ let suit = card . slice ( - 1 ) ;
43+ if ( ! validSuits . includes ( suit ) ) {
44+ throw new Error ( "Invalid suit" ) ;
45+ }
46+ if ( ! validRank . includes ( rank ) ) {
47+ throw new Error ( "Invalid rank" ) ;
48+ }
49+ if ( rank === "A" ) {
50+ return 11 ;
51+ }
52+ if ( [ "J" , "Q" , "K" ] . includes ( rank ) ) {
53+ return 10 ;
54+ } else {
55+ return Number ( rank ) ;
56+ }
2657}
27-
2858// The line below allows us to load the getCardValue function into tests in other files.
2959// This will be useful in the "rewrite tests with jest" step.
3060module . exports = getCardValue ;
@@ -40,7 +70,13 @@ function assertEquals(actualOutput, targetOutput) {
4070// TODO: Write tests to cover all outcomes, including throwing errors for invalid cards.
4171// Examples:
4272assertEquals ( getCardValue ( "9♠" ) , 9 ) ;
43-
73+ assertEquals ( getCardValue ( "A♠" ) , 11 ) ;
74+ assertEquals ( getCardValue ( "J♣" ) , 10 ) ;
75+ assertEquals ( getCardValue ( "K♦" ) , 10 ) ;
76+ assertEquals ( getCardValue ( "Q♦" ) , 10 ) ;
77+ assertEquals ( getCardValue ( "7♣" ) , 7 ) ;
78+ assertEquals ( getCardValue ( "10♦" ) , 10 ) ;
79+ assertEquals ( getCardValue ( "2♣" ) , 2 ) ;
4480// Handling invalid cards
4581try {
4682 getCardValue ( "invalid" ) ;
5288}
5389
5490// What other invalid card cases can you think of?
91+ try {
92+ getCardValue ( "1♥" ) ;
93+ console . error ( "Error was not thrown for invalid card 😢" ) ;
94+ } catch ( e ) {
95+ console . log ( "Error thrown for invalid card 🎉" ) ;
96+ }
97+ try {
98+ getCardValue ( " " ) ;
99+ console . error ( "Error was not thrown for invalid card 😢" ) ;
100+ } catch ( e ) {
101+ console . log ( "Error thrown for invalid card 🎉" ) ;
102+ }
103+ try {
104+ getCardValue ( "Z♠" ) ;
105+ console . error ( "Error was not thrown for invalid card 😢" ) ;
106+ } catch ( e ) {
107+ console . log ( "Error thrown for invalid card 🎉" ) ;
108+ }
109+ try {
110+ getCardValue ( "G♠" ) ;
111+ console . error ( "Error was not thrown for invalid card 😢" ) ;
112+ } catch ( e ) {
113+ console . log ( "Error thrown for invalid card 🎉" ) ;
114+ }
115+ try {
116+ getCardValue ( "10X" ) ;
117+ console . error ( "Error was not thrown for invalid card 😢" ) ;
118+ } catch ( e ) {
119+ console . log ( "Error thrown for invalid card 🎉" ) ;
120+ }
121+ try {
122+ getCardValue ( "B♠" ) ;
123+ console . error ( "Error was not thrown for invalid card 😢" ) ;
124+ } catch ( e ) {
125+ console . log ( "Error thrown for invalid card 🎉" ) ;
126+ }
127+ try {
128+ getCardValue ( "♠" ) ;
129+ console . error ( "Error was not thrown for invalid card 😢" ) ;
130+ } catch ( e ) {
131+ console . log ( "Error thrown for invalid card 🎉" ) ;
132+ }
133+ try {
134+ getCardValue ( "B♠♠" ) ;
135+ console . error ( "Error was not thrown for invalid card 😢" ) ;
136+ } catch ( e ) {
137+ console . log ( "Error thrown for invalid card 🎉" ) ;
138+ }
0 commit comments