package Ġcom . ex sil ic ium . script ure . shared . model Ċ Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . Assertions . assert Throws Ċ import Ġjava . text . ParseException Ċ Ċ internal Ġclass ĠBook Deserialization Test Ġ{ ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` Parse Ġinvalid Ġbook Ġname `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThrows ( ParseException :: class . java , Ġ{ ĠBook . parse (" J oh nn y ") Ġ}). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Could Ġnot Ġparse Ġbook Ġname ", Ġit . message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` Parse Ġbook Ġwith Ġperiod `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Book . EX OD US , ĠBook . parse (" Ex .")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` Parse ĠGen esis `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Book . GEN ESIS , ĠBook . parse (" Genesis ")) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Book . GEN ESIS , ĠBook . parse (" Gen ")) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Book . GEN ESIS , ĠBook . parse (" Ge ")) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Book . GEN ESIS , ĠBook . parse (" Gn ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` Parse Ġuppercase Ġbook `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Book . RE VEL ATION , ĠBook . parse (" THE ĠRE VEL ATION ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` Parse Ġbook Ġwith Ġwhitespace `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Book . M ATT HE W , ĠBook . parse (" ĠM att Ġ Ġ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` Verify Ġno Ġduplicate Ġabbre viations `() Ġ{ ĊĠĠĠĠĠĠĠ ĠBook . values (). flatMap Ġ{ Ġit . abbre viations Ġ}. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it , Ġit . distinct ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }