/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 1 ĠZ ac ĠS we ers Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠ Ġhttps :// 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 Ġdev . z acs we ers . mos h ix . sealed . sample . test Ċ Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġcom . squareup . mos hi . M oshi Ċ import Ġcom . squareup . mos hi . adapter Ċ import Ġcom . squareup . mos hi . kotlin . reflect . Kotlin Json Adapter Factory Ċ import Ġdev . z acs we ers . mos h ix . sealed . reflect . Metadata M oshi Se aled Json Adapter Factory Ċ import Ġdev . z acs we ers . mos h ix . sealed . reflect . M oshi Se aled Json Adapter Factory Ċ import Ġdev . z acs we ers . mos h ix . sealed . sample . Function Spec Ċ import Ġdev . z acs we ers . mos h ix . sealed . sample . Type . Boolean Type Ċ import Ġdev . z acs we ers . mos h ix . sealed . sample . Type . Int Type Ċ import Ġdev . z acs we ers . mos h ix . sealed . sample . Type . Void Type Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . junit . runners . Parameterized Ċ import Ġorg . junit . runners . Parameterized . Parameters Ċ Ċ @ RunWith ( Parameterized :: class ) Ċ class ĠObject Serialization Test ( type : ĠType ) Ġ{ ĊĊĠ Ġenum Ġclass ĠType ( val Ġm oshi : ĠM oshi Ġ= ĠM oshi . Builder (). build ()) Ġ{ ĊĠĠĠ ĠREF LECT ( ĊĠĠĠĠĠ Ġm oshi Ġ= ĠM oshi . Builder () ĊĠĠĠĠĠĠĠ Ġ. add ( M oshi Se aled Json Adapter Factory ()) ĊĠĠĠĠĠĠĠ Ġ. add Last ( Kotlin Json Adapter Factory ()) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ), ĊĠĠĠ ĠMET ADATA _ REF LECT ( ĊĠĠĠĠĠ Ġm oshi Ġ= ĠM oshi . Builder () ĊĠĠĠĠĠĠĠ Ġ. add ( Metadata M oshi Se aled Json Adapter Factory ()) ĊĠĠĠĠĠĠĠ Ġ. add Last ( Kotlin Json Adapter Factory ()) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ), ĊĠĠĠ ĠCODE GEN ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġ@ Parameters ( name Ġ= Ġ"{ 0 }") ĊĠĠĠ Ġfun Ġdata (): ĠCollection < Array <* >> Ġ{ ĊĠĠĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠarrayOf ( Type . REF LECT ), ĊĠĠĠĠĠĠĠ ĠarrayOf ( Type . METADATA _ REF LECT ), ĊĠĠĠĠĠĠĠ ĠarrayOf ( Type . CODE GEN ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġm oshi : ĠM oshi Ġ= Ġtype . mos hi ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġs moke Test () Ġ{ ĊĠĠĠ Ġ// language = json ĊĠĠĠ Ġval Ġjson Ġ= Ġ""" ĊĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠ Ġ" name ": Ġ" t aco Factory ", ĊĠĠĠĠĠĠ Ġ" returnType ": Ġ{ Ġ" type ": Ġ" void " Ġ}, ĊĠĠĠĠĠĠ Ġ" parameters ": Ġ{ ĊĠĠĠĠĠĠĠĠ Ġ" param 1 ": Ġ{ Ġ" type ": Ġ" int " Ġ}, ĊĠĠĠĠĠĠĠĠ Ġ" param 2 ": Ġ{ Ġ" type ": Ġ" boolean " Ġ} ĊĠĠĠĠĠĠ Ġ} ĊĠĠĠĠ Ġ} ĊĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġval Ġfunction Spec Ġ= Ġm oshi . adapter < Function Spec >(). fromJson ( json ) ĊĠĠĠ ĠcheckNotNull ( function Spec ) ĊĠĠĠ ĠassertThat ( function Spec ). isEqualTo ( ĊĠĠĠĠĠ ĠFunction Spec ( ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ" t aco Factory ", ĊĠĠĠĠĠĠĠ ĠreturnType Ġ= ĠVoid Type , ĊĠĠĠĠĠĠĠ Ġparameters Ġ= Ġmap Of (" param 1 " Ġto ĠInt Type , Ġ" param 2 " Ġto ĠBoolean Type ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĠ Ġ} Ċ } Ċ