/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 Ġ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 Ġandroidx . h ilt . integration . worker app Ċ Ċ import Ġandroid . os . Build Ċ import Ġandroidx . h ilt . work . H ilt Worker Factory Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġandroidx . test . filters . Sdk Suppress Ċ import Ġandroidx . test . filters . Small Test Ċ import Ġandroidx . test . platform . app . Instrumentation Registry Ċ import Ġandroidx . work . List enable Worker Ċ import Ġandroidx . work . testing . Test List enable Worker Builder Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġdagger . h ilt . android . testing . H ilt Android Rule Ċ import Ġdagger . h ilt . android . testing . H ilt Android Test Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġjavax . inject . Inject Ċ Ċ @ Small Test Ċ @ H ilt Android Test Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ // ĠTODO : ĠFind Ġout Ġwhy Ġrandom ĠClass NotFoundException Ġis Ġthrown Ġin ĠAPIs Ġlower Ġthan Ġ 2 1 . Ċ @ Sdk Suppress ( min Sdk Version Ġ= ĠBuild . VERSION _ CODES . LO L LI POP ) Ċ class ĠSimple Test Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġtest Rule Ġ= ĠH ilt Android Rule ( this ) ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġh ilt Worker Factory : ĠH ilt Worker Factory ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Rule . inject () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Worker Inject () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= ĠInstrument ation Registry . get Instrumentation (). target Context ĊĠĠĠĠĠĠĠ Ġval Ġworker Ġ= ĠTest List enable Worker Builder < Simple Worker >( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Worker Factory ( h ilt Worker Factory ) ĊĠĠĠĠĠĠĠ Ġ}. build () ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġworker . do Work () ĊĠĠĠĠĠĠĠ ĠassertThat ( result ). isEqualTo ( List enable Worker . Result . success ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Coroutine Worker Inject () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= ĠInstrument ation Registry . get Instrumentation (). target Context ĊĠĠĠĠĠĠĠ Ġval Ġworker Ġ= ĠTest List enable Worker Builder < Simple Coroutine Worker >( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Worker Factory ( h ilt Worker Factory ) ĊĠĠĠĠĠĠĠ Ġ}. build () ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġworker . do Work () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). isEqualTo ( List enable Worker . Result . success ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Nested Worker Inject () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= ĠInstrument ation Registry . get Instrumentation (). target Context ĊĠĠĠĠĠĠĠ Ġval Ġworker Ġ= ĠTest List enable Worker Builder < Top Class . Nested Worker >( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Worker Factory ( h ilt Worker Factory ) ĊĠĠĠĠĠĠĠ Ġ}. build () ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġworker . do Work () ĊĠĠĠĠĠĠĠ ĠassertThat ( result ). isEqualTo ( List enable Worker . Result . success ()) ĊĠĠĠ Ġ} Ċ }