anytype-kotlin-wild/app/src/androidTest/java/com/anytypeio/anytype/utils/CoroutinesTestRule.kt
2023-08-29 11:42:35 +02:00

30 lines
931 B
Kotlin

package com.anytypeio.anytype.utils
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestCoroutineDispatcher
import kotlinx.coroutines.test.resetMain
import kotlinx.coroutines.test.setMain
import org.junit.rules.TestWatcher
import org.junit.runner.Description
@ExperimentalCoroutinesApi
class CoroutinesTestRule(
private val testDispatcher: TestCoroutineDispatcher = TestCoroutineDispatcher()
) : TestWatcher() {
override fun starting(description: Description) {
super.starting(description)
Dispatchers.setMain(testDispatcher)
}
override fun finished(description: Description) {
super.finished(description)
Dispatchers.resetMain()
testDispatcher.cleanupTestCoroutines()
}
fun advanceTime(millis: Long) {
testDispatcher.scheduler.apply { advanceTimeBy(millis); runCurrent() }
}
}