diff options
Diffstat (limited to 'formats/json-tests/commonTest/src/kotlinx/serialization/json/polymorphic/JsonPolymorphismExceptionTest.kt')
-rw-r--r-- | formats/json-tests/commonTest/src/kotlinx/serialization/json/polymorphic/JsonPolymorphismExceptionTest.kt | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/formats/json-tests/commonTest/src/kotlinx/serialization/json/polymorphic/JsonPolymorphismExceptionTest.kt b/formats/json-tests/commonTest/src/kotlinx/serialization/json/polymorphic/JsonPolymorphismExceptionTest.kt new file mode 100644 index 00000000..b7d4f122 --- /dev/null +++ b/formats/json-tests/commonTest/src/kotlinx/serialization/json/polymorphic/JsonPolymorphismExceptionTest.kt @@ -0,0 +1,51 @@ +/* + * Copyright 2017-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.serialization.json.polymorphic + +import kotlinx.serialization.* +import kotlinx.serialization.json.* +import kotlinx.serialization.json.internal.* +import kotlinx.serialization.modules.* +import kotlinx.serialization.test.assertFailsWithSerial +import kotlin.test.* + +class JsonPolymorphismExceptionTest : JsonTestBase() { + + @Serializable + abstract class Base + + @Serializable + @SerialName("derived") + class Derived(val nested: Nested = Nested()) : Base() + + @Serializable + class Nested + + @Test + fun testDecodingException() = parametrizedTest { jsonTestingMode -> + val serialModule = SerializersModule { + polymorphic(Base::class) { + subclass(Derived::class) + } + } + + assertFailsWithSerial("JsonDecodingException") { + Json { serializersModule = serialModule }.decodeFromString(Base.serializer(), """{"type":"derived","nested":null}""", jsonTestingMode) + } + } + + @Test + fun testMissingDiscriminator() = parametrizedTest { jsonTestingMode -> + val serialModule = SerializersModule { + polymorphic(Base::class) { + subclass(Derived::class) + } + } + + assertFailsWithSerial("JsonDecodingException") { + Json { serializersModule = serialModule }.decodeFromString(Base.serializer(), """{"nested":{}}""", jsonTestingMode) + } + } +} |