// ĠCopyright Ġ 2 0 2 1 ĠGoogle ĠLLC Ċ // Ċ // Ġ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 . google . firebase . ml . model downloader . k tx Ċ Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġcom . google . firebase . Firebase App Ċ import Ġcom . google . firebase . Firebase Options Ċ import Ġcom . google . firebase . k tx . Firebase Ċ import Ġcom . google . firebase . k tx . app Ċ import Ġcom . google . firebase . k tx . initialize Ċ import Ġcom . google . firebase . ml . model downloader . Custom Model Ċ import Ġcom . google . firebase . ml . model downloader . Firebase Model Downloader Ċ import Ġcom . google . firebase . platform info . UserAgent Publisher Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . ro bo lectric . Ro bo lectric TestRunner Ċ import Ġorg . ro bo lectric . Runtime Environment Ċ Ċ const Ġval ĠAPP _ ID Ġ= Ġ" 1 : 1 2 3 4 5 6 7 8 9 0 : android : 3 2 1 abc 4 5 6 def 7 8 9 0 " Ċ const Ġval ĠAPI _ KEY Ġ= Ġ" AI za Sy DOC Ab C 1 2 3 d Ef 4 5 6 Gh I 7 8 9 j Kl 0 1 2 - Mn O " Ċ Ċ const Ġval ĠEX IST ING _ APP Ġ= Ġ" existing " Ċ Ċ abstract Ġclass ĠBase TestCase Ġ{ ĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ ĠFirebase . initialize ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRuntime Environment . application , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Options . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Application Id ( APP _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ApiKey ( API _ KEY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ProjectId (" 1 2 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠFirebase . initialize ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRuntime Environment . application , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Options . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Application Id ( APP _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ApiKey ( API _ KEY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ProjectId (" 1 2 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEX IST ING _ APP ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun Ġclean Up () Ġ{ ĊĠĠĠĠĠĠĠ ĠFirebase App . clear Instances For Test () ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ RunWith ( Ro bo lectric TestRunner :: class ) Ċ class ĠModel Downloader Tests Ġ: ĠBase TestCase () Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` model Downloader Ġshould Ġdelegate Ġto ĠFirebase Model Downloader # getInstance ()` () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( Firebase . model Downloader ). is Same Instance As ( Firebase Model Downloader . getInstance ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Firebase # model Downloader ( Firebase App ) Ġshould Ġdelegate Ġto ĠFirebase Model Downloader # getInstance ( Firebase App )` () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp Ġ= ĠFirebase . app ( EXIST ING _ APP ) ĊĠĠĠĠĠĠĠ ĠassertThat ( Firebase . model Downloader ( app )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. is Same Instance As ( Firebase Model Downloader . getInstance ( app )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Custom Model Download Conditions Ġbuilder Ġworks `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconditions Ġ= Ġcustom Model Download Conditions Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Ch arging () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Device Idle () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( conditions . is Ch arging Required ). isEqualTo ( true ) ĊĠĠĠĠĠĠĠ ĠassertThat ( conditions . is Wifi Required ). isEqualTo ( false ) ĊĠĠĠĠĠĠĠ ĠassertThat ( conditions . is Device Idle Required ). isEqualTo ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Custom Model Ġdestruct uring Ġdeclarations Ġwork `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmodel Name Ġ= Ġ" my Model " ĊĠĠĠĠĠĠĠ Ġval Ġmodel Hash Ġ= Ġ" some Hash " ĊĠĠĠĠĠĠĠ Ġval ĠfileSize Ġ= Ġ 2 0 0 L ĊĠĠĠĠĠĠĠ Ġval Ġdownload Id Ġ= Ġ 2 5 8 L ĊĊĠĠĠĠĠĠĠ Ġval Ġcustom Model Ġ= ĠCustom Model ( model Name , Ġmodel Hash , ĠfileSize , Ġdownload Id ) ĊĊĠĠĠĠĠĠĠ Ġval Ġ( file , Ġsize , Ġid , Ġhash , Ġname ) Ġ= Ġcustom Model ĊĊĠĠĠĠĠĠĠ ĠassertThat ( name ). isEqualTo ( custom Model . name ) ĊĠĠĠĠĠĠĠ ĠassertThat ( hash ). isEqualTo ( custom Model . model Hash ) ĊĠĠĠĠĠĠĠ ĠassertThat ( size ). isEqualTo ( custom Model . size ) ĊĠĠĠĠĠĠĠ ĠassertThat ( id ). isEqualTo ( custom Model . download Id ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ RunWith ( Ro bo lectric TestRunner :: class ) Ċ class ĠLibrary Version Test Ġ: ĠBase TestCase () Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` library Ġversion Ġshould Ġbe Ġregistered Ġwith Ġruntime `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpublisher Ġ= ĠFirebase . app . get ( UserAgent Publisher :: class . java ) ĊĠĠĠĠĠĠĠ ĠassertThat ( publisher . userAgent ). contains ( LIBRARY _ NAME ) ĊĠĠĠ Ġ} Ċ } Ċ