[kpm] kgp-idea: Implement IdeaKpmJavaIoSerializableExtrasSerializerTest
^KT-52568 In Progress
This commit is contained in:
committed by
Space
parent
b57f5f2742
commit
faaec4689a
+89
@@ -0,0 +1,89 @@
|
|||||||
|
/*
|
||||||
|
* 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.idea
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.gradle.kpm.idea.serialize.IdeaKpmExtrasSerializer
|
||||||
|
import org.jetbrains.kotlin.gradle.kpm.idea.serialize.IdeaKpmJavaIoSerializableExtrasSerializer
|
||||||
|
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.TestIdeaKpmSerializationContext
|
||||||
|
import org.jetbrains.kotlin.tooling.core.withLinearClosure
|
||||||
|
import org.junit.Test
|
||||||
|
import java.io.Serializable
|
||||||
|
import kotlin.test.assertEquals
|
||||||
|
import kotlin.test.assertNotNull
|
||||||
|
import kotlin.test.assertNull
|
||||||
|
import kotlin.test.assertTrue
|
||||||
|
|
||||||
|
class IdeaKpmJavaIoSerializableExtrasSerializerTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `serialize - deserialize - String`() {
|
||||||
|
val context = TestIdeaKpmSerializationContext()
|
||||||
|
val serializer = IdeaKpmExtrasSerializer.javaIoSerializable<String>()
|
||||||
|
val binary = assertNotNull(
|
||||||
|
serializer.serialize(context, "Sunny Cash"),
|
||||||
|
"Failed to serialize: ${context.logger.reports}"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
assertEquals("Sunny Cash", serializer.deserialize(context, binary))
|
||||||
|
assertEquals(0, context.logger.reports.size, "Expected no reports")
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `serialize - deserialize - non serializable object`() {
|
||||||
|
class ThisIsNotSerializable
|
||||||
|
|
||||||
|
val context = TestIdeaKpmSerializationContext()
|
||||||
|
val serializer = IdeaKpmExtrasSerializer.javaIoSerializable<ThisIsNotSerializable>()
|
||||||
|
assertNull(serializer.serialize(context, ThisIsNotSerializable()), "Expected null return value for non serializable object")
|
||||||
|
|
||||||
|
val serializationFailureReportsCount = context.logger.reports.count { report ->
|
||||||
|
report.message.startsWith(IdeaKpmJavaIoSerializableExtrasSerializer.ErrorMessages.SERIALIZATION_FAILURE)
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(
|
||||||
|
1, serializationFailureReportsCount,
|
||||||
|
"Expected exactly one serialization failure report. Found reports: ${context.logger.reports}"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `serialize - deserialize - exception during deserialization`() {
|
||||||
|
data class TestException(override val message: String) : Exception(message)
|
||||||
|
|
||||||
|
val exception = TestException("Failed in 'readResolve()'")
|
||||||
|
|
||||||
|
class NotDeserializable : Serializable {
|
||||||
|
fun readResolve(): Any = throw exception
|
||||||
|
}
|
||||||
|
|
||||||
|
val context = TestIdeaKpmSerializationContext()
|
||||||
|
val serializer = IdeaKpmExtrasSerializer.javaIoSerializable<NotDeserializable>()
|
||||||
|
val binary = assertNotNull(serializer.serialize(context, NotDeserializable()))
|
||||||
|
assertNull(serializer.deserialize(context, binary))
|
||||||
|
|
||||||
|
assertEquals(
|
||||||
|
1, context.logger.reports.size,
|
||||||
|
"Expected exactly one report. Found ${context.logger.reports}"
|
||||||
|
)
|
||||||
|
|
||||||
|
val report = context.logger.reports.single()
|
||||||
|
val reportMessage = assertNotNull(report.message, "Expected message in issue report")
|
||||||
|
|
||||||
|
assertTrue(
|
||||||
|
reportMessage.startsWith(IdeaKpmJavaIoSerializableExtrasSerializer.ErrorMessages.DESERIALIZATION_FAILURE),
|
||||||
|
"Expected issue report to start with ${IdeaKpmJavaIoSerializableExtrasSerializer.ErrorMessages.DESERIALIZATION_FAILURE}"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
val causes = report.cause?.withLinearClosure { it.cause }.orEmpty()
|
||||||
|
|
||||||
|
assertTrue(
|
||||||
|
exception in causes,
|
||||||
|
"Expected exception in report. Exceptions: $causes"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user