30 lines
931 B
Kotlin
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() }
|
|
}
|
|
} |