Commit c6059ab9 authored by Him188's avatar Him188

Add tests

parent f79d3f9a
......@@ -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
}
......
/*
* 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) }
}
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment