99// just make one change at a time -- don't rush -- programmers are deep and careful thinkers
1010const assert = require ( "assert" ) ;
1111function getCardValue ( card ) {
12+ if ( ! / [ ♠ ♣ ♦ ♥ ] $ / . test ( card ) ) {
13+ throw new Error ( "Invalid card" )
14+ }
1215 let rank = card . slice ( 0 , - 1 )
1316 if ( rank === "A" ) {
1417 return 11 ;
@@ -19,7 +22,7 @@ function getCardValue(card) {
1922 if ( / ^ ( 1 0 | J | Q | K ) $ / . test ( rank ) ) {
2023 return 10
2124 }
22- throw new Error ( "Invalid card" ) ;
25+ throw new Error ( "Invalid card rank " ) ;
2326}
2427
2528// The line below allows us to load the getCardValue function into tests in other files.
@@ -74,6 +77,7 @@ assertEquals(aceOfSpades1, 11);
7477// Then it should throw an error indicating "Invalid card rank."
7578
7679
77- assert . throws ( ( ) => getCardValue ( "L♠" ) , Error , / I n v a l i d c a r d / ) ;
78- assert . throws ( ( ) => getCardValue ( ) , Error , / I n v a l i d c a r d / ) ;
79- assert . throws ( ( ) => getCardValue ( [ "A♠" ] ) , Error , / I n v a l i d c a r d / ) ;
80+ assert . throws ( ( ) => getCardValue ( "L♠" ) , Error , / I n v a l i d c a r d r a n k / ) ;
81+ assert . throws ( ( ) => getCardValue ( ) , Error , / I n v a l i d c a r d r a n k / ) ;
82+ assert . throws ( ( ) => getCardValue ( [ "A♠" ] ) , Error , / I n v a l i d c a r d r a n k / ) ;
83+ assert . throws ( ( ) => getCardValue ( "A2" ) , Error , / I n v a l i d c a r d / ) ;
0 commit comments