summaryrefslogtreecommitdiff
path: root/formats/json-tests
diff options
context:
space:
mode:
authorLeonid Startsev <sandwwraith@users.noreply.github.com>2022-11-29 18:08:32 +0100
committerGitHub <noreply@github.com>2022-11-29 20:08:32 +0300
commitccf9c2c52cd9df10e3782f9f8a02ff4172c4b868 (patch)
tree92361c4cf20fe43d926675aa91b5f7dcfa7a3f6d /formats/json-tests
parent02f643c05a37675f2ff4ea7c9b0a37ea48483ae9 (diff)
downloadkotlinx.serialization-ccf9c2c52cd9df10e3782f9f8a02ff4172c4b868.tar.gz
Correctly handle situation where different serializers can be provided (#2113)
for the same KClass in SealedClassSerializer. Previous fix supported only equal serializers. Fixes #2110 Fixes #1937
Diffstat (limited to 'formats/json-tests')
-rw-r--r--formats/json-tests/commonTest/src/kotlinx/serialization/features/sealed/SealedDiamondTest.kt15
1 files changed, 12 insertions, 3 deletions
diff --git a/formats/json-tests/commonTest/src/kotlinx/serialization/features/sealed/SealedDiamondTest.kt b/formats/json-tests/commonTest/src/kotlinx/serialization/features/sealed/SealedDiamondTest.kt
index 4d19c279..6ba4713b 100644
--- a/formats/json-tests/commonTest/src/kotlinx/serialization/features/sealed/SealedDiamondTest.kt
+++ b/formats/json-tests/commonTest/src/kotlinx/serialization/features/sealed/SealedDiamondTest.kt
@@ -20,10 +20,19 @@ class SealedDiamondTest : JsonTestBase() {
@SerialName("X")
data class X(val i: Int) : B, C
+ @Serializable
+ @SerialName("Y")
+ object Y : B, C
+
+ @SerialName("E")
+ enum class E : B, C {
+ Q, W
+ }
+
@Test
fun testMultipleSuperSealedInterfacesDescriptor() {
val subclasses = A.serializer().descriptor.getElementDescriptor(1).elementDescriptors.map { it.serialName }
- assertEquals(listOf("X"), subclasses)
+ assertEquals(listOf("E", "X", "Y"), subclasses)
}
@Test
@@ -32,8 +41,8 @@ class SealedDiamondTest : JsonTestBase() {
data class Carrier(val a: A, val b: B, val c: C)
assertJsonFormAndRestored(
Carrier.serializer(),
- Carrier(X(1), X(2), X(3)),
- """{"a":{"type":"X","i":1},"b":{"type":"X","i":2},"c":{"type":"X","i":3}}"""
+ Carrier(X(1), X(2), Y),
+ """{"a":{"type":"X","i":1},"b":{"type":"X","i":2},"c":{"type":"Y"}}"""
)
}