• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package kotlinx.serialization
2 
3 import kotlinx.serialization.descriptors.SerialDescriptor
4 import kotlin.test.*
5 
6 
7 class InheritableSerialInfoTest {
8 
9     @InheritableSerialInfo
10     annotation class InheritableDiscriminator(val discriminator: String)
11 
12     @InheritableDiscriminator("a")
13     interface A
14 
15     @InheritableDiscriminator("a")
16     interface B
17 
18     @InheritableDiscriminator("a")
19     @Serializable
20     abstract class C: A
21 
22     @Serializable
23     sealed class D: C(), B
24 
25     @Serializable
26     class E: D()
27 
28     @Serializable
29     class E2: C()
30 
31     @Serializable
32     class E3: A, B
33 
doTestnull34     private fun doTest(descriptor: SerialDescriptor) {
35         val list = descriptor.annotations.filterIsInstance<InheritableDiscriminator>()
36         assertEquals(1, list.size)
37         assertEquals("a", list.first().discriminator)
38     }
39 
40     @Test
testInheritanceFromSealednull41     fun testInheritanceFromSealed() = doTest(E.serializer().descriptor)
42     @Test
43     fun testInheritanceFromAbstract() = doTest(E2.serializer().descriptor)
44     @Test
45     fun testInheritanceFromInterface() = doTest(E3.serializer().descriptor)
46 }
47