/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠGe orge ĠGold berg . Ċ Ġ* Ċ Ġ* Ġ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 Ġcom . gr undle b org . k son . parser Ċ Ċ import Ġcom . gr undle b org . k son . Json Parser Ċ import Ġcom . gr undle b org . k son . JsonValue Ċ import Ġorg . assertj . core . api . Assertions Ċ import Ġorg . junit . Test Ċ import Ġjava . io . String Reader Ċ Ċ class ĠWh itespace Tests Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` no Ġwhitespace `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġ""" {" string Key ":" stringValue "," int Key ": 1 2 3 4 5 ," bool Key ": false ," null Key ": null ," list Key ":[ 1 , 2 , 3 , 4 ]} """ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= ĠJson Parser ( String Reader ( input )) ĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= Ġparser . parse () ĊĊĠĠĠĠĠĠĠ Ġval Ġtop Level Object Ġ= Ġ( output . value Ġas ĠMap < String , ĠJson Value >) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( top Level Object ). isNotNull ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( top Level Object . size ). isEqualTo ( 5 ) ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( top Level Object . get (" string Key ") !!. value Ġas ĠString Ġ== Ġ" stringValue ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( top Level Object . get (" int Key ") !!. value Ġas ĠInt Ġ== Ġ 1 2 3 4 5 ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( top Level Object . get (" bool Key ") !!. value Ġas ĠBoolean Ġ== Ġfalse ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( top Level Object . get (" null Key ") !!. value Ġ== Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġ( top Level Object . get (" list Key ") !!. value Ġas ĠList < JsonValue >) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( list ). isNotNull ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( list . size ). isEqualTo ( 4 ) ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( list . get ( 0 ). value Ġas ĠInt Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( list . get ( 1 ). value Ġas ĠInt Ġ== Ġ 2 ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( list . get ( 2 ). value Ġas ĠInt Ġ== Ġ 3 ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( list . get ( 3 ). value Ġas ĠInt Ġ== Ġ 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` typ ical Ġspaces `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġ""" {" string Key ": Ġ" stringValue ", Ġ" int Key ": Ġ 1 2 3 4 5 , Ġ" bool Key ": Ġfalse , Ġ" null Key ": Ġnull , Ġ" list Key ": Ġ[ 1 , Ġ 2 , Ġ 3 , Ġ 4 ]} """ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= ĠJson Parser ( String Reader ( input )) ĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= Ġparser . parse () ĊĊĠĠĠĠĠĠĠ Ġval Ġtop Level Object Ġ= Ġ( output . value Ġas ĠMap < String , ĠJson Value >) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( top Level Object ). isNotNull ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( top Level Object . size ). isEqualTo ( 5 ) ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( top Level Object . get (" string Key ") !!. value Ġas ĠString Ġ== Ġ" stringValue ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( top Level Object . get (" int Key ") !!. value Ġas ĠInt Ġ== Ġ 1 2 3 4 5 ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( top Level Object . get (" bool Key ") !!. value Ġas ĠBoolean Ġ== Ġfalse ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( top Level Object . get (" null Key ") !!. value Ġ== Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġ( top Level Object . get (" list Key ") !!. value Ġas ĠList < JsonValue >) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( list ). isNotNull ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( list . size ). isEqualTo ( 4 ) ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( list . get ( 0 ). value Ġas ĠInt Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( list . get ( 1 ). value Ġas ĠInt Ġ== Ġ 2 ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( list . get ( 2 ). value Ġas ĠInt Ġ== Ġ 3 ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( list . get ( 3 ). value Ġas ĠInt Ġ== Ġ 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` spaces Ġall Ġover Ġthe Ġplace `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġ""" Ġ Ġ{ Ġ" string Key " Ġ Ġ: Ġ" stringValue " Ġ, Ġ" int Key " Ġ Ġ: Ġ 1 2 3 4 5 Ġ, Ġ" bool Key " Ġ: Ġfalse ĠĠ Ġ, Ġ" null Key " Ġ: Ġnull Ġ Ġ, Ġ" list Key " Ġ: ĠĠ Ġ[ Ġ 1 ĠĠ Ġ, ĠĠ 2 Ġ, ĠĠ 3 Ġ, Ġ 4 Ġ] ĠĠ Ġ} Ġ Ġ""" ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= ĠJson Parser ( String Reader ( input )) ĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= Ġparser . parse () ĊĊĠĠĠĠĠĠĠ Ġval Ġtop Level Object Ġ= Ġ( output . value Ġas ĠMap < String , ĠJson Value >) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( top Level Object ). isNotNull ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( top Level Object . size ). isEqualTo ( 5 ) ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( top Level Object . get (" string Key ") !!. value Ġas ĠString Ġ== Ġ" stringValue ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( top Level Object . get (" int Key ") !!. value Ġas ĠInt Ġ== Ġ 1 2 3 4 5 ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( top Level Object . get (" bool Key ") !!. value Ġas ĠBoolean Ġ== Ġfalse ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( top Level Object . get (" null Key ") !!. value Ġ== Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġ( top Level Object . get (" list Key ") !!. value Ġas ĠList < JsonValue >) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( list ). isNotNull ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( list . size ). isEqualTo ( 4 ) ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( list . get ( 0 ). value Ġas ĠInt Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( list . get ( 1 ). value Ġas ĠInt Ġ== Ġ 2 ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( list . get ( 2 ). value Ġas ĠInt Ġ== Ġ 3 ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( list . get ( 3 ). value Ġas ĠInt Ġ== Ġ 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` other Ġwhitespace Ġcharacters `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġ""" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġ" string Key " ĠĠĠĠĠĠĠĠ Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" stringValue " Ġ, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" int Key " Ġ Ġ: Ġ 1 2 3 4 5 Ġ, Ġ" bool Key " Ġ: Ġfalse ĠĠ Ġ, Ġ" null Key " Ġ: Ġnull Ġ Ġ, ĠĠĠĠ Ġ" list Key " Ġ: ĠĠ Ġ[ ĠĠĠĠĠ 1 ĠĠ Ġ, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ, Ġ 4 Ġ] ĠĠ Ġ} Ġ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. trim Indent () ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= ĠJson Parser ( String Reader ( input )) ĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= Ġparser . parse () ĊĊĠĠĠĠĠĠĠ Ġval Ġtop Level Object Ġ= Ġ( output . value Ġas ĠMap < String , ĠJson Value >) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( top Level Object ). isNotNull ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( top Level Object . size ). isEqualTo ( 5 ) ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( top Level Object . get (" string Key ") !!. value Ġas ĠString Ġ== Ġ" stringValue ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( top Level Object . get (" int Key ") !!. value Ġas ĠInt Ġ== Ġ 1 2 3 4 5 ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( top Level Object . get (" bool Key ") !!. value Ġas ĠBoolean Ġ== Ġfalse ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( top Level Object . get (" null Key ") !!. value Ġ== Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġ( top Level Object . get (" list Key ") !!. value Ġas ĠList < JsonValue >) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( list ). isNotNull ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( list . size ). isEqualTo ( 4 ) ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( list . get ( 0 ). value Ġas ĠInt Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( list . get ( 1 ). value Ġas ĠInt Ġ== Ġ 2 ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( list . get ( 2 ). value Ġas ĠInt Ġ== Ġ 3 ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( list . get ( 3 ). value Ġas ĠInt Ġ== Ġ 4 ) ĊĠĠĠ Ġ} Ċ }