• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package kotlinx.serialization
2 
3 import kotlinx.serialization.descriptors.*
4 import kotlinx.serialization.encoding.CompositeDecoder.Companion.UNKNOWN_NAME
5 import kotlinx.serialization.encoding.*
6 import kotlinx.serialization.json.Json
7 import kotlinx.serialization.modules.*
8 import kotlin.test.Test
9 import kotlin.test.assertFailsWith
10 
11 class UnknownElementIndexTest {
12     enum class Choices { A, B, C }
13 
14     @Serializable
15     data class Holder(val c: Choices)
16 
17     class MalformedReader : AbstractDecoder() {
18         override val serializersModule: SerializersModule = EmptySerializersModule()
19 
decodeElementIndexnull20         override fun decodeElementIndex(descriptor: SerialDescriptor): Int {
21             return UNKNOWN_NAME
22         }
23     }
24 
25     @Test
testCompilerComplainsAboutIncorrectIndexnull26     fun testCompilerComplainsAboutIncorrectIndex() {
27         assertFailsWith(SerializationException::class) {
28             MalformedReader().decodeSerializableValue(Holder.serializer())
29         }
30     }
31 
32     @Test
testErrorMessagenull33     fun testErrorMessage() {
34         val message = "kotlinx.serialization.UnknownElementIndexTest.Choices does not contain element with name 'D'"
35         assertFailsWith(SerializationException::class, message) {
36             Json.decodeFromString(Holder.serializer(), """{"c":"D"}""")
37         }
38     }
39 }
40