Ċ import Ġorg . hyper skill . h st est . testcase . Check Result Ċ Ċ private Ġval Ġall Letters Ġ= Ġ( (' a ' .. ' z ') Ġ+ Ġ(' A ' .. ' Z ')). join ToString ("") Ċ Ċ class ĠTask 4 Test Ġ: ĠGenerator Test < Input Cl ue >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġgenerate () Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Case (" I an ĠOne \ n VIP ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhint Ġ= Ġ" This Ġtest Ġcorresponds Ġto Ġthe Ġexample Ġ# 1 ."), ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Case (" A Ġb \ n long Ġparticipant ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhint Ġ= Ġ" This Ġtest Ġcorresponds Ġto Ġthe Ġexample Ġ# 2 ."), ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Case (" Bill ĠG ates \ n VIP "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Case (" Tom ĠSmith \ n Worker "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Case (" Mr ĠAn on im ous \ n Participant "), ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Case (" X ĠY \ n Ab cd Ab cd Ab cd Ab cd ", Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" This Ġtest Ġchecks Ġa Ġlong Ġstatus Ġwith Ġeven Ġlength ."), ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Case (" X ĠY \ n Ab cd Ab cd Ab cd Ab cd A ", Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" This Ġtest Ġchecks Ġa Ġlong Ġstatus Ġwith Ġun even Ġlength ."), ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Case (" X ĠY \ n Status Ġ Ġwith Ġspaces ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhint Ġ= Ġ" Status Ġshould Ġbe Ġprinted Ġwith Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" the Ġsame Ġspaces Ġas Ġoriginal , Ġbut Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" name Ġand Ġs urname Ġshouldn 't Ġcontain Ġspaces ."), ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Case ("$ all Letters ĠI van \ n Hello ", Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhint Ġ= Ġ" This Ġtest Ġchecks Ġall Ġpossible Ġletters Ġfor Ġname ."), ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Case (" I van ĠI van \ n $ all Letters ", Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhint Ġ= Ġ" This Ġtest Ġchecks Ġall Ġpossible Ġletters Ġfor Ġstatus .") ĊĠĠĠ Ġ) ĊĊĊĠĠĠ Ġprivate Ġinline Ġfun Ġcheck Badge Border ( badge : ĠString , Ġon Failure : Ġ( msg : ĠString ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlines Ġ= Ġbadge . split ("\ n ") ĊĊĠĠĠĠĠĠĠ Ġif Ġ( lines . map Ġ{ Ġit . length Ġ}. toSet (). size Ġ!= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Failure (" Your Ġborder Ġis Ġnot Ġrect angular .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( lines . size Ġ< Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Failure (" Your Ġborder Ġis Ġnot Ġrect angular .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( lines . first (). any Ġ{ Ġit Ġ!= Ġ' 8 ' Ġ} Ġ|| Ġlines . last () Ġ!= Ġlines . first ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Failure (" Your Ġtop Ġand Ġbottom Ġedges Ġdon 't Ġconsist Ġof Ġ' 8 '. ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! lines . drop ( 1 ). drop Last ( 1 ). all Ġ{ Ġit . startsWith (" 8 8 Ġ Ġ") Ġ&& Ġit . endsWith (" ĠĠ 8 8 ") Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Failure (" Your Ġleft Ġand Ġright Ġedges Ġdon 't Ġconsist Ġof Ġ\" 8 8 \" Ġwith Ġtwo Ġspaces Ġpadding .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠCompare Ġheight , Ġindentation Ġand Ġline Ġcontents . Ġ*/ ĊĠĠĠ Ġprivate Ġinline Ġfun Ġcompare Bad ges ( user : ĠString , Ġauthor : ĠString , Ġon Failure : Ġ( msg : ĠString ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Lines Ġ= Ġuser . split ("\ n ") ĊĠĠĠĠĠĠĠ Ġval Ġauthor Lines Ġ= Ġauthor . split ("\ n ") ĊĊĠĠĠĠĠĠĠ Ġif Ġ( user Lines . size Ġ!= Ġauthor Lines . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Failure (" Signature Ġheight Ġis Ġincorrect : Ġ${ user Lines . size } Ġlines Ġinstead Ġof Ġ${ author Lines . size }. ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġuser Lines . zip ( author Lines ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġ( user Str , Ġauthor Str ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Str . trim (' 8 ', Ġ' Ġ') Ġ!= Ġauthor Str . trim (' 8 ', Ġ' Ġ')) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Failure (" Some Ġline Ġin Ġyour Ġsignature Ġis Ġincorrect .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( user Str Ġ!= Ġauthor Str ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Failure (" Some Ġindentation Ġin Ġyour Ġsignature Ġis Ġincorrect .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcheck ( reply : ĠString , Ġcl ue : ĠInput Cl ue ): ĠCheck Result Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbadge Start Ġ= Ġreply . indexOf (' 8 ') ĊĠĠĠĠĠĠĠ Ġif Ġ( badge Start Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCheck Result . wrong (" Your Ġoutput Ġdoesn 't Ġcontain Ġa Ġsignature , Ġwrapped Ġin Ġ' 8 ' Ġsymbols .") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġuser Badge Ġ= Ġreply ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. substring ( badge Start ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. trim ('\ n ', Ġ' Ġ') ĊĊĠĠĠĠĠĠĠ Ġcheck Badge Border ( user Badge ) Ġ{ ĠerrorMessage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCheck Result . wrong ( errorMessage ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġbadge Ġ= Ġauthors ( cl ue . input ) ĊĊĠĠĠĠĠĠĠ Ġcompare Bad ges ( user Badge , Ġbadge ) Ġ{ ĠerrorMessage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( name , Ġstatus ) Ġ= Ġcl ue . input . split ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcl ue . to Failure (" Wrong Ġoutput Ġfor Ġinput Ġlines Ġ\"$ name \" Ġand Ġ\"$ status \" . Ġ$ errorMessage ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠCheck Result . correct () ĊĠĠĠ Ġ} Ċ } Ċ