From fdcdd8e247285d1e16489ebbcdf5c9018d01d40c Mon Sep 17 00:00:00 2001 From: "sebastian.sellmair" Date: Mon, 14 Feb 2022 16:13:18 +0100 Subject: [PATCH] [KPM] Implement simple KotlinExternalModelContainerTest KT-51262 KT-51220 --- .../kpm/KotlinExternalModelContainerTest.kt | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 libraries/tools/kotlin-gradle-plugin-idea/src/test/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinExternalModelContainerTest.kt diff --git a/libraries/tools/kotlin-gradle-plugin-idea/src/test/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinExternalModelContainerTest.kt b/libraries/tools/kotlin-gradle-plugin-idea/src/test/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinExternalModelContainerTest.kt new file mode 100644 index 00000000000..e3180c8edfd --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-idea/src/test/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinExternalModelContainerTest.kt @@ -0,0 +1,77 @@ +/* + * Copyright 2010-2022 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.gradle.kpm + +import java.io.* +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertNull + +class KotlinExternalModelContainerTest { + + private data class RetainedModel(val value: Int) : Serializable + private data class UnretainedModel(val value: Int) + + private val retainedModelKey = KotlinExternalModelKey(KotlinExternalModelSerializer.serializable()) + private val retainedModelKeyFoo = KotlinExternalModelKey("foo", KotlinExternalModelSerializer.serializable()) + private val retainedModelKeyBar = KotlinExternalModelKey("bar", KotlinExternalModelSerializer.serializable()) + + private val unretainedModelKey = KotlinExternalModelKey() + private val unretainedModelKeyFoo = KotlinExternalModelKey("foo") + private val unretainedModelKeyBar = KotlinExternalModelKey("bar") + + @Test + fun `test - attach simple values`() { + val container = KotlinExternalModelContainer.mutable() + container[retainedModelKey] = RetainedModel(1) + container[retainedModelKeyFoo] = RetainedModel(2) + container[retainedModelKeyBar] = RetainedModel(3) + container[unretainedModelKey] = UnretainedModel(4) + container[unretainedModelKeyFoo] = UnretainedModel(5) + container[unretainedModelKeyBar] = UnretainedModel(6) + + assertEquals(RetainedModel(1), container[retainedModelKey]) + assertEquals(RetainedModel(2), container[retainedModelKeyFoo]) + assertEquals(RetainedModel(3), container[retainedModelKeyBar]) + assertEquals(UnretainedModel(4), container[unretainedModelKey]) + assertEquals(UnretainedModel(5), container[unretainedModelKeyFoo]) + assertEquals(UnretainedModel(6), container[unretainedModelKeyBar]) + } + + @Test + fun `test - accessing missing value`() { + val container = KotlinExternalModelContainer.mutable() + assertNull(container[retainedModelKey]) + assertNull(container[unretainedModelKey]) + } + + @Test + fun `test - serializing container`() { + val container = KotlinExternalModelContainer.mutable() + container[retainedModelKey] = RetainedModel(1) + container[retainedModelKeyFoo] = RetainedModel(2) + container[retainedModelKeyBar] = RetainedModel(3) + container[unretainedModelKey] = UnretainedModel(4) + container[unretainedModelKeyFoo] = UnretainedModel(5) + container[unretainedModelKeyBar] = UnretainedModel(6) + + val serializedContainer = ByteArrayOutputStream().use { baos -> + ObjectOutputStream(baos).use { oos -> oos.writeObject(container) } + baos.toByteArray() + } + + val deserializedContainer = ObjectInputStream(ByteArrayInputStream(serializedContainer)).use { ois -> + ois.readObject() as KotlinExternalModelContainer + } + + assertEquals(RetainedModel(1), deserializedContainer[retainedModelKey]) + assertEquals(RetainedModel(2), deserializedContainer[retainedModelKeyFoo]) + assertEquals(RetainedModel(3), deserializedContainer[retainedModelKeyBar]) + assertNull(deserializedContainer[unretainedModelKey]) + assertNull(deserializedContainer[unretainedModelKeyFoo]) + assertNull(deserializedContainer[unretainedModelKeyBar]) + } +}