/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 Ġ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 . gl ance . we ar Ċ Ċ import Ġandroid . os . Looper Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . gl ance . text . Text Ċ import Ġandroidx . we ar . tiles . Layout Element Builders Ċ import Ġandroidx . we ar . tiles . Request Builders Ċ import Ġandroidx . we ar . tiles . testing . Test Tile Client Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġkotlinx . coroutines . Coroutine Dispatcher Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . gu ava . await Ċ import Ġkotlinx . coroutines . test . Test Coroutine Scope Ċ import Ġkotlinx . coroutines . test . run Blocking Test Ċ 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 . Shadow s . shadow Of Ċ import Ġkotlin . test . assertIs Ċ Ċ @ Opt In ( Experimental Cor outines Api :: class , ĠExperimental Std lib Api :: class ) Ċ @ RunWith ( Ro bo lectric TestRunner :: class ) Ċ class ĠGl ance Tile Service Test Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfake Coroutine Scope : ĠTest Coroutine Scope ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtile Service : ĠTest Gl ance Tile Service ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtile ServiceClient : ĠTest Tile Client < Gl ance Tile Service > ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġfake Coroutine Scope Ġ= ĠTest Coroutine Scope () ĊĠĠĠĠĠĠĠ Ġtile Service Ġ= ĠTest Gl ance Tile Service () ĊĠĠĠĠĠĠĠ Ġtile ServiceClient Ġ= ĠTest Tile Client ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtile Service , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfake Coroutine Scope , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfake Coroutine Scope . coroutine Context [ Coroutine Dispatcher ] !! ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtile Provider Returns Tile () Ġ= Ġfake Coroutine Scope . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġthe Ġcomposition Ġto Ġthe Ġservice . ĊĠĠĠĠĠĠĠ Ġtile Service . actual Content Ġ= Ġ{ ĠText (" Hello ĠWorld !") Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠRequest Ġis Ġcurrently Ġun - used , Ġprovide Ġan Ġempty Ġone . ĊĠĠĠĠĠĠĠ Ġval Ġtile Request Ġ= ĠRequest Builders . Tile Request . Builder (). build () ĊĊĠĠĠĠĠĠĠ Ġ// ĠRequests Ġneed Ġto Ġbe Ġsplit ; Ġwe Ġneed Ġto Ġallow ĠRo bo lectric Ġto Ġschedule Ġthe Ġservice Ġcalls Ġon ĊĠĠĠĠĠĠĠ Ġ// Ġthe Ġmain Ġlo oper , Ġso Ġwe Ġcan 't Ġjust Ġdo Ġrequest Tile (). await (). ĊĠĠĠĠĠĠĠ Ġval Ġtile Future Ġ= Ġtile ServiceClient . request Tile ( tile Request ) ĊĠĠĠĠĠĠĠ Ġshadow Of ( Looper . get Main Looper ()). idle () ĊĠĠĠĠĠĠĠ Ġval Ġtile Ġ= Ġtile Future . await () ĊĊĠĠĠĠĠĠĠ Ġ// ĠJust Ġuses Ġa Ġsimple Ġresource Ġversion Ġfor Ġnow . ĊĠĠĠĠĠĠĠ ĠassertThat ( tile . resources Version ). isEqualTo ( Gl ance Tile Service . Resources Version ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠNo Ġfresh ness Ġinterval Ġ( for Ġnow ) ĊĠĠĠĠĠĠĠ ĠassertThat ( tile . fresh ness Interval Millis ). isEqualTo ( 0 ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( tile . timeline !!. timeline Entries ). has Size ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġentry Ġ= Ġtile . timeline !!. timeline Entries [ 0 ] ĊĠĠĠĠĠĠĠ ĠassertThat ( entry . validity ). isNull () ĊĊĠĠĠĠĠĠĠ Ġ// ĠIt Ġalways Ġemits Ġa Ġbox Ġas Ġthe Ġroot - level Ġlayout . ĊĠĠĠĠĠĠĠ Ġval Ġbox Ġ= Ġassert Is < Layout Element Builders . Box >( entry . layout !!. root !! ) ĊĠĠĠĠĠĠĠ ĠassertThat ( box . contents ). has Size ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġassert Is < Layout Element Builders . Text >( box . contents [ 0 ]) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( text . text !!. value ). isEqualTo (" Hello ĠWorld !") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtile Provider Returns Resources () Ġ= Ġfake Coroutine Scope . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġservice Ġdoesn 't Ġuse Ġresources Ġright Ġnow , Ġbut Ġit Ġmust Ġcorrectly Ġrespond Ġto ĊĠĠĠĠĠĠĠ Ġ// Ġon Resources Request . ĠJust Ġensure Ġthat Ġthe Ġversion Ġis Ġset Ġcorrectly . ĊĠĠĠĠĠĠĠ Ġval Ġresources Request Ġ= ĠRequest Builders . Resources Request . Builder (). build () ĊĊĠĠĠĠĠĠĠ Ġval Ġresources Future Ġ= Ġtile ServiceClient . request Resources ( resources Request ) ĊĠĠĠĠĠĠĠ Ġshadow Of ( Looper . get Main Looper ()). idle () ĊĠĠĠĠĠĠĠ Ġval Ġresources Ġ= Ġresources Future . await () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( resources . version ). isEqualTo ( Gl ance Tile Service . Resources Version ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠTest Gl ance Tile Service Ġ: ĠGl ance Tile Service () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġactual Content : Ġ@ Composable Ġ() Ġ-> ĠUnit Ġ= Ġ{} ĊĊĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠContent () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Content () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }