package Ġcom . air bnb . e po xy Ċ Ċ import Ġcom . air bnb . e po xy . processor . Controller Processor Ċ import Ġcom . air bnb . e po xy . processor . Data Binding Processor Ċ import Ġcom . air bnb . e po xy . processor . E po xy Processor Ċ import Ġcom . air bnb . e po xy . processor . Model View Processor Ċ import Ġcom . air bnb . par is . processor . Par is Processor Ċ import Ġcom . google . common . truth . Truth . assert _ Ċ import Ġcom . google . testing . compile . Java File Objects Ċ import Ġcom . google . testing . compile . Java Source Subject Factory . java Source Ċ import Ġcom . google . testing . compile . Java Sources Subject Ċ import Ġcom . google . testing . compile . Java Sources Subject Factory . java Sources Ċ import Ġjavax . annotation . processing . Processor Ċ import Ġjavax . tools . Java FileObject Ċ Ċ internal Ġobject ĠProcessor TestUtils Ġ{ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġassert Generation Error ( ĊĠĠĠĠĠĠĠ Ġinput File : ĠString , ĊĠĠĠĠĠĠĠ ĠerrorMessage : ĠString ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠJava File Objects ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. for Resource ( inputFile . patch Resource ()) ĊĊĠĠĠĠĠĠĠ Ġassert _ (). about ( java Source ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. that ( model ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. processed With ( processors ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fails To Compile () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Error Containing ( errorMessage ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġcheck File Comp iles ( inputFile : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠJava File Objects ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. for Resource ( inputFile . patch Resource ()) ĊĊĠĠĠĠĠĠĠ Ġassert _ (). about ( java Source ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. that ( model ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. processed With ( processors ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. comp iles Without Error () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġprocessors ( use Par is : ĠBoolean Ġ= Ġfalse ): ĠMutable List < Processor > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmutable ListOf < Processor >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( E po xy Processor ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Controller Processor ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Data Binding Processor ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Model View Processor ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( use Par is ) Ġadd ( Par is Processor ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġoptions ( ĊĠĠĠĠĠĠĠ Ġwith No Validation : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġwith Implicit Adding : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmutable ListOf < String >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( with No Validation ) Ġadd (" validate E po xy Model Usage " Ġset To Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( with Implicit Adding ) Ġadd (" implicit ly Add Auto Models " Ġset To Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġassert Generation ( ĊĠĠĠĠĠĠĠ Ġinput File : ĠString , ĊĠĠĠĠĠĠĠ Ġgenerated File : ĠString , ĊĠĠĠĠĠĠĠ Ġuse Par is : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġhelper Objects : ĠList < Java FileObject > Ġ= Ġempty List () ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Generation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource File Names Ġ= ĠlistOf ( inputFile ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Objects Ġ= Ġhelper Objects , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerated File Names Ġ= ĠlistOf ( generated File ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Par is Ġ= Ġuse Par is ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġassert Generation ( ĊĠĠĠĠĠĠĠ Ġinput Files : ĠList < String >, ĊĠĠĠĠĠĠĠ Ġfile Names : ĠList < String >, ĊĠĠĠĠĠĠĠ Ġuse Par is : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Generation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource File Names Ġ= Ġinput Files , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerated File Names Ġ= Ġfile Names , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Par is Ġ= Ġuse Par is ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Name (" assert Generation With File Objects ") ĊĠĠĠ Ġfun Ġassert Generation ( ĊĠĠĠĠĠĠĠ Ġsource File Names : ĠList < String > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġsource Objects : ĠList < Java FileObject > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġgenerated File Names : ĠList < String > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġgenerated File Objects : ĠList < Java FileObject > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġuse Par is : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgenerated Files Ġ= Ġgenerated File Objects Ġ+ Ġgenerated File Names . to Java File Objects () ĊĊĠĠĠĠĠĠĠ Ġassert _ (). about ( java Sources ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. that ( source Objects Ġ+ Ġsource File Names . to Java File Objects ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. processed With ( processors ( use Par is )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. comp iles Without Error () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. and () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. gener ates Sources ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenerated Files [ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* generated Files . drop ( 1 ). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġassert _ (). about ( java Sources ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. that ( source Objects Ġ+ Ġsource File Names . to Java File Objects ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAlso Ġcompile Ġusing Ġthese Ġflags , Ġsince Ġthey Ġrun Ġdifferent Ġcode Ġand Ġcould Ġhelp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcatch Ġconcurrency Ġissues , Ġas Ġwell Ġas Ġin determinate Ġways Ġthat Ġthe Ġorder Ġof Ġgenerated ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcode Ġmay Ġchange Ġdue Ġto Ġconcurrent Ġprocessing . ĠGenerated Ġcode Ġoutput Ġmust Ġbe Ġstable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġto Ġprovide Ġstable Ġbuild Ġcache Ġkeys ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Annotation Processor Options ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġparallel Ġtesting Ġseems Ġflaky Ġsince Ġjava Ġ 1 1 Ġwith Ġthe Ġag p Ġ 4 . 2 Ġupdate . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDis abling Ġuntil Ġit Ġcan Ġbe Ġlooked Ġinto . Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" enable Parallel E po xy Processing " Ġto Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" log E po xy Tim ings " Ġto Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. processed With ( processors ( use Par is )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. comp iles Without Error () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. and () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. gener ates Sources ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenerated Files [ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* generated Files . drop ( 1 ). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ infix Ġfun ĠString . set To ( value : ĠAny ) Ġ= Ġ"- A $ this =$ value " Ċ Ċ fun ĠJava Sources Subject . with Annotation Processor Options ( var arg Ġoption : ĠPair < String , ĠAny >): ĠJava Sources Subject Ġ{ ĊĠĠĠ Ġreturn Ġwith Compiler Options ( option . map Ġ{ Ġit . first Ġset To Ġit . second Ġ}) Ċ } Ċ Ċ fun ĠList < String >. to Java File Objects () Ġ= Ġmap Ġ{ ĠJava File Objects . for Resource ( it . patch Resource ()) Ġ} Ċ Ċ fun Ġjava File ( name : ĠString ) Ġ= ĠJava File Objects . for Resource ( name . patch Resource ()) Ċ