summaryrefslogtreecommitdiff
path: root/formats/json-tests/commonTest/src/kotlinx/serialization/JsonOverwriteKeyTest.kt
diff options
context:
space:
mode:
Diffstat (limited to 'formats/json-tests/commonTest/src/kotlinx/serialization/JsonOverwriteKeyTest.kt')
-rw-r--r--formats/json-tests/commonTest/src/kotlinx/serialization/JsonOverwriteKeyTest.kt36
1 files changed, 36 insertions, 0 deletions
diff --git a/formats/json-tests/commonTest/src/kotlinx/serialization/JsonOverwriteKeyTest.kt b/formats/json-tests/commonTest/src/kotlinx/serialization/JsonOverwriteKeyTest.kt
new file mode 100644
index 00000000..b2425a1f
--- /dev/null
+++ b/formats/json-tests/commonTest/src/kotlinx/serialization/JsonOverwriteKeyTest.kt
@@ -0,0 +1,36 @@
+package kotlinx.serialization
+
+import kotlinx.serialization.builtins.*
+import kotlinx.serialization.json.*
+import kotlin.test.*
+
+class JsonOverwriteKeyTest : JsonTestBase() {
+ private val json = Json
+
+ @Serializable
+ data class Data(val a: Int)
+
+ @Serializable
+ data class Updatable(val d: Data)
+
+ @Test
+ fun testLatestValueWins() {
+ val parsed: Updatable = default.decodeFromString("""{"d":{"a":"42"},"d":{"a":43}}""")
+ assertEquals(Data(43), parsed.d)
+ }
+
+ @Serializable
+ data class WrappedMap<T>(val mp: Map<String, T>)
+
+ @Test
+ fun testLatestKeyInMap() {
+ val parsed = json.decodeFromString(WrappedMap.serializer(Int.serializer()), """{"mp": { "x" : 23, "x" : 42, "y": 4 }}""")
+ assertEquals(WrappedMap(mapOf("x" to 42, "y" to 4)), parsed)
+ }
+
+ @Test
+ fun testLastestListValueInMap() {
+ val parsed = json.decodeFromString(WrappedMap.serializer(ListSerializer(Int.serializer())), """{"mp": { "x" : [23], "x" : [42], "y": [4] }}""")
+ assertEquals(WrappedMap(mapOf("x" to listOf(42), "y" to listOf(4))), parsed)
+ }
+}