package Ġtw . inv ict us . processor Ċ Ċ import Ġcom . squareup . jav ap o et . ClassName Ċ import Ġcom . squareup . jav ap o et . Method Spec Ċ import Ġcom . squareup . jav ap o et . Parameter Spec Ċ import Ġcom . squareup . jav ap o et . Type Spec Ċ import Ġorg . jetbrains . annotations . Nullable Ċ import Ġtw . inv ict us . processor . V ago Processor . Companion . V AG O _ CLASS Ċ import Ġtw . inv ict us . processor . V ago Processor . Companion . V AG O _ CUSTOM _ PARAM Ċ import Ġtw . inv ict us . processor . V ago Processor . Companion . V AG O _ TEST _ METHOD _ PREFIX Ċ import Ġtw . inv ict us . v ag ol ib . V ago Ċ import Ġjavax . lang . model . element . Modifier .* Ċ Ċ class ĠParcel able Test Generator ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcontents : ĠList < Parcelable Test Content > Ċ ): ĠV ago Generator Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPAR CEL _ NAME Ġ= Ġ" Parcelable " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCLASS _ NAME Ġ= ĠV AG O _ CLASS Ġ+ ĠPAR CEL _ NAME ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPACK AGE _ NAME Ġ= Ġ" tw . inv ict us . v ago " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgenerate (): ĠType Spec Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtype Builder Ġ= ĠType Spec ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. class Builder ( CLASS _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Modifiers ( PUBLIC , ĠFIN AL ) ĊĠĠĠĠĠĠĠ Ġcontents . forEach { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Builder . add Method ( generate Method ( it . packageName , Ġit . className , Ġit . parent Name )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtype Builder . build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Method ( packageName : ĠString , ĠclassName : ĠString , Ġparent Name : ĠString ): ĠMethod Spec Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparam Ġ= ĠParameter Spec . builder ( V ago . Custom ization :: class . java , ĠV AG O _ CUSTOM _ PARAM ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Annotation ( Nullable :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġval Ġparcel Name Ġ= Ġ" Parcel " ĊĠĠĠĠĠĠĠ Ġval Ġparcel Ġ= ĠClass Name . get (" android . os ", Ġparcel Name ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbean Class Ġ= Ġif Ġ( parent Name . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClass Name . get ( packageName , ĠclassName ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClass Name . get ( packageName , Ġparent Name , ĠclassName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġv ago Ġ= ĠClass Name . get ( V ago Processor . V AG O _ PACKAGE , ĠV AG O _ CLASS ) ĊĠĠĠĠĠĠĠ Ġval Ġmethod Builder Ġ= ĠMethod Spec ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. method Builder ("$ V AG O _ TEST _ METHOD _ PREFIX $ className $ PAR CEL _ NAME ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Modifiers ( PUBLIC , ĠSTATIC , ĠFIN AL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Parameter ( param ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Code ( getMethod Content (), Ġbean Class , Ġbean Class , Ġv ago , Ġbean Class , Ġparcel , Ġparcel Name , Ġbean Class , Ġbean Class , Ġv ago ) ĊĠĠĠĠĠĠĠ Ġreturn Ġmethod Builder . build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Method Content (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"\ $ T Ġbean Ġ= Ġ(\ $ T ) Ġ\$ T . INSTANCE . create Instance (\ $ T . class , Ġ$ V AG O _ CUSTOM _ PARAM );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ $ T Ġparcel Ġ= Ġ\$ N . obtain (); \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" bean . writeTo Parcel ( parcel , Ġbean . describe Contents ()); \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" parcel . setData Position ( 0 );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ $ T Ġcreated From Parcel Ġ= Ġ\$ T . CRE ATOR . createFrom Parcel ( parcel );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ $ T . INSTANCE . assertEquals ( bean . equals ( created From Parcel ), Ġtrue );\ n " ĊĠĠĠ Ġ} Ċ Ċ }