package Ġnl . f ifth post ulate . short ener . jackson Ċ Ċ import Ġcom . fasterxml . jackson . databind .* Ċ import Ġcom . fasterxml . jackson . databind . module . Simple Module Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . jupiter . params . Parameterized Test Ċ import Ġorg . junit . jupiter . params . provider . Arguments Ċ import Ġorg . junit . jupiter . params . provider . Method Source Ċ import Ġjava . util . stream . Stream Ċ Ċ class ĠCustom Deserializer Test Ġ{ ĊĠĠĠ Ġ@ Parameterized Test ĊĠĠĠ Ġ@ Method Source (" data ") ĊĠĠĠ Ġfun Ġ` de serializing Ġa Ġcustom Ġclass Ġis Ġpossible `( json : ĠString , Ġkeys : ĠArray < KeyType >, Ġexpected : ĠCompound Key ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmodule Ġ= ĠSimple Module () ĊĠĠĠĠĠĠĠ Ġmodule . add Deserializer ( Compound Key :: class . java , ĠCompound Key Deserializer (* keys )) ĊĠĠĠĠĠĠĠ Ġval ĠobjectMapper Ġ= ĠObjectMapper (). register Module ( module ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcompound Key Ġ= ĠobjectMapper . readValue ( json , ĠCompound Key :: class . java ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( compound Key ). isNotNull () ĊĠĠĠĠĠĠĠ ĠassertThat ( compound Key ). isEqualTo ( expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġdata (): ĠStream < Arguments > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠStream . of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of ("[ \" aaa \", 1 ]", ĠarrayOf ( String Key (), ĠInt Key ()), ĠCompound Key (). register ( 0 , Ġ" aaa "). register ( 1 , Ġ 1 )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of ("[ \" bbb \", 2 ]", ĠarrayOf ( String Key (), ĠInt Key ()), ĠCompound Key (). register ( 0 , Ġ" bbb "). register ( 1 , Ġ 2 )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of ("[ 3 ,\" ccc \"] ", ĠarrayOf ( Int Key (), ĠString Key ()), ĠCompound Key (). register ( 0 , Ġ 3 ). register ( 1 , Ġ" ccc ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of ("[ \" ddd \"] ", ĠarrayOf ( String Key ()), ĠCompound Key (). register ( 0 , Ġ" ddd ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ