/* Ċ Ġ* Ġ@ (# ) ĠJSON Deserializer Co Pipeline Test . kt Ċ Ġ* Ċ Ġ* Ġjson - co - stream ĠKotlin Ġcoroutine ĠJSON ĠStreams Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 ĠPeter ĠWall Ċ Ġ* Ċ Ġ* Ġ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 : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ*/ Ċ Ċ package Ġnet . p wall . json . stream . test Ċ Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . expect Ċ import Ġkotlinx . coroutines . run Blocking Ċ Ċ import Ġnet . p wall . json . Dummy 1 Ċ import Ġnet . p wall . json . JSON Int Ċ import Ġnet . p wall . json . JSONObject Ċ import Ġnet . p wall . json . JSON String Ċ import Ġnet . p wall . json . stream . JSON Deserializer Co Pipeline Ċ Ċ class ĠJSON Deserializer Co Pipeline Test Ġ{ ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` should Ġdeserialize Ġstrings `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpipeline Ġ= ĠJSON Deserializer Co Pipeline . create ( List Co Accept or < String >()) ĊĠĠĠĠĠĠĠ Ġpipeline . accept ( JSON String (" alpha ")) ĊĠĠĠĠĠĠĠ Ġpipeline . accept ( JSON String (" beta ")) ĊĠĠĠĠĠĠĠ Ġpipeline . accept ( JSON String (" gamma ")) ĊĠĠĠĠĠĠĠ Ġpipeline . close () ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġpipeline . result ĊĠĠĠĠĠĠĠ Ġexpect ( 3 ) Ġ{ Ġresult . size Ġ} ĊĠĠĠĠĠĠĠ Ġexpect (" alpha ") Ġ{ Ġresult [ 0 ] Ġ} ĊĠĠĠĠĠĠĠ Ġexpect (" beta ") Ġ{ Ġresult [ 1 ] Ġ} ĊĠĠĠĠĠĠĠ Ġexpect (" gamma ") Ġ{ Ġresult [ 2 ] Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` should Ġdeserialize Ġintegers `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpipeline Ġ= ĠJSON Deserializer Co Pipeline . create ( List Co Accept or < Int >()) ĊĠĠĠĠĠĠĠ Ġpipeline . accept ( JSON Int ( 1 2 3 )) ĊĠĠĠĠĠĠĠ Ġpipeline . accept ( JSON Int ( 4 5 6 )) ĊĠĠĠĠĠĠĠ Ġpipeline . close () ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġpipeline . result ĊĠĠĠĠĠĠĠ Ġexpect ( 2 ) Ġ{ Ġresult . size Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( 1 2 3 ) Ġ{ Ġresult [ 0 ] Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( 4 5 6 ) Ġ{ Ġresult [ 1 ] Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` should Ġdeserialize Ġobjects `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpipeline Ġ= ĠJSON Deserializer Co Pipeline . create ( List Co Accept or < Dummy 1 >()) ĊĠĠĠĠĠĠĠ Ġpipeline . accept ( JSONObject (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Value (" field 1 ", Ġ" abcdef ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Value (" field 2 ", Ġ 1 2 3 ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġpipeline . accept ( JSONObject (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Value (" field 1 ", Ġ" gh ijkl ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Value (" field 2 ", Ġ 4 5 6 ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġpipeline . close () ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġpipeline . result ĊĠĠĠĠĠĠĠ Ġexpect ( 2 ) Ġ{ Ġresult . size Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( Dummy 1 (" abcdef ", Ġ 1 2 3 )) Ġ{ Ġresult [ 0 ] Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( Dummy 1 (" gh ijkl ", Ġ 4 5 6 )) Ġ{ Ġresult [ 1 ] Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ