mirai/backend/mirai-console/test/util/TestCoroutineUtils.kt
2021-04-16 17:45:37 +08:00

95 lines
2.8 KiB
Kotlin

/*
* Copyright 2019-2021 Mamoe Technologies and contributors.
*
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
*
* https://github.com/mamoe/mirai/blob/master/LICENSE
*/
package net.mamoe.mirai.console.util
//import kotlinx.coroutines.*
//import org.junit.jupiter.api.Test
//import java.util.concurrent.atomic.AtomicInteger
//import kotlin.coroutines.resume
//import kotlin.test.assertEquals
//import kotlin.time.milliseconds
//import kotlin.time.seconds
internal class TestCoroutineUtils {
// TODO TestCoroutineUtils disabled manually: on CI real time measurement is not precise causing tests to fail.
// @Test
// fun `test launchTimedTask 0 time`() = runBlocking {
// val scope = CoroutineScope(SupervisorJob())
//
// val result = withTimeoutOrNull(6000) {
// suspendCancellableCoroutine<Unit> { cont ->
// scope.launchTimedTask(5.seconds.toLongMilliseconds()) {
// cont.resume(Unit)
// }
// }
// }
//
// assertEquals(null, result)
// scope.cancel()
// }
//
// @Test
// fun `test launchTimedTask finishes 1 time`() = runBlocking {
// val scope = CoroutineScope(SupervisorJob())
//
// withTimeout(4000) {
// suspendCancellableCoroutine<Unit> { cont ->
// val task = scope.launchTimedTask(3.seconds.toLongMilliseconds()) {
// cont.resume(Unit)
// }
// task.setChanged()
// }
// }
//
// scope.cancel()
// }
//
// @Test
// fun `test launchTimedTask finishes multiple times`() = runBlocking {
// val scope = CoroutineScope(SupervisorJob())
//
// val resumedTimes = AtomicInteger(0)
// val task = scope.launchTimedTask(3000.milliseconds.toLongMilliseconds()) {
// resumedTimes.incrementAndGet()
// }
// task.setChanged()
// launch {
// delay(4000)
// task.setChanged()
// }
//
// delay(6000)
// assertEquals(1, resumedTimes.get())
// delay(15000)
// assertEquals(2, resumedTimes.get())
//
// scope.cancel()
// }
//
// @Test
// fun `test launchTimedTask interval less than delay`() = runBlocking {
// val scope = CoroutineScope(SupervisorJob())
//
// withTimeout(5000) {
// suspendCancellableCoroutine<Unit> { cont ->
// val task = scope.launchTimedTask(1.seconds.toLongMilliseconds()) {
// cont.resume(Unit)
// }
// task.setChanged()
// }
// }
//
// scope.cancel()
// }
}