@ file : Suppress (" UN CHECK ED _ CAST ") Ċ Ċ package Ġunittest Ċ Ċ import Ġcom . github . sh yn ix n . block ball . api . business . service . Configuration Service Ċ import Ġcom . github . sh yn ix n . block ball . api . business . service . Logging Service Ċ import Ġcom . github . sh yn ix n . block ball . api . business . service . Yaml Serialization Service Ċ import Ġcom . github . sh yn ix n . block ball . api . business . service . Yaml Service Ċ import Ġcom . github . sh yn ix n . block ball . core . logic . business . service . Logging Util ServiceImpl Ċ import Ġcom . github . sh yn ix n . block ball . core . logic . business . service . Yaml Serialization ServiceImpl Ċ import Ġcom . github . sh yn ix n . block ball . core . logic . persistence . entity . Arena Entity Ċ import Ġcom . github . sh yn ix n . block ball . core . logic . persistence . repository . Arena File Repository Ċ import Ġorg . apache . commons . io . FileUtils Ċ import Ġorg . junit . jupiter . api . Assertions Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . yaml . s na key aml . Dump er Options Ċ import Ġorg . yaml . s na key aml . Yaml Ċ import Ġjava . io .* Ċ import Ġjava . nio . charset . StandardCharsets Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Path Ċ import Ġjava . nio . file . Paths Ċ import Ġjava . util . logging . Logger Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠSh yn ix n Ġ 2 0 1 9 . Ċ Ġ* Ġ< p > Ċ Ġ* ĠVersion Ġ 1 . 2 Ċ Ġ* Ġ< p > Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ġ< p > Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 Ġby ĠSh yn ix n Ċ Ġ* Ġ< p > Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ġ< p > Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ġ< p > Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ class ĠA rena File Repository Test Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGiven ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġmultiple Ġarena Ġfiles ĊĠĠĠĠ Ġ* ĠWhen ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġget all Ġis Ġcalled ĊĠĠĠĠ Ġ* ĠThen ĊĠĠĠĠ Ġ* ĠĠĠĠ Ġthe Ġaren as Ġshould Ġbe Ġreturned Ġin Ġcorrect Ġorder . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠgetAll _ Multiple A ren as _ ShouldBe Correct ly Load able () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġval Ġclass UnderTest Ġ= Ġcreate With Dependencies () ĊĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġval Ġarena 1 Ġ= ĠA rena Entity () ĊĠĠĠĠĠĠĠ Ġarena 1 . name Ġ= Ġ" 1 0 " ĊĠĠĠĠĠĠĠ Ġclass UnderTest . save ( arena 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġarena 2 Ġ= ĠA rena Entity () ĊĠĠĠĠĠĠĠ Ġarena 2 . name Ġ= Ġ" 1 " ĊĠĠĠĠĠĠĠ Ġclass UnderTest . save ( arena 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġarena 3 Ġ= ĠA rena Entity () ĊĠĠĠĠĠĠĠ Ġarena 3 . name Ġ= Ġ" 2 " ĊĠĠĠĠĠĠĠ Ġclass UnderTest . save ( arena 3 ) ĊĠĠĠĠĠĠĠ Ġval Ġaren as Ġ= Ġclass UnderTest . getAll () ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( 3 , Ġaren as . size ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals (" 1 ", Ġaren as [ 0 ]. name ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals (" 2 ", Ġaren as [ 1 ]. name ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals (" 1 0 ", Ġaren as [ 2 ]. name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGiven ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġa Ġnew Ġarena ĊĠĠĠĠ Ġ* ĠWhen ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġsave Ġis Ġcalled ĊĠĠĠĠ Ġ* ĠThen ĊĠĠĠĠ Ġ* ĠĠĠĠ Ġan Ġfile Ġwith Ġthe Ġcorrect Ġamount Ġof Ġbytes Ġshould Ġbe Ġcreated . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsave _ New Arena Entity _ ShouldBe Correct ly Saved () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġval Ġarena Ġ= ĠA rena Entity () ĊĠĠĠĠĠĠĠ Ġarena . name Ġ= Ġ" 1 " ĊĠĠĠĠĠĠĠ Ġval Ġclass UnderTest Ġ= Ġcreate With Dependencies () ĊĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġclass UnderTest . save ( arena ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Data Length Ġ= ĠFileUtils . readFile ToString ( File (" build / repository - test / arena / arena _ 1 . yml "), Ġ" UTF - 8 ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( 9 5 4 2 , Ġactual Data Length . length ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGiven ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġan Ġexisting Ġarena Ġfile ĊĠĠĠĠ Ġ* ĠWhen ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġdelete Ġis Ġcalled ĊĠĠĠĠ Ġ* ĠThen ĊĠĠĠĠ Ġ* ĠĠĠĠ Ġthe Ġfile Ġshould Ġbe Ġdeleted . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdelete _ Existing Arena File _ ShouldBe Deleted () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġval Ġclass UnderTest Ġ= Ġcreate With Dependencies () ĊĠĠĠĠĠĠĠ Ġval Ġarena Ġ= ĠA rena Entity () ĊĠĠĠĠĠĠĠ Ġarena . name Ġ= Ġ" 1 " ĊĠĠĠĠĠĠĠ Ġclass UnderTest . save ( arena ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġval Ġfile Exist ed Ġ= ĠFile (" build / repository - test / arena / arena _ 1 . yml "). exists () ĊĠĠĠĠĠĠĠ Ġclass UnderTest . delete ( arena ) ĊĠĠĠĠĠĠĠ Ġval Ġfile Exists Now Ġ= ĠFile (" build / repository - test / arena / arena _ 1 . yml "). exists () ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ ĠAssertions . assertTrue ( file Exist ed ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertFalse ( file Exists Now ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate With Dependencies ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration Service : ĠConfiguration Service Ġ= ĠMock ed Configuration Service (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġyaml Serialization Service : ĠYaml Serialization Service Ġ= ĠYaml Serialization ServiceImpl (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogging Service : ĠLogging Service Ġ= ĠLogging Util ServiceImpl ( Logger . get Anonymous Logger ()) ĊĠĠĠĠĠĠĠ Ġ): ĠA rena File Repository Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠA rena File Repository ( configuration Service , Ġyaml Serialization Service , ĠMock ed Yaml Service (), Ġlogging Service ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠMock ed Yaml Service Ġ: ĠYaml Service Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠWrites Ġthe Ġgiven Ġ[ content ] Ġto Ġthe Ġgiven Ġ[ path ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġwrite ( path : ĠPath , Ġcontent : ĠMap < String , ĠAny ?> ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= ĠDump er Options () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptions . default Flow Style Ġ= ĠDump er Options . Flow Style . BLOCK ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptions . is Pretty Flow Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġyaml Ġ= ĠYaml ( options ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠOutputStream Writer ( File OutputStream ( path . to File ()), ĠStandard Charsets . UTF _ 8 ). use Ġ{ Ġfw Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyaml . dump ( content , Ġfw ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReads Ġthe Ġcontent Ġfrom Ġthe Ġgiven Ġ[ path ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġread ( path : ĠPath ): ĠMap < String , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠInputStreamReader ( FileInputStream ( path . to File ()), ĠStandard Charsets . UTF _ 8 ). use Ġ{ Ġfr Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġyaml Ġ= ĠYaml () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyaml . load ( fr ) Ġas ĠMap < String , ĠAny ?> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠMock ed Configuration Service Ġ: ĠConfiguration Service Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠOpen s Ġan ĠinputStream Ġto Ġthe Ġgiven Ġresource Ġname . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġopen Resource ( name : ĠString ): ĠInputStream Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠChecks Ġif Ġthe Ġgiven Ġ[ path ] Ġcontains Ġa Ġvalue . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcontains Value ( path : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRe loads Ġthe Ġconfig . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġreload () Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġpath : ĠPath Ġ= ĠPaths . get (" build / repository - test ") ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Files . exists ( path )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFileUtils . delete Directory ( path . to File ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . create Directories ( path ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGets Ġthe Ġpath Ġto Ġthe Ġfolder Ġwhere Ġthe Ġapplication Ġis Ġallowed Ġto Ġstore ĊĠĠĠĠĠĠĠĠ Ġ* Ġsave Ġdata . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġapplication Dir : ĠPath ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpath ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠT ries Ġto Ġload Ġthe Ġconfig Ġvalue Ġfrom Ġthe Ġgiven Ġ[ path ]. ĊĠĠĠĠĠĠĠĠ Ġ* ĠThrows Ġa Ġ[ IllegalArgumentException ] Ġif Ġthe Ġpath Ġcould Ġnot Ġbe Ġcorrectly ĊĠĠĠĠĠĠĠĠ Ġ* Ġloaded . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< C > Ġfind Value ( path : ĠString ): ĠC Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ