/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 2 ĠT ats u ya ĠM aki Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġio . t 2 8 . kotlin ify . parser . json schema Ċ Ċ import Ġcom . google . common . truth . Truth Ċ import Ġkotlinx . serialization . Experimental Serialization Api Ċ import Ġkotlinx . serialization . decode FromString Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġorg . intellij . lang . annotations . Language Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ @ Opt In ( Experimental Serialization Api :: class ) Ċ internal Ġclass ĠDocument Test Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġjson : ĠJson ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġjson Ġ= ĠJson Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġignore Unknown Keys Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpretty Print Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpretty Print Indent Ġ= Ġ" Ġ Ġ" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġdeserialize Ġfrom ĠJSON ĠSchema `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġ// Ġhttps :// json - schema . org / learn / ĊĠĠĠĠĠĠĠ Ġ@ Language (" json ") ĊĠĠĠĠĠĠĠ Ġval Ġstring Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ '$ '} id ": Ġ" https :// example . com / geo graphical - location . schema . json ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ '$ '} schema ": Ġ" https :// json - schema . org / draft / 2 0 2 0 - 1 2 / schema ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" title ": Ġ" Longitude Ġand ĠLat itude ĠValues ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" description ": Ġ" A Ġgeo graphical Ġcoordinate .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" required ": Ġ[ Ġ" latitude ", Ġ" longitude " Ġ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ": Ġ" object ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" properties ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" latitude ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ": Ġ" number ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" minimum ": Ġ- 9 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" maximum ": Ġ 9 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" longitude ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ": Ġ" number ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" minimum ": Ġ- 1 8 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" maximum ": Ġ 1 8 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġ Ġjson . decode FromString < Document >( string ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ Ġwith ( actual ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat (` $ id `). isEqualTo (" https :// example . com / geo graphical - location . schema . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat (` $ schema `). isEqualTo (" https :// json - schema . org / draft / 2 0 2 0 - 1 2 / schema ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( type ). isEqualTo ( DataType . OBJECT ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( title ). isEqualTo (" Longitude Ġand ĠLat itude ĠValues ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( description ). isEqualTo (" A Ġgeo graphical Ġcoordinate .") ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( required ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Size ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontains Exactly (" latitude ", Ġ" longitude ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( properties ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Size ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontains Entry (" latitude ", ĠNumber Definition ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontains Entry (" longitude ", ĠNumber Definition ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ