/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 Ġcom . android . build . gradle . integration . databinding Ċ Ċ import Ġcom . android . Sdk Constants Ċ import Ġcom . android . build . gradle . integration . common . fixture . Gradle Test Project Ċ import Ġcom . android . build . gradle . integration . common . runner . Filter able Parameterized Ċ import Ġcom . android . build . gradle . integration . common . truth . Truth Helper . assertThat Ċ import Ġcom . android . build . gradle . integration . common . utils . Test FileUtils Ċ import Ġcom . android . build . gradle . internal . scope . Internal Artifact Type . DATA _ BINDING _ DEPEND ENCY _ AR TI FACT S Ċ import Ġcom . android . build . gradle . internal . scope . getOutput Dir Ċ import Ġcom . android . build . gradle . options . Boolean Option Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . junit . runners . Parameterized Ċ import Ġjava . io . File Ċ Ċ /** ĠAs semble Ġtests Ġfor Ġkotlin . Ġ*/ Ċ @ RunWith ( Filter able Parameterized :: class ) Ċ class ĠData Binding Kotlin App Test ( use Android X : ĠBoolean ) Ġ{ ĊĠĠĠ Ġ@ Rule ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġval Ġproject Ġ= ĊĠĠĠĠĠĠĠ ĠGradle Test Project . builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from Test Project (" databinding And Kotlin ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Dependency Checker ( false ) Ġ// Ġbreaks Ġw / Ġk apt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Gradle Properties ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBoolean Option . USE _ ANDROID _ X . propertyName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ"=" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġuse Android X ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Parameterized . Parameters ( name Ġ= Ġ" use Android X _{ 0 }") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġparams () Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( true ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( false ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcompile () Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . executor (). run (" app : assemble Debug ") ĊĠĠĠĠĠĠĠ Ġval Ġapp Ġ= Ġproject . getSub project (" app ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠDependency Ġartifacts Ġshould Ġbe Ġpresent : Ġ 2 Ġfrom Ġandroidx . databinding . library . base Adapters ĊĠĠĠĠĠĠĠ Ġ// Ġand Ġ 2 Ġfrom Ġthe Ġlibrary Ġsub project Ġ( regression Ġtest Ġfor Ġbug Ġ 1 6 1 8 1 4 3 9 1 ). ĊĠĠĠĠĠĠĠ Ġval Ġdependency Artifacts Dir Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( DATA _ BINDING _ DEPEND ENCY _ AR TI FACT S . getOutput Dir ( app . build Dir ), Ġ" debug ") ĊĠĠĠĠĠĠĠ ĠassertThat ( dependency Artifacts Dir . list (). size ). isEqualTo ( 4 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck ĠA PK 's Ġcontents ĊĠĠĠĠĠĠĠ Ġval Ġapp Binding Class Ġ= Ġ" L com / example / android / kotlin / databinding / Activity Layout Binding ;" ĊĠĠĠĠĠĠĠ Ġval Ġlib Binding Class Ġ= Ġ" L com / example / android / kotlin / lib / databinding / Lib Activity Layout Binding ;" ĊĠĠĠĠĠĠĠ Ġapp . get A pk ( Gradle Test Project . A pk Type . DEBUG ). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( it ). contains Class ( app Binding Class ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( it ). contains Class ( lib Binding Class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġimplementations Ġshould Ġbe Ġin Ġas Ġwell . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( it ). contains Class ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Binding Class . replace (" ;", Ġ" Impl ; ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( it ). contains Class ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlib Binding Class . replace (" ;", Ġ" Impl ; ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshow Error On Manual Version Mismatch () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk apt Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk apt Ġ"${ Sdk Constants . DATA _ BINDING _ AN NOT ATION _ PROCESS OR _ AR TI FACT }: 3 . 0 . 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ ĠTest FileUtils . append ToFile ( project . getSub project (": app "). build File , Ġk apt ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġproject . executor (). expect Failure (). run (" app : assemble Debug ") ĊĠĠĠĠĠĠĠ ĠassertThat ( result . failure Message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains (" Data ĠBinding Ġannotation Ġprocessor Ġversion Ġneeds Ġto Ġmatch Ġthe ") ĊĠĠĠ Ġ} Ċ } Ċ