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