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