/* * Copyright 2019-2022 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/dev/LICENSE */ package net.mamoe.mirai.mock.test import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.runBlocking import net.mamoe.mirai.event.Event import net.mamoe.mirai.event.events.MessageEvent import net.mamoe.mirai.event.events.MessagePostSendEvent import net.mamoe.mirai.event.events.MessagePreSendEvent import org.junit.jupiter.api.fail import java.net.URL import kotlin.reflect.jvm.jvmName import kotlin.test.assertFails internal open class TestBase { internal inline fun assertIsInstance(value: Any?, block: T.() -> Unit = {}) { if (value !is T) { fail { "Actual value $value (${value?.javaClass}) is not instanceof ${T::class.jvmName}" } } block(value) } internal fun runTest(action: suspend CoroutineScope.() -> Unit) { runBlocking(block = action) } internal fun List.dropMessagePrePost() = filterNot { it is MessagePreSendEvent || it is MessagePostSendEvent<*> } internal fun List.dropMsgChat() = filterNot { it is MessageEvent || it is MessagePreSendEvent || it is MessagePostSendEvent<*> } internal fun String.toUrl(): URL = URL(this) internal inline fun T.runAndAssertFails(block: T.() -> Unit) { assertFails { block() } } }