/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 Ġ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 . multi dex Ċ Ċ import Ġcom . android . build . gradle . integration . common . fixture . Gradle Test Project Ċ import Ġcom . android . build . gradle . integration . common . fixture . app . Minimal Sub Project Ċ import Ġcom . android . build . gradle . integration . common . fixture . app . Test SourceFile Ċ import Ġcom . android . build . gradle . integration . common . truth . Truth Helper . assertThat Ċ import Ġcom . google . common . base . Throw ables Ċ import Ġcom . google . common . collect . Sets Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ Ċ /** ĠCheck Ġmulti dex Ġis Ġautomatically Ġenabled Ġfor Ġmin Ġsdk Ġ> Ġ 2 1 . Ġ Ġ*/ Ċ class ĠAuto Enable Multi dex Test Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġproject Ġ= ĠGradle Test Project . builder () ĊĠĠĠĠĠĠĠ Ġ. from Test App ( Minimal Sub Project . app (" com . example . helloworld "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend To Build ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflavor Dimensions Ġ" generation " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproduct Fl avors Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlegacy Ġ{ Ġmin Sdk Version Ġ 1 9 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Ġ{ Ġmin Sdk Version Ġ 2 1 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdex Method Limit Ġ= Ġ 1 L . sh l ( 1 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethods Ġ= Ġ( 0 .. ( dex Method Limit Ġ/ Ġ 3 Ġ+ Ġ 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ("\ n ĠĠĠ Ġ") Ġ{ Ġ" public Ġvoid Ġm $ it () Ġ{} " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd File ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest SourceFile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" src / main / java / com / example / helloworld ", Ġ" A $ i . java ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . example . helloworld ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠA $ i Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ$ methods ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ. create () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Auto Enable Multi dex () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġproject . executor (). expect Failure (). run (" assemble Legacy Debug ") ĊĠĠĠĠĠĠĠ ĠassertThat ( Throw ables . get StackTrace AsString ( result . exception !! )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains (" https :// developer . android . com / tools / building / multi dex . html ") ĊĊĠĠĠĠĠĠĠ Ġproject . executor (). run (" assemble Current Debug ") ĊĠĠĠĠĠĠĠ Ġval Ġdebug Ġ= Ġproject . get A pk ( Gradle Test Project . A pk Type . DEBUG , Ġ" current ") ĊĠĠĠĠĠĠĠ ĠassertThat ( debug . all Dex es ). has Size ( 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġclasses Ġ= Ġdebug . all Dex es [ 0 ]. classes . keys ĊĠĠĠĠĠĠĠ Ġval Ġclasses 2 Ġ= Ġdebug . all Dex es [ 1 ]. classes . keys ĊĠĠĠĠĠĠĠ ĠassertThat ( classes 2 ). named (" No Ġduplicate Ġclass Ġdefinitions "). contains None In ( classes ) ĊĠĠĠĠĠĠĠ ĠassertThat ( Sets . union ( classes , Ġclasses 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" L com / example / helloworld / A 0 ;", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" L com / example / helloworld / A 1 ;", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" L com / example / helloworld / A 2 ;", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" L com / example / helloworld / Build Config ;", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" L com / example / helloworld / R ;" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ