/* Ċ Ġ* ĠCopyright Ġ 2 0 2 2 Ġ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 . we ar . compose . material Ċ Ċ import Ġandroid . os . Build Ċ import Ġandroidx . compose . runtime . mutable State Of Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . platform . test Tag Ċ import Ġandroidx . compose . ui . semantics . ProgressBar Range Info Ċ import Ġandroidx . compose . ui . test . assert Range Info Equals Ċ import Ġandroidx . compose . ui . test . capture To Image Ċ import Ġandroidx . compose . ui . test . junit 4 . create Compose Rule Ċ import Ġandroidx . compose . ui . test . on Node With Tag Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . test . filters . Sdk Suppress Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ Ċ class ĠCircular In determinate Progress Indicator Test Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġrule Ġ= Ġcreate Compose Rule () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsupports _ test tag () Ġ{ ĊĠĠĠĠĠĠĠ Ġrule . setContent With Theme Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCircular Progress Indicator ( modifier Ġ= ĠModifier . test Tag ( TEST _ TAG )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrule . on Node With Tag ( TEST _ TAG ). assert Exists () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshows _ in determinate _ progress () Ġ{ ĊĠĠĠĠĠĠĠ Ġrule . setContent With Theme Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCircular Progress Indicator ( modifier Ġ= ĠModifier . test Tag ( TEST _ TAG )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrule . on Node With Tag ( TEST _ TAG ). assert Range Info Equals ( ProgressBar Range Info . In determinate ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Sdk Suppress ( min Sdk Version Ġ= ĠBuild . VERSION _ CODES . O ) ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcontains _ progress _ color () Ġ{ ĊĠĠĠĠĠĠĠ Ġrule . main Clock . auto Advance Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġrule . setContent With Theme Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCircular Progress Indicator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . test Tag ( TEST _ TAG ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindicator Color Ġ= ĠColor . Yellow , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrack Color Ġ= ĠColor . Red ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrule . waitFor Idle () ĊĠĠĠĠĠĠĠ Ġrule . main Clock . advance Time By ( 3 0 0 ) ĊĊĠĠĠĠĠĠĠ Ġrule . on Node With Tag ( TEST _ TAG ). capture To Image () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Color In Percentage Range ( Color . Yellow , Ġ 1 2 f .. 2 0 f ) ĊĠĠĠĠĠĠĠ Ġrule . on Node With Tag ( TEST _ TAG ). capture To Image () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Color In Percentage Range ( Color . Red , Ġ 5 f .. 1 5 f ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠCircular Determin ate Progress Indicator Test Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġrule Ġ= Ġcreate Compose Rule () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsupports _ test tag () Ġ{ ĊĠĠĠĠĠĠĠ Ġrule . setContent With Theme Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCircular Progress Indicator ( progress Ġ= Ġ 0 . 5 f , Ġmodifier Ġ= ĠModifier . test Tag ( TEST _ TAG )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrule . on Node With Tag ( TEST _ TAG ). assert Exists () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġchanges _ progress () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprogress Ġ= Ġmutable State Of ( 0 f ) ĊĊĠĠĠĠĠĠĠ Ġrule . setContent With Theme Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCircular Progress Indicator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . test Tag ( TEST _ TAG ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Ġ= Ġprogress . value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrule . on Node With Tag ( TEST _ TAG ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Range Info Equals ( ProgressBar Range Info ( 0 f , Ġ 0 f .. 1 f )) ĊĊĠĠĠĠĠĠĠ Ġrule . run On Idle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress . value Ġ= Ġ 0 . 5 f ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrule . on Node With Tag ( TEST _ TAG ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Range Info Equals ( ProgressBar Range Info ( 0 . 5 f , Ġ 0 f .. 1 f )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Sdk Suppress ( min Sdk Version Ġ= ĠBuild . VERSION _ CODES . O ) ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcontains _ progress _ color () Ġ{ ĊĠĠĠĠĠĠĠ Ġrule . setContent With Theme Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCircular Progress Indicator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . test Tag ( TEST _ TAG ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Ġ= Ġ 1 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindicator Color Ġ= ĠColor . Yellow , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrack Color Ġ= ĠColor . Red ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrule . waitFor Idle () ĊĠĠĠĠĠĠĠ Ġ// Ġby Ġdefault Ġfully Ġfilled Ġprogress Ġapproximately Ġtakes Ġ 2 3 - 2 6 % Ġof Ġthe Ġcontrol ĊĠĠĠĠĠĠĠ Ġrule . on Node With Tag ( TEST _ TAG ). capture To Image () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Color In Percentage Range ( Color . Yellow , Ġ 2 3 f .. 2 6 f ) ĊĠĠĠĠĠĠĠ Ġrule . on Node With Tag ( TEST _ TAG ). capture To Image (). assert DoesNot Contain Color ( Color . Red ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Sdk Suppress ( min Sdk Version Ġ= ĠBuild . VERSION _ CODES . O ) ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcontains _ progress _ in complete _ color () Ġ{ ĊĠĠĠĠĠĠĠ Ġrule . setContent With Theme Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCircular Progress Indicator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . test Tag ( TEST _ TAG ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Ġ= Ġ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindicator Color Ġ= ĠColor . Yellow , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrack Color Ġ= ĠColor . Red ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrule . waitFor Idle () ĊĠĠĠĠĠĠĠ Ġrule . on Node With Tag ( TEST _ TAG ). capture To Image (). assert DoesNot Contain Color ( Color . Yellow ) ĊĠĠĠĠĠĠĠ Ġ// Ġby Ġdefault Ġprogress Ġtrack Ġapproximately Ġtakes Ġ 2 3 - 2 6 % Ġof Ġthe Ġcontrol ĊĠĠĠĠĠĠĠ Ġrule . on Node With Tag ( TEST _ TAG ). capture To Image () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Color In Percentage Range ( Color . Red , Ġ 2 3 f .. 2 6 f ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Sdk Suppress ( min Sdk Version Ġ= ĠBuild . VERSION _ CODES . O ) ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġchange _ start _ end _ angle () Ġ{ ĊĠĠĠĠĠĠĠ Ġrule . setContent With Theme Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCircular Progress Indicator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . test Tag ( TEST _ TAG ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Ġ= Ġ 0 . 5 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Angle Ġ= Ġ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Angle Ġ= Ġ 1 8 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindicator Color Ġ= ĠColor . Yellow , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrack Color Ġ= ĠColor . Red ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrule . waitFor Idle () ĊĠĠĠĠĠĠĠ Ġ// ĠColor Ġshould Ġtake Ġapproximately Ġa Ġquarter Ġof Ġwhat Ġit Ġnormally Ġtakes ĊĠĠĠĠĠĠĠ Ġ// Ġ( a Ġlittle Ġbit Ġless ), Ġeg Ġ 2 5 % Ġ/ Ġ 4 Ġâī Ī Ġ 6 % ĊĠĠĠĠĠĠĠ Ġrule . on Node With Tag ( TEST _ TAG ). capture To Image () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Color In Percentage Range ( Color . Yellow , Ġ 5 f .. 8 f ) ĊĠĠĠĠĠĠĠ Ġrule . on Node With Tag ( TEST _ TAG ). capture To Image () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Color In Percentage Range ( Color . Red , Ġ 5 f .. 8 f ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġco er ces _ highest _ out _ of _ bound _ progress () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprogress Ġ= Ġmutable State Of ( 0 f ) ĊĊĠĠĠĠĠĠĠ Ġrule . setContent With Theme Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCircular Progress Indicator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . test Tag ( TEST _ TAG ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Ġ= Ġprogress . value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrule . run On Idle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress . value Ġ= Ġ 1 . 5 f ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrule . on Node With Tag ( TEST _ TAG ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Range Info Equals ( ProgressBar Range Info ( 1 f , Ġ 0 f .. 1 f )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġco er ces _ lowest _ out _ of _ bound _ progress () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprogress Ġ= Ġmutable State Of ( 0 f ) ĊĊĠĠĠĠĠĠĠ Ġrule . setContent With Theme Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCircular Progress Indicator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . test Tag ( TEST _ TAG ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Ġ= Ġprogress . value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrule . run On Idle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress . value Ġ= Ġ- 1 . 5 f ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrule . on Node With Tag ( TEST _ TAG ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Range Info Equals ( ProgressBar Range Info ( 0 f , Ġ 0 f .. 1 f )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Sdk Suppress ( min Sdk Version Ġ= ĠBuild . VERSION _ CODES . O ) ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġset _ small _ stroke _ width () Ġ{ ĊĠĠĠĠĠĠĠ Ġrule . setContent With Theme Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCircular Progress Indicator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . test Tag ( TEST _ TAG ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Ġ= Ġ 0 . 5 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstrokeWidth Ġ= Ġ 2 . dp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindicator Color Ġ= ĠColor . Yellow , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrack Color Ġ= ĠColor . Red ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrule . waitFor Idle () ĊĠĠĠĠĠĠĠ Ġrule . on Node With Tag ( TEST _ TAG ). capture To Image () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Color In Percentage Range ( Color . Yellow , Ġ 5 f .. 7 f ) ĊĠĠĠĠĠĠĠ Ġrule . on Node With Tag ( TEST _ TAG ). capture To Image () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Color In Percentage Range ( Color . Red , Ġ 5 f .. 7 f ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Sdk Suppress ( min Sdk Version Ġ= ĠBuild . VERSION _ CODES . O ) ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġset _ large _ stroke _ width () Ġ{ ĊĠĠĠĠĠĠĠ Ġrule . setContent With Theme Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCircular Progress Indicator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . test Tag ( TEST _ TAG ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Ġ= Ġ 0 . 5 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstrokeWidth Ġ= Ġ 8 . dp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindicator Color Ġ= ĠColor . Yellow , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrack Color Ġ= ĠColor . Red ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrule . waitFor Idle () ĊĠĠĠĠĠĠĠ Ġ// ĠBecause Ġof Ġthe Ġstroke Ġcap , Ġprogress Ġcolor Ġtakes Ġa Ġlittle Ġbit Ġmore Ġspace Ġthan Ġtrack Ġcolor ĊĠĠĠĠĠĠĠ Ġrule . on Node With Tag ( TEST _ TAG ). capture To Image () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Color In Percentage Range ( Color . Yellow , Ġ 2 4 f .. 2 7 f ) ĊĠĠĠĠĠĠĠ Ġrule . on Node With Tag ( TEST _ TAG ). capture To Image () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Color In Percentage Range ( Color . Red , Ġ 1 8 f .. 2 3 f ) ĊĠĠĠ Ġ} Ċ } Ċ