/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 Ġ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 . ui . test Ċ Ċ import Ġandroid . util . Display Metrics Ċ import Ġandroidx . compose . Composable Ċ import Ġandroidx . test . rule . Activity Test Rule Ċ import Ġandroidx . ui . core . Density Ċ import Ġandroidx . ui . test . android . Android Compose Test Rule Ċ import Ġorg . junit . rules . Test Rule Ċ Ċ /** Ċ Ġ* ĠEnables Ġto Ġrun Ġtests Ġof Ġindividual Ġcomp os ables Ġwithout Ġhaving Ġto Ġdo Ġmanual Ġsetup . ĠFor ĠAndroid Ċ Ġ* Ġtests Ġsee Ġ[ Android Compose Test Rule ]. ĠNorm ally Ġthis Ġrule Ġis Ġobtained Ġby Ġusing Ġ[ create Compose Rule ] Ċ Ġ* Ġfactory Ġthat Ġprovides Ġproper Ġimplementation Ġ( depend ing Ġif Ġrunning Ġhost Ġside Ġor ĠAndroid Ġside ). Ċ Ġ* Ċ Ġ* ĠHowever Ġif Ġyou Ġreally Ġneed ĠAndroid Ġspecific Ġdependencies Ġand Ġdon 't Ġwant Ġyour Ġtest Ġto Ġbe Ġabstract Ċ Ġ* Ġyou Ġcan Ġstill Ġcreate Ġ[ Android Compose Test Rule ] Ġdirectly Ġand Ġaccess Ġits Ġunderlying ĠActivity Test Rule Ċ Ġ*/ Ċ interface ĠCompose Test Rule Ġ: ĠTest Rule Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCurrent Ġdevice Ġscreen 's Ġdensity . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġdensity : ĠD ensity Ġget ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġthe Ġgiven Ġcomp osable Ġas Ġa Ġcontent Ġof Ġthe Ġcurrent Ġscreen . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Content ( comp osable : Ġ@ Composable () Ġ() Ġ-> ĠUnit ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRuns Ġaction Ġon ĠUI Ġthread Ġwith Ġa Ġguarantee Ġthat Ġany Ġoperations Ġmodifying ĠCompose Ġdata Ġmodel ĊĠĠĠĠ Ġ* Ġare Ġsafe Ġto Ġdo Ġin Ġthis Ġblock . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġrun On Ui Thread ( action : Ġ() Ġ-> ĠUnit ) ĊĊĠĠĠ Ġ// ĠTODO ( p av lis ): ĠProvide Ġbetter Ġabstraction Ġfor Ġhost Ġside Ġre us ability ĊĠĠĠ Ġval Ġdisplay Metrics : ĠDisplay Metrics Ġget Ċ } Ċ Ċ /** Ċ Ġ* ĠFactory Ġmethod Ġto Ġprovide Ġimplementation Ġof Ġ[ Compose Test Rule ]. Ċ Ġ*/ Ċ fun Ġcreate Compose Rule ( disable Transitions : ĠBoolean Ġ= Ġfalse ): ĠCompose Test Rule Ġ{ ĊĠĠĠ Ġreturn Ġcreate Compose Rule ( disable Transitions , Ġthrow On Re compose Timeout Ġ= Ġfalse ) Ċ } Ċ Ċ /** Ċ Ġ* ĠInternal Ġfactory Ġmethod Ġto Ġprovide Ġimplementation Ġof Ġ[ Compose Test Rule ]. Ċ Ġ*/ Ċ internal Ġfun Ġcreate Compose Rule ( ĊĠĠĠ Ġdisable Transitions : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġthrow On Re compose Timeout : ĠBoolean Ġ= Ġfalse Ċ ): ĠCompose Test Rule Ġ{ ĊĠĠĠ Ġ// ĠTODO ( p av lis ): ĠPlug - in Ġhost Ġside Ġrule Ġhere Ġin Ġthe Ġfuture . ĊĠĠĠ Ġreturn ĠAndroid Compose Test Rule ( disable Transitions , Ġthrow On Re compose Timeout ) Ċ }