/* Ċ Ġ* Ġ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 . project model Ċ Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġorg . junit . Test Ċ Ċ /** Ċ Ġ* ĠTests Ġfor Ġ[ Config Table ] Ċ Ġ*/ Ċ class ĠConfig Table Test Ġ{ ĊĠĠĠ Ġprivate Ġval Ġmain Ġ= ĠConfig ( application Id Suffix Ġ= Ġ"") ĊĠĠĠ Ġprivate Ġval Ġdemo Ġ= ĠConfig ( application Id Suffix Ġ= Ġ" demo ") ĊĠĠĠ Ġprivate Ġval Ġfull Ġ= ĠConfig ( application Id Suffix Ġ= Ġ" full ") ĊĠĠĠ Ġprivate Ġval Ġh ires Ġ= ĠConfig ( application Id Suffix Ġ= Ġ" h ires ") ĊĠĠĠ Ġprivate Ġval Ġlow res Ġ= ĠConfig ( application Id Suffix Ġ= Ġ" low res ") ĊĠĠĠ Ġprivate Ġval Ġdebug Ġ= ĠConfig ( application Id Suffix Ġ= Ġ" debug ") ĊĠĠĠ Ġprivate Ġval Ġrelease Ġ= ĠConfig ( application Id Suffix Ġ= Ġ" release ") ĊĠĠĠ Ġprivate Ġval Ġapp Ġ= ĠConfig ( application Id Suffix Ġ= Ġ" app ") ĊĠĠĠ Ġprivate Ġval Ġtests Ġ= ĠConfig ( application Id Suffix Ġ= Ġ" tests ") ĊĠĠĠ Ġprivate Ġval Ġfull H ires Ġ= ĠConfig ( application Id Suffix Ġ= Ġ" full H ires ") ĊĊĠĠĠ Ġprivate Ġval Ġfull H ires Release App Path Ġ= Ġmatch Artifact sWith (" full / h ires / release /${ AR TI FACT _ NAME _ MAIN }") ĊĊĠĠĠ Ġprivate Ġval Ġschema Ġ= ĠConfig Table Schema ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Dimension (" is Demo ", ĠlistOf (" demo ", Ġ" full ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Dimension (" res ", ĠlistOf (" h ires ", Ġ" low res ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Dimension (" build Type ", ĠlistOf (" debug ", Ġ" release ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Dimension (" artifact ", ĠlistOf ( AR TI FACT _ NAME _ MAIN , ĠAR TI FACT _ NAME _ UNIT _ TEST )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġval Ġtable Ġ= ĠConfig Table ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġschema Ġ= Ġschema , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassociations Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( match All Artifacts (), Ġmain ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( schema . path For (" demo "), Ġdemo ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( schema . path For (" full "), Ġfull ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( schema . path For (" h ires "), Ġh ires ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( schema . path For (" low res "), Ġlow res ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( schema . path For (" full "). intersect ( schema . path For (" h ires ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfull H ires ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( schema . path For (" debug "), Ġdebug ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( schema . path For (" release "), Ġrelease ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( schema . path For ( AR TI FACT _ NAME _ MAIN ), Ġapp ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( schema . path For ( AR TI FACT _ NAME _ UNIT _ TEST ), Ġtests ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Generate Artifacts () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġartifacts Ġ= Ġtable . generate Artifacts () ĊĊĠĠĠĠĠĠĠ Ġval Ġvariant Path Ġ= Ġsubmodule Path Of (" demo ", Ġ" low res ", Ġ" debug ") ĊĠĠĠĠĠĠĠ Ġval Ġdemo Low res Debug Ġ= Ġartifacts [ variant Path Ġ+ ĠAR TI FACT _ NAME _ MAIN ] ĊĠĠĠĠĠĠĠ ĠassertThat ( artifacts . size ). isEqualTo ( 1 6 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( demo Low res Debug !!. resolved . application Id Suffix ). isEqualTo (" demo low res debug app ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Configs () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( table . configs ). isEqualTo ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdemo , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh ires , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlow res , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfull H ires , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdebug , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelease , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtests )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Configs Containing () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠLoc ate Ġall Ġconfigs Ġcommon Ġto Ġall Ġartifacts Ġin Ġthe Ġfull H ires Release App Ġvariant ĊĠĠĠĠĠĠĠ ĠassertThat ( table . filter Ġ{ Ġit . path . contains ( full H ires Release App Path ) Ġ}. configs ). isEqualTo ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh ires , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfull H ires , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelease , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp )) ĊĠĠĠĠĠĠĠ Ġ// ĠLoc ate Ġconfigs Ġcommon Ġto Ġall Ġartifacts Ġin Ġthe Ġfull Ġflavor ĊĠĠĠĠĠĠĠ ĠassertThat ( table . filter Ġ{ Ġit . path . contains ( schema . path For (" full ")) Ġ}. configs ). isEqualTo ( listOf ( main , Ġfull )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Configs Intersect ing () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠLoc ate Ġall Ġconfigs Ġused Ġby Ġany Ġartifact Ġin Ġthe Ġfull H ires Release App Ġvariant ĊĠĠĠĠĠĠĠ ĠassertThat ( table . configs Intersect ing ( full H ires Release App Path )). isEqualTo ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh ires , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfull H ires , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelease , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp )) ĊĠĠĠĠĠĠĠ Ġ// ĠLoc ate Ġconfigs Ġused Ġby Ġany Ġartifact Ġin Ġthe Ġ" full " Ġflavor ĊĠĠĠĠĠĠĠ ĠassertThat ( table . configs Intersect ing ( schema . path For (" full ")) ). isEqualTo ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh ires , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlow res , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfull H ires , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdebug , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelease , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtests )) ĊĠĠĠĠĠĠĠ Ġ// ĠLoc ate Ġconfigs Ġused Ġby Ġany Ġartifact Ġin Ġthe Ġ" demo " Ġflavor ĊĠĠĠĠĠĠĠ ĠassertThat ( table . configs Intersect ing ( schema . path For (" demo ")) ). isEqualTo ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdemo , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh ires , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlow res , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdebug , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelease , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtests )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠEnsure Ġthat Ġthe ĠSub module Path ĊĠĠĠĠĠĠĠ ĠassertThat ( table . configs Intersect ing ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubmodule Path For String (" full / h ires / release /${ AR TI FACT _ NAME _ MAIN } "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( table . configs Intersect ing ( full H ires Release App Path )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Configs Not Containing () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠLoc ate Ġall Ġconfigs Ġthat Ġaren 't Ġcommon Ġto Ġall Ġartifacts Ġin Ġthe Ġfull H ires Release App Ġvariant ĊĠĠĠĠĠĠĠ ĠassertThat ( table . filter Ġ{ Ġ! it . path . contains ( full H ires Release App Path ) Ġ}. configs ). isEqualTo ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdemo , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlow res , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdebug , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtests )) ĊĠĠĠĠĠĠĠ Ġ// ĠLoc ate Ġall Ġconfigs Ġthat Ġaren 't Ġcommon Ġto Ġall Ġartifacts Ġin Ġthe Ġfull Ġflavor ĊĠĠĠĠĠĠĠ ĠassertThat ( table . filter Ġ{ Ġ! it . path . contains ( schema . path For (" full ")) Ġ}. configs ). isEqualTo ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdemo , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh ires , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlow res , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfull H ires , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdebug , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelease , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtests )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Configs Not Intersect ing () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠLoc ate Ġall Ġconfigs Ġused Ġby Ġany Ġartifact Ġin Ġthe Ġfull H ires Release App Ġvariant ĊĠĠĠĠĠĠĠ ĠassertThat ( table . configs Not Intersect ing ( full H ires Release App Path )). isEqualTo ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdemo , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlow res , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdebug , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtests )) ĊĠĠĠĠĠĠĠ Ġ// ĠLoc ate Ġconfigs Ġused Ġby Ġany Ġartifact Ġin Ġthe Ġ" full " Ġflavor ĊĠĠĠĠĠĠĠ ĠassertThat ( table . configs Not Intersect ing ( schema . path For (" full ")) ). isEqualTo ( listOf ( demo )) ĊĠĠĠĠĠĠĠ Ġ// ĠLoc ate Ġconfigs Ġused Ġby Ġany Ġartifact Ġin Ġthe Ġ" demo " Ġflavor ĊĠĠĠĠĠĠĠ ĠassertThat ( table . configs Not Intersect ing ( schema . path For (" demo ")) ). isEqualTo ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfull H ires )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Filter Containing () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠLoc ate Ġconfigs Ġthat Ġare Ġused Ġby Ġall Ġvariants Ġof Ġthe Ġ" tests " Ġartifact . ĊĠĠĠĠĠĠĠ Ġval Ġfiltered Ġ= Ġtable . filter Ġ{ Ġit . path . contains ( match Artifact sWith ("* /* /* /${ AR TI FACT _ NAME _ UNIT _ TEST } ")) Ġ} ĊĠĠĠĠĠĠĠ ĠassertThat ( filtered . schema ). isEqualTo ( table . schema ) ĊĠĠĠĠĠĠĠ ĠassertThat ( filtered . configs ). isEqualTo ( listOf ( main , Ġtests )) ĊĠĠĠĠĠĠĠ ĠassertThat ( filtered . associ ations ). isEqualTo ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( match All Artifacts (), Ġmain ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( schema . path For ("${ AR TI FACT _ NAME _ UNIT _ TEST } "), Ġtests ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Filter Not Containing () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠLoc ate Ġall Ġconfigs Ġthat Ġaren 't Ġcommon Ġto Ġthe Ġapp Ġartifact Ġin Ġthe Ġdemo / low res Ġflavor ĊĠĠĠĠĠĠĠ Ġ// Ġacross Ġall Ġbuild Ġtypes . ĊĠĠĠĠĠĠĠ Ġval Ġfiltered Ġ= Ġtable . filter Ġ{ Ġ! it . path . contains ( match Artifact sWith (" demo / low res /* /${ AR TI FACT _ NAME _ MAIN } ")) Ġ} ĊĠĠĠĠĠĠĠ ĠassertThat ( filtered . schema ). isEqualTo ( table . schema ) ĊĠĠĠĠĠĠĠ ĠassertThat ( filtered . configs ). isEqualTo ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh ires , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfull H ires , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdebug , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelease , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtests )) ĊĠĠĠĠĠĠĠ ĠassertThat ( filtered . associ ations ). isEqualTo ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( match Artifact sWith (" full "), Ġfull ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( match Artifact sWith (" */ h ires "), Ġh ires ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( match Artifact sWith (" full / h ires "), Ġfull H ires ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( match Artifact sWith ("* /*/ debug "), Ġdebug ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( match Artifact sWith ("* /*/ release "), Ġrelease ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( match Artifact sWith ("* /* /* /${ AR TI FACT _ NAME _ UNIT _ TEST } "), Ġtests ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Filter Intersect ing () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠLoc ate Ġall Ġconfigs Ġused Ġby Ġany Ġvariant Ġof Ġthe Ġh ires Ġapp Ġartifact ĊĠĠĠĠĠĠĠ Ġval Ġfiltered Ġ= Ġtable . filter Intersect ing ( match Artifact sWith (" */ h ires /* /${ AR TI FACT _ NAME _ MAIN } ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( filtered . schema ). isEqualTo ( table . schema ) ĊĠĠĠĠĠĠĠ ĠassertThat ( filtered . configs ). isEqualTo ( listOf ( main , Ġdemo , Ġfull , Ġh ires , Ġfull H ires , Ġdebug , Ġrelease , Ġapp )) ĊĠĠĠĠĠĠĠ ĠassertThat ( filtered . associ ations ). isEqualTo ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( match All Artifacts (), Ġmain ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( match Artifact sWith (" demo "), Ġdemo ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( match Artifact sWith (" full "), Ġfull ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( match Artifact sWith (" */ h ires "), Ġh ires ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( match Artifact sWith (" full / h ires "), Ġfull H ires ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( match Artifact sWith ("* /*/ debug "), Ġdebug ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( match Artifact sWith ("* /*/ release "), Ġrelease ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( match Artifact sWith ("* /* /* /${ AR TI FACT _ NAME _ MAIN } "), Ġapp ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Filter Not Intersect ing () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠLoc ate Ġall Ġconfigs Ġthat Ġaren 't Ġused Ġby Ġany Ġvariant Ġof Ġthe Ġh ires Ġapp Ġartifact ĊĠĠĠĠĠĠĠ Ġval Ġfiltered Ġ= Ġtable . filter Not Intersect ing ( match Artifact sWith (" */ h ires /* /${ AR TI FACT _ NAME _ MAIN } ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( filtered . schema ). isEqualTo ( table . schema ) ĊĠĠĠĠĠĠĠ ĠassertThat ( filtered . configs ). isEqualTo ( listOf ( low res , Ġtests )) ĊĠĠĠĠĠĠĠ ĠassertThat ( filtered . associ ations ). isEqualTo ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( match Artifact sWith (" */ low res "), Ġlow res ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( match Artifact sWith ("* /* /* /${ AR TI FACT _ NAME _ UNIT _ TEST } "), Ġtests ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Single Element Config Table Constructor () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= ĠConfig ( version Name Suffix Ġ= Ġ" foo ") ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġconfig Table With ( config ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġconfig Table With ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Table Schema ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Dimension ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAR TI FACT _ DIMENSION _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( AR TI FACT _ NAME _ MAIN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( AR TI FACT _ NAME _ MAIN Ġto Ġconfig ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( actual ). isEqualTo ( expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTests Ġthe Ġ[ Config Table Schema . build Table ] Ġfactory Ġmethod Ġthat Ġbuilds Ġ[ Config Table ] Ġinstances ĊĠĠĠĠ Ġ* Ġgiven Ġa Ġschema Ġand Ġa Ġlist Ġof Ġ[ Config ] Ġinstances Ġalong Ġwith Ġtheir Ġsimple Ġpath Ġnames . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Build Table () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġschema . build Table ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġto Ġmain , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" full " Ġto Ġfull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" h ires " Ġto Ġh ires , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" low res " Ġto Ġlow res , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAR TI FACT _ NAME _ MAIN Ġto Ġapp ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠConfig Table ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġschema , ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( match All Artifacts (), Ġmain ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( schema . path For (" full "), Ġfull ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( schema . path For (" h ires "), Ġh ires ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( schema . path For (" low res "), Ġlow res ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( schema . path For ( AR TI FACT _ NAME _ MAIN ), Ġapp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( actual ). isEqualTo ( expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTests Ġthe Ġ[ config Table With ] Ġfactory Ġmethod Ġthat Ġbuilds Ġ[ Config Table ] Ġinstances ĊĠĠĠĠ Ġ* Ġgiven Ġa Ġschema Ġand Ġa Ġmap Ġlist Ġof Ġ[ Config ] Ġinstances Ġalong Ġwith Ġtheir Ġsimple Ġpath Ġnames . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Config Table With () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġconfig Table With ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġschema , Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġto Ġmain , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" full " Ġto Ġfull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" h ires " Ġto Ġh ires , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" low res " Ġto Ġlow res , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAR TI FACT _ NAME _ MAIN Ġto Ġapp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠConfig Table ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġschema , ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( match All Artifacts (), Ġmain ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( schema . path For (" full "), Ġfull ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( schema . path For (" h ires "), Ġh ires ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( schema . path For (" low res "), Ġlow res ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Association ( schema . path For ( AR TI FACT _ NAME _ MAIN ), Ġapp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( actual ). isEqualTo ( expected ) ĊĠĠĠ Ġ} Ċ } Ċ