mirror of
https://github.com/mamoe/mirai.git
synced 2025-02-11 07:04:53 +08:00
Add tests
This commit is contained in:
parent
f79d3f9aa0
commit
c6059ab9ec
@ -46,7 +46,7 @@ kotlin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
commonMain {
|
val commonMain by getting {
|
||||||
dependencies {
|
dependencies {
|
||||||
api(kotlin("stdlib", Versions.Kotlin.stdlib))
|
api(kotlin("stdlib", Versions.Kotlin.stdlib))
|
||||||
api(kotlinx("serialization-runtime-common", Versions.Kotlin.serialization))
|
api(kotlinx("serialization-runtime-common", Versions.Kotlin.serialization))
|
||||||
@ -58,7 +58,7 @@ kotlin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
commonTest {
|
val commonTest by getting {
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation(kotlin("test-annotations-common"))
|
implementation(kotlin("test-annotations-common"))
|
||||||
implementation(kotlin("test-common"))
|
implementation(kotlin("test-common"))
|
||||||
@ -94,6 +94,7 @@ kotlin {
|
|||||||
|
|
||||||
val jvmTest by getting {
|
val jvmTest by getting {
|
||||||
dependencies {
|
dependencies {
|
||||||
|
dependsOn(commonTest)
|
||||||
implementation(kotlin("test", Versions.Kotlin.stdlib))
|
implementation(kotlin("test", Versions.Kotlin.stdlib))
|
||||||
implementation(kotlin("test-junit", Versions.Kotlin.stdlib))
|
implementation(kotlin("test-junit", Versions.Kotlin.stdlib))
|
||||||
implementation("org.pcap4j:pcap4j-distribution:1.8.2")
|
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]
|
* No concurrency guaranteed on same [element]
|
||||||
*/
|
*/
|
||||||
private fun removeDuplication(element: E): Boolean {
|
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
|
duplicate.time.value = 0
|
||||||
return true
|
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