• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2017-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
3  */
4 
5 package kotlinx.serialization.features
6 
7 import kotlinx.serialization.*
8 import kotlinx.serialization.Serializable
9 import kotlinx.serialization.json.*
10 import kotlinx.serialization.test.assertFailsWithMessage
11 import org.junit.Test
12 import java.io.*
13 
14 class JsonSequencePathTest {
15 
16     @Serializable
17     class NestedData(val s: String)
18 
19     @Serializable
20     class Data(val data: NestedData)
21 
22     @Test
testFailurenull23     fun testFailure() {
24         val source = """{"data":{"s":"value"}}{"data":{"s":42}}{notevenreached}""".toStream()
25         val iterator = Json.decodeToSequence<Data>(source).iterator()
26         iterator.next() // Ignore
27         assertFailsWithMessage<SerializationException>(
28             "Expected quotation mark '\"', but had '4' instead at path: \$.data.s"
29         ) { iterator.next() }
30     }
31 
Stringnull32     private fun String.toStream() = ByteArrayInputStream(encodeToByteArray())
33 }
34