/* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 - 2 0 1 9 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense . Ċ Ġ*/ Ċ Ċ package Ġkotlinx . serialization Ċ Ċ import Ġkotlinx . serialization . internal . Int Serializer Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġkotlinx . serialization . test . is Js Ċ import Ġkotlin . reflect . type Of Ċ import Ġkotlin . test .* Ċ Ċ @ Use Experimental ( Implicit Reflection Serializer :: class ) Ċ class ĠSerializer Res olving Test Ġ{ ĊĊĠĠĠ Ġprivate Ġinline Ġfun Ġ< re ified ĠT > Ġassert Serialized WithType ( ĊĠĠĠĠĠĠĠ Ġexpected : ĠString , ĊĠĠĠĠĠĠĠ Ġobj : ĠT , ĊĠĠĠĠĠĠĠ Ġjson : ĠString Format Ġ= ĠJson . un quoted ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġserial Ġ= Ġserializer < T >() ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġjson . stringify ( serial , Ġobj )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest List With Dto Res olving () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsource Ġ= Ġ""" [{" int V ": 4 2 }] """ ĊĠĠĠĠĠĠĠ Ġval Ġserial Ġ= Ġserializer < List < Int Data >>() ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( Int Data ( 4 2 )), ĠJson . parse ( serial , Ġsource )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest List Res olving () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmy Arr Ġ= ĠlistOf (" a ", Ġ" b ", Ġ" c ") ĊĠĠĠĠĠĠĠ Ġassert Serialized WithType ("[ a , b , c ]", Ġmy Arr ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Set Res olving () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmy Set Ġ= Ġset Of (" a ", Ġ" b ", Ġ" c ", Ġ" c ") ĊĠĠĠĠĠĠĠ Ġassert Serialized WithType ("[ a , b , c ]", Ġmy Set ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Map Res olving () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmy Map Ġ= Ġmap Of (" string " Ġto ĠString Data (" foo "), Ġ" string 2 " Ġto ĠString Data (" bar ")) ĊĠĠĠĠĠĠĠ Ġassert Serialized WithType (""" { string :{ data : foo }, string 2 :{ data : bar }} """, Ġmy Map ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Nested List Res olving () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmy List Ġ= ĠlistOf ( listOf ( listOf ( 1 , Ġ 2 , Ġ 3 )), ĠlistOf ()) ĊĠĠĠĠĠĠĠ Ġassert Serialized WithType (" [[ [ 1 , 2 , 3 ]], [] ]", Ġmy List ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġequality Of List And ArrayList () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmy List Ġ= Ġarray ListOf ( 1 , Ġ 2 , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġassert Serialized WithType < ArrayList < Int >> ("[ 1 , 2 , 3 ]", Ġmy List ) ĊĠĠĠĠĠĠĠ Ġassert Serialized WithType < List < Int >> ("[ 1 , 2 , 3 ]", Ġmy List ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġequality Of Project edList s () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmy List Ġ= Ġarray ListOf ( 1 , Ġ 2 , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġassert Serialized WithType < List < Int >> ("[ 1 , 2 , 3 ]", Ġmy List ) ĊĠĠĠĠĠĠĠ Ġassert Serialized WithType < Mutable List < out ĠInt >> ("[ 1 , 2 , 3 ]", Ġmy List ) ĊĠĠĠĠĠĠĠ Ġassert Serialized WithType < ArrayList < in ĠInt >> ("[ 1 , 2 , 3 ]", Ġmy List ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsupport Nullable Types () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmy List : ĠList < Int ?> Ġ= ĠlistOf ( 1 , Ġnull , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġassert Serialized WithType ("[ 1 , null , 3 ]", Ġmy List ) ĊĠĠĠĠĠĠĠ Ġassert Serialized WithType < List < Int ?> ?> ("[ 1 , null , 3 ]", Ġmy List ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġobject Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġb Ġ= ĠString Data (" some Ġstring ") ĊĠĠĠĠĠĠĠ Ġassert Serialized WithType (""" { data :" some Ġstring "} """, Ġb ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġint Resolve () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= ĠtypeOf < Int >() ĊĠĠĠĠĠĠĠ Ġval Ġserial Ġ= Ġserializer ( token ) ĊĠĠĠĠĠĠĠ ĠassertSame ( Int Serializer Ġas ĠK Serializer <* >, Ġserial ) ĊĠĠĠĠĠĠĠ Ġassert Serialized WithType (" 4 2 ", Ġ 4 2 ) ĊĠĠĠ Ġ} Ċ } Ċ