/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 Ġthe Ġoriginal Ġauthor Ġor Ġauthors . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġorg . gradle . instant execution . serialization . code cs Ċ Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . mock Ċ import Ġorg . gradle . cache . internal . Test Cross Build InMemory Cache Factory Ċ import Ġorg . gradle . instant execution . extensions . unchecked Cast Ċ import Ġorg . gradle . instant execution . problems . Problems Listener Ċ import Ġorg . gradle . instant execution . problems . Property Problem Ċ import Ġorg . gradle . instant execution . serialization . Codec Ċ import Ġorg . gradle . instant execution . serialization . Default Read Context Ċ import Ġorg . gradle . instant execution . serialization . Default Write Context Ċ import Ġorg . gradle . instant execution . serialization . Is olate Owner Ċ import Ġorg . gradle . instant execution . serialization . Mutable Is olate Context Ċ import Ġorg . gradle . instant execution . serialization . beans . Bean Construct ors Ċ import Ġorg . gradle . instant execution . serialization . run Read Operation Ċ import Ġorg . gradle . instant execution . serialization . run Write Operation Ċ import Ġorg . gradle . instant execution . serialization . with Is olate Ċ import Ġorg . gradle . internal . io . Null OutputStream Ċ import Ġorg . gradle . internal . serialize . Encoder Ċ import Ġorg . gradle . internal . serialize . k ry o . K ry o Back ed Decoder Ċ import Ġorg . gradle . internal . serialize . k ry o . K ry o Back ed Encoder Ċ import Ġorg . gradle . kotlin . dsl . support . use To Run Ċ import Ġorg . gradle . util . TestUtil Ċ import Ġorg . hamcrest . Core Matchers . instance Of Ċ import Ġorg . hamcrest . Matcher Assert . assertThat Ċ import Ġjava . io . ByteArray InputStream Ċ import Ġjava . io . ByteArray OutputStream Ċ import Ġjava . io . OutputStream ĊĊ Ċ abstract Ġclass ĠAbstract User Type Codec Test Ġ{ ĊĊĠĠĠ Ġprotected ĊĠĠĠ Ġfun Ġserialization Problems Of ( bean : ĠAny , Ġcodec : ĠCodec < Any ?> Ġ= Ġuser Types Codec ()): ĠList < Property Problem > Ġ= ĊĠĠĠĠĠĠĠ Ġmutable ListOf < Property Problem >(). also Ġ{ Ġproblems Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠwriteTo ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNull OutputStream . INSTANCE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbean , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcodec , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠPro blems Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Problem ( problem : ĠProperty Problem ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproblems Ġ+= Ġproblem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected ĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġconfiguration Cache Round trip Of ( graph : ĠT , Ġcodec : ĠCodec < Any ?> Ġ= Ġuser Types Codec ()): ĠT Ġ= ĊĠĠĠĠĠĠĠ ĠwriteTo ByteArray ( graph , Ġcodec ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ Ġread From ByteArray ( it , Ġcodec ) !! Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. unchecked Cast () ĊĊĠĠĠ Ġinternal ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT > Ġassert InstanceOf ( any : ĠAny ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( any , Ġinstance Of ( T :: class . java )) ĊĠĠĠĠĠĠĠ Ġreturn Ġany . unchecked Cast () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate ĊĠĠĠ Ġfun ĠwriteTo ByteArray ( graph : ĠAny , Ġcodec : ĠCodec < Any ?> ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠoutputStream Ġ= ĠByteArrayOutputStream () ĊĠĠĠĠĠĠĠ ĠwriteTo ( output Stream , Ġgraph , Ġcodec , Ġobject Ġ: ĠPro blems Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Problem ( problem : ĠProperty Problem ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( problem ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġreturn ĠoutputStream . toByteArray () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate ĊĠĠĠ Ġfun ĠwriteTo ( ĊĠĠĠĠĠĠĠ ĠoutputStream : ĠOutputStream , ĊĠĠĠĠĠĠĠ Ġgraph : ĠAny , ĊĠĠĠĠĠĠĠ Ġcodec : ĠCodec < Any ? >, ĊĠĠĠĠĠĠĠ Ġproblems Listener : ĠPro blems Listener Ġ= Ġmock () ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Context For ( K ry o Back ed Encoder ( output Stream ), Ġcodec , Ġproblems Listener ). use To Run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Is olate Mock ( codec ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Write Operation Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite ( graph ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate ĊĠĠĠ Ġfun Ġread From ByteArray ( bytes : ĠByteArray , Ġcodec : ĠCodec < Any ?> ) Ġ= ĊĠĠĠĠĠĠĠ Ġread From ( ByteArray InputStream ( bytes ), Ġcodec ) ĊĊĠĠĠ Ġprivate ĊĠĠĠ Ġfun Ġread From ( inputStream : ĠByteArrayInputStream , Ġcodec : ĠCodec < Any ?> ) Ġ= ĊĠĠĠĠĠĠĠ Ġread Context For ( inputStream , Ġcodec ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit ClassLoader ( java Class . class Loader ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Is olate Mock ( codec ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Read Operation Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġread () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate ĊĠĠĠ Ġinline Ġfun Ġ< R > ĠMutable Is olate Context . with Is olate Mock ( codec : ĠCodec < Any ? >, Ġblock : Ġ() Ġ-> ĠR ): ĠR Ġ= ĊĠĠĠĠĠĠĠ Ġwith Is olate ( Is olate Owner . Owner Gradle ( mock ()), Ġcodec ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate ĊĠĠĠ Ġfun Ġwrite Context For ( encoder : ĠEncoder , Ġcodec : ĠCodec < Any ? >, Ġproblem Handler : ĠPro blems Listener ) Ġ= ĊĠĠĠĠĠĠĠ ĠDefault Write Context ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcodec Ġ= Ġcodec , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġencoder Ġ= Ġencoder , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope Lookup Ġ= Ġmock (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger Ġ= Ġmock (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproblems Listener Ġ= Ġproblem Handler ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate ĊĠĠĠ Ġfun Ġread Context For ( inputStream : ĠByteArrayInputStream , Ġcodec : ĠCodec < Any ?> ) Ġ= ĊĠĠĠĠĠĠĠ ĠDefault Read Context ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcodec Ġ= Ġcodec , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdecoder Ġ= ĠK ry o Back ed Decoder ( inputStream ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstanti ator Factory Ġ= ĠTest Util . inst anti ator Factory (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstructors Ġ= ĠBean Construct ors ( Test Cross Build InMemory Cache Factory ()), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger Ġ= Ġmock (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproblems Listener Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate ĊĠĠĠ Ġfun Ġuser Types Codec () Ġ= Ġcodecs (). user Types Codec ĊĊĠĠĠ Ġprotected ĊĠĠĠ Ġfun Ġcodecs () Ġ= ĠCode cs ( ĊĠĠĠĠĠĠĠ Ġdirectory File Tree Factory Ġ= Ġmock (), ĊĠĠĠĠĠĠĠ Ġfile Collection Factory Ġ= Ġmock (), ĊĠĠĠĠĠĠĠ Ġfile Lookup Ġ= Ġmock (), ĊĠĠĠĠĠĠĠ Ġproperty Factory Ġ= Ġmock (), ĊĠĠĠĠĠĠĠ Ġfile Property Factory Ġ= Ġmock (), ĊĠĠĠĠĠĠĠ Ġfile Resolver Ġ= Ġmock (), ĊĠĠĠĠĠĠĠ Ġinstanti ator Ġ= Ġmock (), ĊĠĠĠĠĠĠĠ Ġlistener Manager Ġ= Ġmock (), ĊĠĠĠĠĠĠĠ Ġproject State Registry Ġ= Ġmock (), ĊĠĠĠĠĠĠĠ Ġtask Node Factory Ġ= Ġmock (), ĊĠĠĠĠĠĠĠ Ġfinger printer Registry Ġ= Ġmock (), ĊĠĠĠĠĠĠĠ Ġbuild Operation Executor Ġ= Ġmock (), ĊĠĠĠĠĠĠĠ Ġclass Loader Hierarchy Hash er Ġ= Ġmock (), ĊĠĠĠĠĠĠĠ Ġis ol atable Factory Ġ= Ġmock (), ĊĠĠĠĠĠĠĠ Ġvalue Snapshot ter Ġ= Ġmock (), ĊĠĠĠĠĠĠĠ Ġbuild Service Registry Ġ= Ġmock (), ĊĠĠĠĠĠĠĠ Ġmanaged Factory Registry Ġ= Ġmock (), ĊĠĠĠĠĠĠĠ Ġparameter Scheme Ġ= Ġmock (), ĊĠĠĠĠĠĠĠ Ġaction Scheme Ġ= Ġmock (), ĊĠĠĠĠĠĠĠ Ġattributes Factory Ġ= Ġmock (), ĊĠĠĠĠĠĠĠ Ġtransform Listener Ġ= Ġmock (), ĊĠĠĠĠĠĠĠ Ġvalue Source Provider Factory Ġ= Ġmock (), ĊĠĠĠĠĠĠĠ Ġpattern Set Factory Ġ= Ġmock (), ĊĠĠĠĠĠĠĠ Ġfile Operations Ġ= Ġmock (), ĊĠĠĠĠĠĠĠ Ġfile System Ġ= Ġmock (), ĊĠĠĠĠĠĠĠ Ġfile Factory Ġ= Ġmock () ĊĠĠĠ Ġ) Ċ } Ċ