package Ġcom . ap ol log raph ql . apollo . cache . normalized . internal Ċ Ċ import Ġcom . ap ol log raph ql . apollo . api . InputType Ċ import Ġcom . ap ol log raph ql . apollo . api . Operation Ċ import Ġcom . ap ol log raph ql . apollo . api . Response Field Ċ import Ġcom . ap ol log raph ql . apollo . api . Response Field . Companion . for String Ċ import Ġcom . ap ol log raph ql . apollo . api . Scalar Type Ċ import Ġcom . ap ol log raph ql . apollo . api . internal . Input Field Marshaller Ċ import Ġcom . ap ol log raph ql . apollo . api . internal . Input Field Writer Ċ import Ġcom . ap ol log raph ql . apollo . api . internal . Un modifiable Map Builder Ċ import Ġcom . google . common . truth . Truth Ċ import Ġorg . junit . Test Ċ import Ġjava . io . IOException Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . util . HashMap Ċ Ċ class ĠCache Key Builder Test Ġ{ ĊĠ Ġprivate Ġval Ġcache Key Builder : ĠCache Key Builder Ġ= ĠReal CacheKey Builder () ĊĊĠ Ġinternal Ġenum Ġclass ĠEp isode Ġ{ ĊĠĠĠ ĠJ ED I ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Field With No Arguments () Ġ{ ĊĠĠĠ Ġval Ġfield Ġ= Ġfor String (" hero ", Ġ" hero ", Ġnull , Ġfalse , Ġempty List ()) ĊĠĠĠ Ġval Ġvariables : ĠOperation . Variables Ġ= Ġobject Ġ: ĠOperation . Variables () Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġvalue Map (): ĠMap < String , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . value Map () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ ĠTr uth . assertThat ( cacheKey Builder . build ( field , Ġvariables )). isEqualTo (" hero ") ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Field With No Arguments With Alias () Ġ{ ĊĠĠĠ Ġval Ġfield Ġ= Ġfor String (" r 2 ", Ġ" hero ", Ġnull , Ġfalse , Ġempty List ()) ĊĠĠĠ Ġval Ġvariables : ĠOperation . Variables Ġ= Ġobject Ġ: ĠOperation . Variables () Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġvalue Map (): ĠMap < String , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . value Map () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ ĠTr uth . assertThat ( cacheKey Builder . build ( field , Ġvariables )). isEqualTo (" hero ") ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Field With Argument () Ġ{ ĊĠĠĠ Ġval Ġarguments Ġ= ĠUn modifiable Map Builder < String , ĠAny ? >( 1 ) ĊĠĠĠĠĠĠĠ Ġ. put (" episode ", Ġ" J ED I ") ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġval Ġfield Ġ= Ġcreate Response Field (" hero ", Ġ" hero ", Ġarguments ) ĊĠĠĠ Ġval Ġvariables : ĠOperation . Variables Ġ= Ġobject Ġ: ĠOperation . Variables () Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġvalue Map (): ĠMap < String , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . value Map () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ ĠTr uth . assertThat ( cacheKey Builder . build ( field , Ġvariables )). isEqualTo (" hero ({ \" episode \":\" J ED I \" }) ") ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Field With Argument And Alias () Ġ{ ĊĠĠĠ Ġval Ġarguments Ġ= ĠUn modifiable Map Builder < String , ĠAny ? >( 1 ) ĊĠĠĠĠĠĠĠ Ġ. put (" episode ", Ġ" J ED I ") ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġval Ġfield Ġ= Ġcreate Response Field (" r 2 ", Ġ" hero ", Ġarguments ) ĊĠĠĠ Ġval Ġvariables : ĠOperation . Variables Ġ= Ġobject Ġ: ĠOperation . Variables () Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġvalue Map (): ĠMap < String , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . value Map () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ ĠTr uth . assertThat ( cacheKey Builder . build ( field , Ġvariables )). isEqualTo (" hero ({ \" episode \":\" J ED I \" }) ") ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Field With Variable Argument () Ġ{ ĊĠĠĠ Ġval Ġargument Ġ= ĠUn modifiable Map Builder < String , ĠAny ? >( 1 ) ĊĠĠĠĠĠĠĠ Ġ. put (" episode ", ĠUn modifiable Map Builder < String , ĠAny >( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" kind ", Ġ" Variable ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" variable Name ", Ġ" episode ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠ Ġval Ġfield Ġ= Ġcreate Response Field (" hero ", Ġ" hero ", Ġargument ĊĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠ Ġval Ġvariables : ĠOperation . Variables Ġ= Ġobject Ġ: ĠOperation . Variables () Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġvalue Map (): ĠMap < String , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= ĠHashMap < String , ĠAny ?> () ĊĠĠĠĠĠĠĠ Ġmap [" episode "] Ġ= ĠEp isode . J ED I ĊĠĠĠĠĠĠĠ Ġreturn Ġmap ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ ĠTr uth . assertThat ( cacheKey Builder . build ( field , Ġvariables )). isEqualTo (" hero ({ \" episode \":\" J ED I \" }) ") ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Field With Variable Argument Null () Ġ{ ĊĠĠĠ Ġval Ġargument Ġ= ĠUn modifiable Map Builder < String , ĠAny ? >( 1 ) ĊĠĠĠĠĠĠĠ Ġ. put (" episode ", ĠUn modifiable Map Builder < String , ĠAny >( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" kind ", Ġ" Variable ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" variable Name ", Ġ" episode ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠ Ġval Ġfield Ġ= Ġcreate Response Field (" hero ", Ġ" hero ", Ġargument ĊĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠ Ġval Ġvariables : ĠOperation . Variables Ġ= Ġobject Ġ: ĠOperation . Variables () Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġvalue Map (): ĠMap < String , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= ĠHashMap < String , ĠAny ?> () ĊĠĠĠĠĠĠĠ Ġmap [" episode "] Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġmap ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ ĠTr uth . assertThat ( cacheKey Builder . build ( field , Ġvariables )). isEqualTo (" hero ({ \" episode \": null }) ") ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Field With Multiple Argument () Ġ{ ĊĠĠĠ Ġval Ġbuild Ġ= ĠUn modifiable Map Builder < String , ĠAny ? >( 1 ) ĊĠĠĠĠĠĠĠ Ġ. put (" episode ", Ġ" J ED I ") ĊĠĠĠĠĠĠĠ Ġ. put (" color ", Ġ" blue ") ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġval Ġfield Ġ= Ġcreate Response Field (" hero ", Ġ" hero ", Ġbuild ) ĊĠĠĠ Ġval Ġvariables : ĠOperation . Variables Ġ= Ġobject Ġ: ĠOperation . Variables () Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġvalue Map (): ĠMap < String , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . value Map () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ ĠTr uth . assertThat ( cacheKey Builder . build ( field , Ġvariables )). isEqualTo (" hero ({ \" color \":\" blue \",\" episode \":\" J ED I \" }) ") ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Field With Multiple Arguments Order In dependent () Ġ{ ĊĠĠĠ Ġval Ġarguments Ġ= ĠUn modifiable Map Builder < String , ĠAny ? >( 1 ) ĊĠĠĠĠĠĠĠ Ġ. put (" episode ", Ġ" J ED I ") ĊĠĠĠĠĠĠĠ Ġ. put (" color ", Ġ" blue ") ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġval Ġfield Ġ= Ġcreate Response Field (" hero ", Ġ" hero ", Ġarguments ) ĊĠĠĠ Ġval Ġvariables : ĠOperation . Variables Ġ= Ġobject Ġ: ĠOperation . Variables () Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġvalue Map (): ĠMap < String , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . value Map () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġfield Two Arguments Ġ= ĠUn modifiable Map Builder < String , ĠAny ? >( 1 ) ĊĠĠĠĠĠĠĠ Ġ. put (" color ", Ġ" blue ") ĊĠĠĠĠĠĠĠ Ġ. put (" episode ", Ġ" J ED I ") ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġval Ġfield Two Ġ= Ġcreate Response Field (" hero ", Ġ" hero ", Ġfield Two Arguments ) ĊĠĠĠ ĠTr uth . assertThat ( cacheKey Builder . build ( field Two , Ġvariables )). isEqualTo ( cacheKey Builder . build ( field , Ġvariables )) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Field With Nested Object () Ġ{ ĊĠĠĠ Ġval Ġarguments Ġ= ĠUn modifiable Map Builder < String , ĠAny ? >( 1 ) ĊĠĠĠĠĠĠĠ Ġ. put (" episode ", Ġ" J ED I ") ĊĠĠĠĠĠĠĠ Ġ. put (" nested ", ĠUn modifiable Map Builder < String , ĠAny >( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" foo ", Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" bar ", Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġval Ġfield Ġ= Ġcreate Response Field (" hero ", Ġ" hero ", Ġarguments ) ĊĠĠĠ Ġval Ġvariables : ĠOperation . Variables Ġ= Ġobject Ġ: ĠOperation . Variables () Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġvalue Map (): ĠMap < String , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . value Map () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ ĠTr uth . assertThat ( cacheKey Builder . build ( field , Ġvariables )). isEqualTo (" hero ({ \" episode \":\" J ED I \",\" nested \":{\" bar \": 2 ,\" foo \": 1 }} )") ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Field With Non Primitive Value () Ġ{ ĊĠĠĠ Ġval Ġfield Ġ= Ġfor String (" hero ", Ġ" hero ", ĠUn modifiable Map Builder < String , ĠAny ? >( 1 ) ĊĠĠĠĠĠĠĠ Ġ. put (" episode ", ĠEp isode . J ED I ) ĊĠĠĠĠĠĠĠ Ġ. build (), Ġfalse , Ġempty List ()) ĊĠĠĠ Ġval Ġvariables : ĠOperation . Variables Ġ= Ġobject Ġ: ĠOperation . Variables () Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġvalue Map (): ĠMap < String , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . value Map () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ ĠTr uth . assertThat ( cacheKey Builder . build ( field , Ġvariables )). isEqualTo (" hero ({ \" episode \":\" J ED I \" }) ") ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Field With Nested Object And Variables () Ġ{ ĊĠĠĠ Ġval Ġarguments Ġ= ĠUn modifiable Map Builder < String , ĠAny ? >( 1 ) ĊĠĠĠĠĠĠĠ Ġ. put (" episode ", Ġ" J ED I ") ĊĠĠĠĠĠĠĠ Ġ. put (" nested ", ĠUn modifiable Map Builder < String , ĠAny >( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" foo ", ĠUn modifiable Map Builder < String , ĠAny >( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" kind ", Ġ" Variable ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" variable Name ", Ġ" stars ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" bar ", Ġ" 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġval Ġfield Ġ= Ġcreate Response Field (" hero ", Ġ" hero ", Ġarguments ) ĊĠĠĠ Ġval Ġvariables : ĠOperation . Variables Ġ= Ġobject Ġ: ĠOperation . Variables () Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġvalue Map (): ĠMap < String , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= ĠHashMap < String , ĠAny ?> () ĊĠĠĠĠĠĠĠ Ġmap [" stars "] Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġreturn Ġmap ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ ĠTr uth . assertThat ( cacheKey Builder . build ( field , Ġvariables )). isEqualTo (" hero ({ \" episode \":\" J ED I \",\" nested \":{\" bar \":\" 2 \",\" foo \": 1 }} )") ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġfield InputType Argument () Ġ{ ĊĠĠĠ Ġval Ġarguments Ġ= ĠUn modifiable Map Builder < String , ĠAny ? >( 1 ) ĊĠĠĠĠĠĠĠ Ġ. put (" episode ", Ġ" J ED I ") ĊĠĠĠĠĠĠĠ Ġ. put (" nested ", ĠUn modifiable Map Builder < String , ĠAny >( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" foo ", ĠUn modifiable Map Builder < String , ĠAny >( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" kind ", Ġ" Variable ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" variable Name ", Ġ" test Input ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" bar ", Ġ" 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġval Ġfield Ġ= Ġcreate Response Field (" hero ", Ġ" hero ", Ġarguments ) ĊĠĠĠ Ġval Ġtest Input : ĠInput Type Ġ= Ġobject Ġ: ĠInput Type Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġmarshaller (): ĠInput Field Marshaller Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠInput Field Marshaller Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmarshal ( writer : ĠInput Field Writer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . writeString (" string ", Ġ" string ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . writeInt (" int ", Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write Long (" long ", Ġ 2 L ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write Double (" double ", Ġ 3 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write Number (" number ", ĠBigDecimal . valueOf ( 4 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write Boolean (" boolean ", Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write Custom (" custom ", Ġobject Ġ: ĠScalar Type Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtypeName (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" E PI SO DE " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠclassName (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString :: class . java . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ" J ED I ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write Object (" object ", Ġobject Ġ: ĠInput Field Marshaller Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmarshal ( writer : ĠInput Field Writer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . writeString (" string ", Ġ" string ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . writeInt (" int ", Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write List (" list ") Ġ{ Ġlist Item Writer Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item Writer . writeString (" string ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item Writer . writeInt ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item Writer . write Long ( 2 L ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item Writer . write Double ( 3 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item Writer . write Number ( BigDecimal . valueOf ( 4 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item Writer . write Boolean ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item Writer . write Custom ( object Ġ: ĠScalar Type Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtypeName (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" E PI SO DE " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠclassName (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString :: class . java . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ" J ED I ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item Writer . write Object ( object Ġ: ĠInput Field Marshaller Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmarshal ( writer : ĠInput Field Writer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . writeString (" string ", Ġ" string ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . writeInt (" int ", Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item Writer . write List ( object Ġ: ĠInput Field Writer . List Writer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġwrite ( list Item Writer : ĠInput Field Writer . ListItem Writer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item Writer . writeString (" string ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item Writer . writeInt ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġvariables : ĠOperation . Variables Ġ= Ġobject Ġ: ĠOperation . Variables () Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġvalue Map (): ĠMap < String , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= ĠHashMap < String , ĠAny ?> () ĊĠĠĠĠĠĠĠ Ġmap [" test Input "] Ġ= Ġtest Input ĊĠĠĠĠĠĠĠ Ġreturn Ġmap ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ ĠTr uth . assertThat ( cacheKey Builder . build ( field , Ġvariables )). isEqualTo ( ĊĠĠĠĠĠĠĠ Ġ" hero ({ \" episode \":\" J ED I \",\" nested \":{\" bar \":\" 2 \",\" foo \":{\" boolean \": true ,\" custom \":\" J ED I \",\" double \": 3 . 0 ,\" int \": 1 ," ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ"\" list \":[\" string \", 1 , 2 , 3 . 0 , 4 , true ,\" J ED I \", {\" int \": 1 ,\" string \":\" string \" }, [\" string \", 1 ]], \" long \": 2 ," ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ"\" number \": 4 ,\" object \":{\" int \": 1 ,\" string \":\" string \" }, \" string \":\" string \" }} }) ") ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Field Argument InputType With Null s () Ġ{ ĊĠĠĠ Ġval Ġarguments Ġ= ĠUn modifiable Map Builder < String , ĠAny ? >( 1 ) ĊĠĠĠĠĠĠĠ Ġ. put (" episode ", Ġnull ) ĊĠĠĠĠĠĠĠ Ġ. put (" nested ", ĠUn modifiable Map Builder < String , ĠAny ? >( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" foo ", ĠUn modifiable Map Builder < String , ĠAny >( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" kind ", Ġ" Variable ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" variable Name ", Ġ" test Input ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" bar ", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġval Ġfield Ġ= Ġcreate Response Field (" hero ", Ġ" hero ", Ġarguments ) ĊĠĠĠ Ġval Ġtest Input : ĠInput Type Ġ= Ġobject Ġ: ĠInput Type Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġmarshaller (): ĠInput Field Marshaller Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠInput Field Marshaller Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmarshal ( writer : ĠInput Field Writer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . writeString (" string ", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . writeInt (" int ", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write Long (" long ", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write Double (" double ", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write Number (" number ", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write Boolean (" boolean ", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write Custom (" custom ", Ġobject Ġ: ĠScalar Type Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtypeName (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" E PI SO DE " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠclassName (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString :: class . java . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write Object (" object ", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write List (" list Null ", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write List (" list With Null s ", Ġobject Ġ: ĠInput Field Writer . List Writer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġwrite ( list Item Writer : ĠInput Field Writer . ListItem Writer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item Writer . writeString ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item Writer . writeInt ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item Writer . write Long ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item Writer . write Double ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item Writer . write Number ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item Writer . write Boolean ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item Writer . write Custom ( object Ġ: ĠScalar Type Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtypeName (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" E PI SO DE " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠclassName (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString :: class . java . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item Writer . write Object ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item Writer . write List ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . writeString (" null ", Ġnull ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġvariables : ĠOperation . Variables Ġ= Ġobject Ġ: ĠOperation . Variables () Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġvalue Map (): ĠMap < String , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= ĠHashMap < String , ĠAny ?> () ĊĠĠĠĠĠĠĠ Ġmap [" test Input "] Ġ= Ġtest Input ĊĠĠĠĠĠĠĠ Ġreturn Ġmap ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ ĠTr uth . assertThat ( cacheKey Builder . build ( field , Ġvariables )). isEqualTo (" hero ({ \" episode \": null ,\" nested \":{\" bar \": null ,\" foo \":{\" boolean \": null ,\" custom \": null ,\" double \": null ,\" int \": null ,\" list Null " ĊĠĠĠĠĠĠĠ Ġ+ Ġ"\ ": null ,\" list With Null s \": [], \" long \": null ,\" null \": null ,\" number \": null ,\" object \": null ,\" string \": null }} }) ") ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġcreate Response Field ( response Name : ĠString , ĠfieldName : ĠString , Ġarguments : ĠMap < String , ĠAny ?> ): ĠResponse Field Ġ{ ĊĠĠĠ Ġreturn Ġfor String ( ĊĠĠĠĠĠĠĠ Ġresponse Name , ĊĠĠĠĠĠĠĠ ĠfieldName , ĊĠĠĠĠĠĠĠ Ġarguments , ĊĠĠĠĠĠĠĠ Ġfalse , Ġempty List ()) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Field With Variables In Lists () Ġ{ ĊĠĠĠ Ġval Ġarguments Ġ= Ġmutable Map Of < String , ĠAny ?> (). apply Ġ{ ĊĠĠĠĠĠ Ġput (" where ", Ġmutable Map Of < String , ĠAny ?> (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġput (" and ", Ġmutable ListOf < Any ?> (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġadd ( mutable Map Of < String , ĠAny ?> (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput (" kind ", Ġ" Variable ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput (" variable Name ", Ġ" stars ") ĊĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġfield Ġ= Ġcreate Response Field (" hero ", Ġ" hero ", Ġarguments ) ĊĠĠĠ Ġval Ġvariables 0 : ĠOperation . Variables Ġ= Ġobject Ġ: ĠOperation . Variables () Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġvalue Map () Ġ= Ġmap Of (" stars " Ġto ĠlistOf ( 0 )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġvariables 1 : ĠOperation . Variables Ġ= Ġobject Ġ: ĠOperation . Variables () Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġvalue Map () Ġ= Ġmap Of (" stars " Ġto ĠlistOf ( 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠTr uth . assertThat ( cacheKey Builder . build ( field , Ġvariables 0 )). isNot EqualTo ( cacheKey Builder . build ( field , Ġvariables 1 )) ĊĠ Ġ} Ċ }