package Ġdatab ind ing Ċ Ċ import Ġkotlinx . serialization . Serializable Ċ import Ġkotlinx . serialization . decode FromString Ċ import Ġkotlinx . serialization . encode ToString Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertNull Ċ Ċ class ĠBind able Test Ġ{ ĊĠĠĠ Ġ@ Serializable ĊĠĠĠ Ġclass ĠGu ine a P ig ( val Ġuser : ĠUser ) ĊĊĠĠĠ Ġ@ Serializable ( with Ġ= ĠUser Serializer :: class ) ĊĠĠĠ Ġopen Ġclass ĠUser Ġ: ĠBind able () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġname : ĠString Ġby Ġthis () ĊĠĠĠĠĠĠĠ Ġvar Ġage : ĠInt Ġby Ġthis () ĊĠĠĠĠĠĠĠ Ġvar Ġnullable _ name : ĠString ? Ġby Ġthis () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġobject ĠUser Serializer Ġ: ĠBind able Serializer < User >( :: User ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ serialization () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoriginal Ġ= ĠGu ine a P ig ( User (). apply Ġ{ Ġname Ġ= Ġ" foo "; Ġage Ġ= Ġ 4 2 Ġ}) ĊĠĠĠĠĠĠĠ Ġfun Ġverify ( u : ĠUser ) Ġ= Ġu . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" foo ", Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 4 2 , Ġage ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( nullable _ name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġverify ( original . user ) ĊĊĠĠĠĠĠĠĠ Ġval Ġstr Ġ= ĠJson . encode ToString ( original ) ĊĠĠĠĠĠĠĠ Ġprintln (" serialized Ġinstance : Ġ`$ str ` ") ĊĠĠĠĠĠĠĠ Ġval Ġdeserialized Ġ= ĠJson . decode FromString < Gu ine a P ig >( str ) ĊĠĠĠĠĠĠĠ Ġprintln (" de serialized Ġmap : Ġ`${ de serialized . user . binding Value Map }` ") ĊĠĠĠĠĠĠĠ Ġverify ( de serialized . user ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ