1*21373fa4SWill Schurman // Copyright 2015-present 650 Industries. All rights reserved.
2*21373fa4SWill Schurman package host.exp.exponent.utils
3*21373fa4SWill Schurman 
4*21373fa4SWill Schurman import androidx.test.espresso.IdlingResource
5*21373fa4SWill Schurman 
6*21373fa4SWill Schurman class ElapsedTimeIdlingResource : IdlingResource {
7*21373fa4SWill Schurman   private var startTime: Long = 0
8*21373fa4SWill Schurman   private var waitingTime: Long = 0
9*21373fa4SWill Schurman   private var resourceCallback: IdlingResource.ResourceCallback? = null
10*21373fa4SWill Schurman   private var isSleeping = false
11*21373fa4SWill Schurman 
sleepnull12*21373fa4SWill Schurman   fun sleep(waitingTime: Long) {
13*21373fa4SWill Schurman     this.waitingTime = waitingTime
14*21373fa4SWill Schurman     startTime = System.currentTimeMillis()
15*21373fa4SWill Schurman     isSleeping = true
16*21373fa4SWill Schurman   }
17*21373fa4SWill Schurman 
getNamenull18*21373fa4SWill Schurman   override fun getName(): String {
19*21373fa4SWill Schurman     return ElapsedTimeIdlingResource::class.java.name + ":" + waitingTime
20*21373fa4SWill Schurman   }
21*21373fa4SWill Schurman 
isIdleNownull22*21373fa4SWill Schurman   override fun isIdleNow(): Boolean {
23*21373fa4SWill Schurman     if (!isSleeping) {
24*21373fa4SWill Schurman       return true
25*21373fa4SWill Schurman     }
26*21373fa4SWill Schurman     val elapsed = System.currentTimeMillis() - startTime
27*21373fa4SWill Schurman     val idle = elapsed >= waitingTime
28*21373fa4SWill Schurman     if (idle) {
29*21373fa4SWill Schurman       isSleeping = false
30*21373fa4SWill Schurman       resourceCallback!!.onTransitionToIdle()
31*21373fa4SWill Schurman     }
32*21373fa4SWill Schurman     return idle
33*21373fa4SWill Schurman   }
34*21373fa4SWill Schurman 
registerIdleTransitionCallbacknull35*21373fa4SWill Schurman   override fun registerIdleTransitionCallback(resourceCallback: IdlingResource.ResourceCallback) {
36*21373fa4SWill Schurman     this.resourceCallback = resourceCallback
37*21373fa4SWill Schurman   }
38*21373fa4SWill Schurman }
39