/* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 - 2 0 2 0 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense . Ċ Ġ*/ Ċ Ċ package Ġkotlinx . serialization Ċ Ċ import Ġkotlinx . serialization . builtins .* Ċ import Ġkotlinx . serialization . descriptors .* Ċ import Ġkotlin . test .* Ċ Ċ class ĠSerial Descriptor Equality Test Ġ{ ĊĠĠĠ Ġ@ Serializable ĊĠĠĠ Ġclass ĠType Param Used Once < T >( val Ġt : ĠT ) ĊĊĠĠĠ Ġ@ Serializable ĊĠĠĠ Ġ@ Serial Name (" Type Param Used Tw ice ") ĊĠĠĠ Ġclass ĠType Param Used Tw ice < T >( val Ġt : ĠT , Ġval Ġl : ĠList < T >) ĊĊĠĠĠ Ġ@ Serializable ĊĠĠĠ Ġclass ĠType Param In List < T >( val Ġl : ĠList < T >) ĊĊĠĠĠ Ġ@ Serializable ĊĠĠĠ Ġclass ĠRecursive Simple ( val Ġdesc : ĠString , Ġvar Ġnode : ĠRecursive Simple ?) ĊĊĠĠĠ Ġ@ Serializable ĊĠĠĠ Ġclass ĠRecursive < T >( val Ġdesc : ĠT , Ġvar Ġnode : ĠRecursive < T > ?) ĊĊĠĠĠ Ġ@ Serializable ĊĠĠĠ Ġopen Ġclass ĠRecursive Generic < T Ġ: ĠRecursive Generic < T >>() ĊĊĠĠĠ Ġ@ Serializable ĊĠĠĠ Ġclass ĠRecursive Generic Impl ( var Ġother : ĠRecursive Generic < Recursive Generic Impl >? Ġ= Ġnull ) Ġ: ĊĠĠĠĠĠĠĠ ĠRecursive Generic < Recursive Generic Impl >() ĊĊĠĠĠ Ġprivate Ġfun Ġdo Test With ( factory : Ġ( K Serializer <* >, ĠK Serializer <* >) Ġ-> ĠPair < Serial Descriptor , ĠSerial Descriptor >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( a , Ġb ) Ġ= Ġfactory ( Int . serializer (), ĠInt . serializer ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( a , Ġb ) ĊĠĠĠĠĠĠĠ Ġval Ġ( c , Ġd ) Ġ= Ġfactory ( Int . serializer (), ĠString . serializer ()) ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( c , Ġd ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Used Once () Ġ= Ġdo Test With Ġ{ Ġd 1 , Ġd 2 Ġ-> ĊĠĠĠĠĠĠĠ ĠType Param Used Once . serializer ( d 1 ). descriptor Ġto ĠType Param Used Once . serializer ( d 2 ). descriptor ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Used Tw ice () Ġ= Ġdo Test With Ġ{ Ġd 1 , Ġd 2 Ġ-> ĊĠĠĠĠĠĠĠ ĠType Param Used Tw ice . serializer ( d 1 ). descriptor Ġto ĠType Param Used Tw ice . serializer ( d 2 ). descriptor ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Used In List () Ġ= Ġdo Test With Ġ{ Ġd 1 , Ġd 2 Ġ-> ĊĠĠĠĠĠĠĠ ĠType Param In List . serializer ( d 1 ). descriptor Ġto ĠType Param In List . serializer ( d 2 ). descriptor ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Recursive () Ġ= Ġdo Test With Ġ{ Ġd 1 , Ġd 2 Ġ-> ĊĠĠĠĠĠĠĠ ĠRecursive . serializer ( d 1 ). descriptor Ġto ĠRecursive . serializer ( d 2 ). descriptor ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Recursive Simple () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdesc Ġ= ĠRecursive Simple . serializer (). descriptor ĊĠĠĠĠĠĠĠ ĠassertEquals ( desc , Ġdesc ) ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( desc , ĠRecursive . serializer ( String . serializer ()). descriptor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Recursive Generic () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdescriptor 1 Ġ= ĠRecursive Generic . serializer ( Recursive Generic Impl . serializer ()). descriptor ĊĠĠĠĠĠĠĠ Ġval Ġdescriptor 2 Ġ= ĠRecursive Generic . serializer ( Recursive Generic Impl . serializer ()). descriptor ĊĠĠĠĠĠĠĠ Ġval Ġdescriptor 3 Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRecursive Generic . serializer ( Recursive Generic . serializer ( Recursive Generic Impl . serializer ())). descriptor ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( descriptor 1 , Ġdescriptor 3 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( descriptor 1 , Ġdescriptor 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest C ant Be Comp ared To User Descriptor () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtype Param Ġ= ĠInt . serializer (). descriptor ĊĠĠĠĠĠĠĠ Ġval Ġuser Defined With Int Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Class Serial Descriptor (" Type Param Used Tw ice ", Ġtype Param ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement (" t ", Ġtype Param ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement (" l ", Ġlist Serial Descriptor ( type Param )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġgenerated With Int Ġ= ĠType Param Used Tw ice . serializer ( Int . serializer ()). descriptor ĊĠĠĠĠĠĠĠ Ġval Ġgenerated With String Ġ= ĠType Param Used Tw ice . serializer ( String . serializer ()). descriptor ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( generated With Int , Ġuser Defined With Int ) ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( generated With String , Ġuser Defined With Int ) ĊĠĠĠ Ġ} Ċ } Ċ