package Ġnet . oct yl . apt creator . processor Ċ Ċ import Ġcom . google . common . io . Resources Ċ import Ġcom . google . testing . compile . Compilation Ċ import Ġcom . google . testing . compile . Compilation Subject Ċ import Ġcom . google . testing . compile . Compilation Subject . assertThat Ċ import Ġcom . google . testing . compile . Compiler Ċ import Ġcom . google . testing . compile . Java File Objects Ċ import Ġkotlin . test . Test Ċ Ċ class ĠBasic Processor Test Ġ{ ĊĊĠĠĠ Ġprivate Ġfun Ġprovide Basic Compile Test ( var arg Ġtest Source : ĠString , Ġconfig : Ġ( Compiler . () Ġ-> ĠCompiler )? Ġ= Ġnull ): ĠCompilation Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠCompiler . javac () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Processors ( A pt Creator Processor ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġconfig ?. invoke ( this ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. compile ( test Source . map Ġ{ ĠJava File Objects . for Resource (" sources /$ it ") Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠCompilation Subject . generated File Equivalent ( resourceName : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġneed Ġto Ġvary ĠGenerated Ġannotation Ġbased Ġon Ġcurrent ĠJVM ĊĠĠĠĠĠĠĠ Ġval Ġfile Content Ġ= ĠResources . getResource (" targets /$ resourceName ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. open Stream (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . reader (). read Lines () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . getProperty (" java . version "). startsWith (" 1 .") Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplace Generated Import ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresource F qn Ġ= Ġresource Name . remove Suffix (". java "). replace ('/', Ġ'.') ĊĠĠĠĠĠĠĠ Ġgenerated SourceFile ( resource F qn ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Source Equivalent To ( Java File Objects . for Source Lines ( resource F qn , Ġfile Content )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` gener ates Ġwith Ġno Ġparameters `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġprovide Basic Compile Test (" No Parameters . java ") ĊĠĠĠĠĠĠĠ ĠassertThat ( result ). succeeded Without Warnings () ĊĠĠĠĠĠĠĠ ĠassertThat ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. generated File Equivalent (" No Parameters Creator . java ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` gener ates Ġwith Ġone Ġparameter `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġprovide Basic Compile Test (" One Parameter . java ") ĊĠĠĠĠĠĠĠ ĠassertThat ( result ). succeeded Without Warnings () ĊĠĠĠĠĠĠĠ ĠassertThat ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. generated File Equivalent (" One Parameter Creator . java ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` gener ates Ġwith Ġone Ġnullable Ġparameter `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġprovide Basic Compile Test (" One Nullable Parameter . java ") ĊĠĠĠĠĠĠĠ ĠassertThat ( result ). succeeded Without Warnings () ĊĠĠĠĠĠĠĠ ĠassertThat ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. generated File Equivalent (" One Nullable Parameter Creator . java ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` gener ates Ġwith Ġone Ġprovided Ġparameter `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġprovide Basic Compile Test (" Provided Parameter . java ") ĊĠĠĠĠĠĠĠ ĠassertThat ( result ). succeeded Without Warnings () ĊĠĠĠĠĠĠĠ ĠassertThat ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. generated File Equivalent (" Provided Parameter Creator . java ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` gener ates Ġwith Ġone Ġnullable Ġprovided Ġparameter `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġprovide Basic Compile Test (" Nullable Provided Parameter . java ") ĊĠĠĠĠĠĠĠ ĠassertThat ( result ). succeeded Without Warnings () ĊĠĠĠĠĠĠĠ ĠassertThat ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. generated File Equivalent (" Nullable Provided Parameter Creator . java ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` supports Ġrenaming Ġthe Ġentire Ġcreator Ġclass `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġprovide Basic Compile Test (" Name Override . java ") ĊĠĠĠĠĠĠĠ ĠassertThat ( result ). succeeded Without Warnings () ĊĠĠĠĠĠĠĠ ĠassertThat ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. generated File Equivalent (" Not The ClassName . java ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` supports Ġnested Ġstatic Ġclasses `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġprovide Basic Compile Test (" nest ing / N esting Success . java ") ĊĠĠĠĠĠĠĠ ĠassertThat ( result ). succeeded Without Warnings () ĊĠĠĠĠĠĠĠ ĠassertThat ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. generated File Equivalent (" nest ing / N esting Success _ Level One _ Level Two Creator . java ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` does n 't Ġsupport Ġnested Ġnon - static Ġclasses `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġprovide Basic Compile Test (" nest ing / N esting Fail By Non Static . java ") ĊĠĠĠĠĠĠĠ ĠassertThat ( result ). failed () ĊĠĠĠĠĠĠĠ ĠassertThat ( result ). had Error Containing (" an Ġen closing Ġinstance ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` supports Ġmultiple Ġconstructors `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġprovide Basic Compile Test (" Multi Constructor . java ") ĊĠĠĠĠĠĠĠ ĠassertThat ( result ). succeeded Without Warnings () ĊĠĠĠĠĠĠĠ ĠassertThat ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. generated File Equivalent (" Multi Constructor Creator . java ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` does n 't Ġsupport Ġmultiple Ġconstructors Ġwith Ġconflicting Ġsignatures `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġprovide Basic Compile Test (" Fail Multi Constructor . java ") ĊĠĠĠĠĠĠĠ ĠassertThat ( result ). failed () ĊĠĠĠĠĠĠĠ ĠassertThat ( result ). had Error Containing (" create () Ġis Ġalready Ġdefined ") ĊĠĠĠ Ġ} Ċ } Ċ