• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package kotlinx.serialization.json
2 
3 import kotlinx.serialization.*
4 import kotlinx.serialization.json.Json.Default.decodeFromString
5 import org.junit.*
6 import org.junit.Test
7 import java.io.ByteArrayInputStream
8 import java.io.ByteArrayOutputStream
9 import java.io.PrintWriter
10 import java.io.StringWriter
11 import kotlin.test.*
12 
13 class MissingFieldExceptionWithPathTest {
14 
15     @Test // Repro for #2212
testMfeIsNotReappliedMultipleTimesnull16     fun testMfeIsNotReappliedMultipleTimes() {
17         val inputMalformed = """{"title": "...","cast": [{}]"""
18         try {
19             Json.decodeFromString<Movie>(inputMalformed)
20             fail("Unreacheable state")
21         } catch (e: MissingFieldException) {
22             val fullStackTrace = e.stackTraceToString()
23             val i1 = fullStackTrace.toString().indexOf("at path")
24             val i2 = fullStackTrace.toString().lastIndexOf("at path")
25             assertEquals(i1, i2)
26             assertTrue(i1 != -1)
27         }
28     }
29 
30     @Serializable
31     data class Movie(
32         val title: String,
33         val cast: List<Cast>,
34     )
35 
36     @Serializable
37     data class Cast(
38         val name: String
39     )
40 }
41