package Ġcom . nib ado . cards . game . black jack Ċ Ċ import Ġcom . nib ado . cards . Card Ċ import Ġcom . nib ado . cards . Hand Ċ import Ġcom . nib ado . cards . Rank Ċ import Ġcom . nib ado . cards . Suit Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . jupiter . api . Dynamic Test Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . Test Factory Ċ Ċ internal Ġclass ĠBlack jack Hand Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` An ĠA ce Ġwith ĠJack , ĠQue en Ġor ĠKind Ġshould Ġbe Ġblack jack `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġa ces Ġ= ĠS uit . values (). map Ġ{ Ġsuit Ġ-> ĠCard ( Rank . ACE , Ġsuit ) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġface Cards Ġ= ĠS uit . values (). flatMap Ġ{ Ġsuit Ġ-> ĠRank . face R anks . map Ġ{ Ġrank Ġ-> ĠCard ( rank , Ġsuit ) Ġ} Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor ( ace Ġin Ġa ces ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( rank Ġin Ġface Cards ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhand Ġ= ĠBlack jack Hand ( ace , Ġrank ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( hand . is Black Jack ()). isTrue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( hand . score ()). isEqualTo ( 2 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Factory ĊĠĠĠ Ġfun Ġ` Should Ġcalculate Ġscores Ġcorrectly `() Ġ: ĠCollection < Dynamic Test > Ġ= ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ac , Kc " Ġto Ġ 2 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ac , As , Kc " Ġto Ġ 1 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 8 c , Ac , As , Kc " Ġto Ġ 2 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH BJ Ġto Ġ 2 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH 4 Ġto Ġ 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH 2 1 Ġto Ġ 2 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH 2 0 Ġto Ġ 2 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH 2 5 Ġto Ġ 2 5 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠ Ġ. map Ġ{ Ġ( hand , Ġscore ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDynamic Test . dynamic Test ("$ hand Ġshould Ġscore Ġ$ score ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( hand . to Hand (). score ()). isEqualTo ( score ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Factory ĊĠĠĠ Ġfun Ġ` Should Ġcalculate Ġb ust s Ġcorrectly `() Ġ: ĠCollection < Dynamic Test > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ac , Kc , Ks , 2 s ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ac , As , Kc , Ks ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 8 c , Ac , As , Kc , 2 s ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH 2 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġhand Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDynamic Test . dynamic Test ("$ hand Ġshould Ġb ust ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( hand . to Hand (). is B ust ()). isTrue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Factory ĊĠĠĠ Ġfun Ġ` Should Ġcompare Ġcorrectly `() Ġ: ĠCollection < Dynamic Test > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Win , ĠLoss ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH BJ Ġto ĠH 2 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH 2 0 Ġto ĠH 2 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH 4 Ġto ĠH 2 5 , ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH BJ Ġto ĠH 2 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH BJ Ġto ĠH 2 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH BJ Ġto ĠH 4 , ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH 2 1 Ġto ĠH 2 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH 2 0 Ġto ĠH 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ( win , Ġloss ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDynamic Test . dynamic Test ("$ win Ġshould Ġwin Ġfrom Ġ$ loss ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwin Hand Ġ= Ġwin . to Hand () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġloss Hand Ġ= Ġloss . to Hand () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( win Hand ). is GreaterThan ( loss Hand ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( loss Hand ). is LessThan ( win Hand ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Factory ĊĠĠĠ Ġfun Ġ` Should Ġcompare Ġt ies Ġcorrectly `() Ġ: ĠCollection < Dynamic Test > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( HB J , ĠH 2 1 , ĠH 2 0 , ĠH 4 , ĠH 2 5 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġhand Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDynamic Test . dynamic Test ("$ hand Ġshould Ġtie Ġwith Ġitself ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhand Ġ= Ġhand . to Hand () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( hand . compareTo ( hand )). is Zero () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠH BJ Ġ= Ġ" Ac , Kc " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠH 2 1 Ġ= Ġ" Kc , 9 c , 2 c " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠH 2 0 Ġ= Ġ" Kc , Kh " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠH 4 Ġ= Ġ" 2 c , 2 h " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠH 2 5 Ġ= Ġ" Kc , Kh , 5 c " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠString . to Hand () Ġ= ĠBlack jack Hand ( Hand . of ( this )) Ċ } Ċ