package Ġorg . un bro k end ome . gradle . plugins . x jc Ċ Ċ import Ġassert k . all Ċ import Ġassert k . assertThat Ċ import Ġassert k . assertions . contains Exactly Ċ import Ġassert k . assertions . contains Only Ċ import Ġassert k . assertions . isEqualTo Ċ import Ġassert k . assertions . isInstanceOf Ċ import Ġassert k . assertions . prop Ċ import Ġorg . gradle . api . internal . Has Convention Ċ import Ġorg . gradle . api . plugins . Java Plugin Ċ import Ġorg . spe k framework . spe k 2 . Spe k Ċ import Ġorg . spe k framework . spe k 2 . style . specification . describe Ċ import Ġorg . un bro k end ome . gradle . plugins . x jc . testutil . assertions . contains Item Ċ import Ġorg . un bro k end ome . gradle . plugins . x jc . testutil . assertions . dir Value Ċ import Ġorg . un bro k end ome . gradle . plugins . x jc . testutil . assertions . hasValue EqualTo Ċ import Ġorg . un bro k end ome . gradle . plugins . x jc . testutil . assertions . isFalse Ċ import Ġorg . un bro k end ome . gradle . plugins . x jc . testutil . assertions . isPresent Ċ import Ġorg . un bro k end ome . gradle . plugins . x jc . testutil . assertions . isTrue Ċ import Ġorg . un bro k end ome . gradle . plugins . x jc . spe k . apply Plugin Ċ import Ġorg . un bro k end ome . gradle . plugins . x jc . spe k . setup Gradle Project Ċ import Ġorg . un bro k end ome . gradle . plugins . x jc . test lib . directory Ċ import Ġorg . un bro k end ome . gradle . plugins . x jc . testutil . required Convention Ċ import Ġorg . un bro k end ome . gradle . plugins . x jc . testutil . required Extension Ċ import Ġorg . un bro k end ome . gradle . plugins . x jc . testutil . source Sets Ċ import Ġjava . util . Locale ĊĊ Ċ object ĠX jc Generate Test Ġ: ĠSpe k ({ ĊĊĠĠĠ Ġval Ġproject Ġby Ġsetup Gradle Project Ġ{ ĊĠĠĠĠĠĠĠ Ġapply Plugin < X jc Plugin >() ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġdescribe (" X jc Generate Ġtask Ġconventions ") Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġtask Ġby Ġmemoized Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . tasks . create (" custom X jc Generate ", ĠX jc Generate :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġuse Ġvalues Ġfrom Ġglobal Ġx jc Ġextension ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( project . required Extension < X jc Extension >()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Version . set (" XYZ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġencoding . set (" ISO - 8 8 5 9 - 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdoc Locale . set ( Locale . IT ALI AN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstrict Check . set ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Level Annotations . set ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġno File Header . set ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenable Int rospection . set ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent For Wildcard . set ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠreadOnly . set ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextension . set ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( task , Ġ" task "). all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop ( X jc Generate :: target Version ). hasValue EqualTo (" XYZ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop ( X jc Generate :: encoding ). hasValue EqualTo (" ISO - 8 8 5 9 - 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop ( X jc Generate :: doc Locale ). hasValue EqualTo ( Locale . IT ALI AN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop ( X jc Generate :: strict Check ). isFalse () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop ( X jc Generate :: package Level Annotations ). isFalse () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop ( X jc Generate :: no File Header ). isFalse () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop ( X jc Generate :: enable Int rospection ). isTrue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop ( X jc Generate :: content For Wildcard ). isTrue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop ( X jc Generate :: readOnly ). isTrue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop ( X jc Generate :: extension ). isTrue () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġit (" should Ġuse Ġthe Ġglobal Ġtool Ġclasspath ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . dependencies . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x jc Tool ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . files (" custom - x jc - 1 . 2 . 3 . jar ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( task , Ġ" task ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. prop ( X jc Generate :: tool Classpath ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains Only ( project . file (" custom - x jc - 1 . 2 . 3 . jar ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġit (" should Ġuse Ġthe Ġglobal Ġextra Args ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( project . required Extension < X jc Extension >()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextra Args . add ("- debug ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . extra Args . add ("- verbose ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( task , Ġ" task ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. prop ( X jc Generate :: extra Args ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isPresent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains Exactly ("- debug ", Ġ"- verbose ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġdescribe (" X jc Generate Ġtask Ġfrom Ġsource Ġset ") Ġ{ ĊĊĠĠĠĠĠĠĠ ĠbeforeEach Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . plugins . apply ( Java Plugin :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġit (" should Ġcreate Ġan ĠX jc Generate Ġtask Ġfor Ġeach Ġexisting Ġsource Ġset ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( project . tasks , Ġname Ġ= Ġ" tasks "). all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontains Item (" x jc Generate ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isInstanceOf ( X jc Generate :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontains Item (" x jc Generate Test ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isInstanceOf ( X jc Generate :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġit (" should Ġset Ġinput Ġfiles Ġfrom Ġsource Ġset Ġdirectories ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġproject . tasks . get ByName (" x jc Generate ") Ġas ĠX jc Generate ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirectory ( project . project Dir ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdirectory (" src / main / schema ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile ( name Ġ= Ġ" schema . xsd ", Ġcontents Ġ= Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile ( name Ġ= Ġ" binding . x jb ", Ġcontents Ġ= Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile ( name Ġ= Ġ" external s . url ", Ġcontents Ġ= Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile ( name Ġ= Ġ" catalog . cat ", Ġcontents Ġ= Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( task , Ġname Ġ= Ġ" task "). all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop ( X jc Generate :: source ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains Only ( project . file (" src / main / schema / schema . xsd ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop ( X jc Generate :: binding Files ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains Only ( project . file (" src / main / schema / binding . x jb ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop ( X jc Generate :: url Sources ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains Only ( project . file (" src / main / schema / external s . url ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop ( X jc Generate :: catalog s ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains Only ( project . file (" src / main / schema / catalog . cat ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġit (" should Ġset Ġtask Ġclass paths Ġfrom Ġconfigurations ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġproject . tasks . get ByName (" x jc Generate ") Ġas ĠX jc Generate ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . dependencies . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x jc Classpath ", Ġproject . files (" custom - jax b - plugin - 1 . 2 . 3 . jar ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . dependencies . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x jc Episode s ", Ġproject . files (" custom - episode - 1 . 2 . 3 . jar ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( task , Ġname Ġ= Ġ" task "). all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop ( X jc Generate :: plugin Classpath ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains Only ( project . file (" custom - jax b - plugin - 1 . 2 . 3 . jar ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop ( X jc Generate :: episodes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains Only ( project . file (" custom - episode - 1 . 2 . 3 . jar ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġit (" should Ġuse Ġthe Ġcatalog Ġresolution Ġclasspath ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġproject . tasks . get ByName (" x jc Generate ") Ġas ĠX jc Generate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcatalog Resolution Config Ġ= Ġproject . configurations . get ByName (" x jc Catalog Resolution ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( task , Ġname Ġ= Ġ" task "). all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop ( X jc Generate :: catalog Resolution Classpath ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. hasValue EqualTo ( catalog Resolution Config ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġit (" should Ġset Ġtask Ġproperties Ġfrom Ġsource Ġset ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmain Source Set Ġ= Ġproject . source Sets . get ByName (" main ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx jc Source Set Convention Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( main Source Set Ġas ĠHas Convention ). required Convention < X jc Source Set Convention >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġproject . tasks . get ByName (" x jc Generate ") Ġas ĠX jc Generate ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġx jc Source Set Convention . x jc Target Package . set (" com . example ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx jc Source Set Convention . x jc Generate Episode . set ( true ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( task , Ġname Ġ= Ġ" task "). all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop ( X jc Generate :: target Package ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. hasValue EqualTo (" com . example ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop ( X jc Generate :: generate Episode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. hasValue EqualTo ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġit (" should Ġadd Ġextra Ġargs Ġfrom Ġglobal Ġx jc Ġextension Ġand Ġfrom Ġsource Ġset ") Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( project . required Extension < X jc Extension >()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextra Args . add ("- extra 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmain Source Set Ġ= Ġproject . source Sets . get ByName (" main ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx jc Source Set Convention Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( main Source Set Ġas ĠHas Convention ). required Convention < X jc Source Set Convention >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx jc Source Set Convention . x jc Extra Args . add ("- extra 2 ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġproject . tasks . get ByName (" x jc Generate ") Ġas ĠX jc Generate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . extra Args . add ("- extra 3 ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( task , Ġname Ġ= Ġ" task ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. prop ( X jc Generate :: extra Args ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isPresent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains Exactly ("- extra 1 ", Ġ"- extra 2 ", Ġ"- extra 3 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġit (" should Ġset Ġoutput Ġdirectories ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġproject . tasks . get ByName (" x jc Generate ") Ġas ĠX jc Generate ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( task , Ġname Ġ= Ġ" task "). all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop ( X jc Generate :: output Directory ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. dir Value (). isEqualTo ( project . file (" build / generated / sources / x jc / java / main ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop ( X jc Generate :: episode Output Directory ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. dir Value (). isEqualTo ( project . file (" build / generated / resources / x jc / main ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ