diff --git a/compiler/daemon/daemon-client/build.gradle.kts b/compiler/daemon/daemon-client/build.gradle.kts index d3a5dae99ff..cd56348990c 100644 --- a/compiler/daemon/daemon-client/build.gradle.kts +++ b/compiler/daemon/daemon-client/build.gradle.kts @@ -19,6 +19,7 @@ val nativePlatformVariants = listOf( ) dependencies { + api(kotlinStdlib()) compileOnly(project(":daemon-common")) compileOnly(commonDependency("net.rubygrapefruit", "native-platform")) @@ -27,6 +28,13 @@ dependencies { nativePlatformVariants.forEach { embedded(commonDependency("net.rubygrapefruit", "native-platform", "-$it")) } + testImplementation(platform(libs.junit.bom)) + testImplementation(libs.junit.jupiter.api) + testRuntimeOnly(libs.junit.jupiter.engine) +} + +projectTest(jUnitMode = JUnitMode.JUnit5) { + useJUnitPlatform() } configureKotlinCompileTasksGradleCompatibility() diff --git a/compiler/daemon/daemon-client/src/main/kotlin/LimitedLinkedList.kt b/compiler/daemon/daemon-client/src/main/kotlin/LimitedLinkedList.kt index cff9570b273..7a96739ebb1 100644 --- a/compiler/daemon/daemon-client/src/main/kotlin/LimitedLinkedList.kt +++ b/compiler/daemon/daemon-client/src/main/kotlin/LimitedLinkedList.kt @@ -9,6 +9,12 @@ import java.util.* internal class LimitedLinkedList(private val limit: Int) : LinkedList() { + init { + require(limit > 0) { + "The limit shall be > 0. Other values does not make any sense" + } + } + override fun add(element: E): Boolean { val added = super.add(element) while (added && size > limit) { diff --git a/compiler/daemon/daemon-client/src/test/kotlin/LimitedLinkedListTest.kt b/compiler/daemon/daemon-client/src/test/kotlin/LimitedLinkedListTest.kt new file mode 100644 index 00000000000..d6c3d4f605b --- /dev/null +++ b/compiler/daemon/daemon-client/src/test/kotlin/LimitedLinkedListTest.kt @@ -0,0 +1,44 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.daemon.client + +import org.junit.jupiter.api.Assertions.* +import org.junit.jupiter.api.DisplayName +import org.junit.jupiter.api.Test + +class LimitedLinkedListTest { + @Test + @DisplayName("adding elements within limit") + fun withinLimit() { + val limitedList = LimitedLinkedList(5) + assertTrue(limitedList.add(1)) + assertTrue(limitedList.add(2)) + assertTrue(limitedList.add(3)) + assertEquals(listOf(1, 2, 3), limitedList) + } + + @Test + @DisplayName("adding elements beyond limit") + fun beyondLimit() { + val limitedList = LimitedLinkedList(3) + assertTrue(limitedList.add(1)) + assertTrue(limitedList.add(2)) + assertTrue(limitedList.add(3)) + assertTrue(limitedList.add(4)) + assertEquals(listOf(2, 3, 4), limitedList) + } + + @Test + @DisplayName("incorrect limit values lead to exception") + fun incorrectLimitValues() { + assertThrows(IllegalArgumentException::class.java) { + LimitedLinkedList(0) + } + assertThrows(IllegalArgumentException::class.java) { + LimitedLinkedList(-50) + } + } +} \ No newline at end of file diff --git a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-daemon-client/kotlin-daemon-client.pom b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-daemon-client/kotlin-daemon-client.pom index b1ddfa86e1f..41a35d12a70 100644 --- a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-daemon-client/kotlin-daemon-client.pom +++ b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-daemon-client/kotlin-daemon-client.pom @@ -25,4 +25,12 @@ scm:git:https://github.com/JetBrains/kotlin.git https://github.com/JetBrains/kotlin + + + org.jetbrains.kotlin + kotlin-stdlib + ArtifactsTest.version + compile + +