mirror of
https://github.com/mamoe/mirai.git
synced 2025-02-10 02:46:57 +08:00
Add tests
This commit is contained in:
parent
f79d3f9aa0
commit
c6059ab9ec
@ -46,7 +46,7 @@ kotlin {
|
||||
}
|
||||
}
|
||||
|
||||
commonMain {
|
||||
val commonMain by getting {
|
||||
dependencies {
|
||||
api(kotlin("stdlib", Versions.Kotlin.stdlib))
|
||||
api(kotlinx("serialization-runtime-common", Versions.Kotlin.serialization))
|
||||
@ -58,7 +58,7 @@ kotlin {
|
||||
}
|
||||
}
|
||||
|
||||
commonTest {
|
||||
val commonTest by getting {
|
||||
dependencies {
|
||||
implementation(kotlin("test-annotations-common"))
|
||||
implementation(kotlin("test-common"))
|
||||
@ -94,6 +94,7 @@ kotlin {
|
||||
|
||||
val jvmTest by getting {
|
||||
dependencies {
|
||||
dependsOn(commonTest)
|
||||
implementation(kotlin("test", Versions.Kotlin.stdlib))
|
||||
implementation(kotlin("test-junit", Versions.Kotlin.stdlib))
|
||||
implementation("org.pcap4j:pcap4j-distribution:1.8.2")
|
||||
|
@ -73,7 +73,7 @@ internal class AtomicResizeCacheList<E>(private val retention: Long) {
|
||||
* No concurrency guaranteed on same [element]
|
||||
*/
|
||||
private fun removeDuplication(element: E): Boolean {
|
||||
val duplicate = list.firstOrNull { it.element == element } ?: return false
|
||||
val duplicate = list.firstOrNull { it.time.value != 0L && it.element == element } ?: return false
|
||||
duplicate.time.value = 0
|
||||
return true
|
||||
}
|
||||
|
@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Copyright 2020 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.qqandroid.utils
|
||||
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertFalse
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
|
||||
internal class AtomicResizeCacheListTest {
|
||||
@Test
|
||||
fun testDuplication() {
|
||||
val list = AtomicResizeCacheList<Int>(1000)
|
||||
assertTrue { list.ensureNoDuplication(1) }
|
||||
assertFalse { list.ensureNoDuplication(1) }
|
||||
assertTrue { list.ensureNoDuplication(1) }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testRetention() {
|
||||
val list = AtomicResizeCacheList<Int>(1000)
|
||||
assertTrue { list.ensureNoDuplication(1) }
|
||||
runBlocking {
|
||||
delay(1001)
|
||||
// because no concurrency guaranteed on same elements
|
||||
assertFalse { list.ensureNoDuplication(1) }
|
||||
assertTrue { list.ensureNoDuplication(2) }
|
||||
// outdated elements are now cleaned
|
||||
assertTrue { list.ensureNoDuplication(1) }
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user