[KPM] Implement simple KotlinExternalModelContainerTest

KT-51262
KT-51220
This commit is contained in:
sebastian.sellmair
2022-02-14 16:13:18 +01:00
committed by Space
parent c88e122e94
commit fdcdd8e247
@@ -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<RetainedModel>(KotlinExternalModelSerializer.serializable())
private val retainedModelKeyFoo = KotlinExternalModelKey<RetainedModel>("foo", KotlinExternalModelSerializer.serializable())
private val retainedModelKeyBar = KotlinExternalModelKey<RetainedModel>("bar", KotlinExternalModelSerializer.serializable())
private val unretainedModelKey = KotlinExternalModelKey<UnretainedModel>()
private val unretainedModelKeyFoo = KotlinExternalModelKey<UnretainedModel>("foo")
private val unretainedModelKeyBar = KotlinExternalModelKey<UnretainedModel>("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])
}
}