xref: /aosp_15_r20/external/kotlinx.serialization/guide/test/PolymorphismTest.kt (revision 57b5a4a64c534cf7f27ac9427ceab07f3d8ed3d8)
1*57b5a4a6SAndroid Build Coastguard Worker // This file was automatically generated from polymorphism.md by Knit tool. Do not edit.
2*57b5a4a6SAndroid Build Coastguard Worker package example.test
3*57b5a4a6SAndroid Build Coastguard Worker 
4*57b5a4a6SAndroid Build Coastguard Worker import org.junit.Test
5*57b5a4a6SAndroid Build Coastguard Worker import kotlinx.knit.test.*
6*57b5a4a6SAndroid Build Coastguard Worker 
7*57b5a4a6SAndroid Build Coastguard Worker class PolymorphismTest {
8*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExamplePoly01null9*57b5a4a6SAndroid Build Coastguard Worker     fun testExamplePoly01() {
10*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExamplePoly01") { example.examplePoly01.main() }.verifyOutputLines(
11*57b5a4a6SAndroid Build Coastguard Worker             "{\"name\":\"kotlinx.coroutines\"}"
12*57b5a4a6SAndroid Build Coastguard Worker         )
13*57b5a4a6SAndroid Build Coastguard Worker     }
14*57b5a4a6SAndroid Build Coastguard Worker 
15*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExamplePoly02null16*57b5a4a6SAndroid Build Coastguard Worker     fun testExamplePoly02() {
17*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExamplePoly02") { example.examplePoly02.main() }.verifyOutputLinesStart(
18*57b5a4a6SAndroid Build Coastguard Worker             "Exception in thread \"main\" kotlinx.serialization.SerializationException: Serializer for class 'OwnedProject' is not found.",
19*57b5a4a6SAndroid Build Coastguard Worker             "Please ensure that class is marked as '@Serializable' and that the serialization compiler plugin is applied."
20*57b5a4a6SAndroid Build Coastguard Worker         )
21*57b5a4a6SAndroid Build Coastguard Worker     }
22*57b5a4a6SAndroid Build Coastguard Worker 
23*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExamplePoly03null24*57b5a4a6SAndroid Build Coastguard Worker     fun testExamplePoly03() {
25*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExamplePoly03") { example.examplePoly03.main() }.verifyOutputLinesStart(
26*57b5a4a6SAndroid Build Coastguard Worker             "Exception in thread \"main\" kotlinx.serialization.SerializationException: Serializer for subclass 'OwnedProject' is not found in the polymorphic scope of 'Project'.",
27*57b5a4a6SAndroid Build Coastguard Worker             "Check if class with serial name 'OwnedProject' exists and serializer is registered in a corresponding SerializersModule.",
28*57b5a4a6SAndroid Build Coastguard Worker             "To be registered automatically, class 'OwnedProject' has to be '@Serializable', and the base class 'Project' has to be sealed and '@Serializable'."
29*57b5a4a6SAndroid Build Coastguard Worker         )
30*57b5a4a6SAndroid Build Coastguard Worker     }
31*57b5a4a6SAndroid Build Coastguard Worker 
32*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExamplePoly04null33*57b5a4a6SAndroid Build Coastguard Worker     fun testExamplePoly04() {
34*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExamplePoly04") { example.examplePoly04.main() }.verifyOutputLines(
35*57b5a4a6SAndroid Build Coastguard Worker             "{\"type\":\"example.examplePoly04.OwnedProject\",\"name\":\"kotlinx.coroutines\",\"owner\":\"kotlin\"}"
36*57b5a4a6SAndroid Build Coastguard Worker         )
37*57b5a4a6SAndroid Build Coastguard Worker     }
38*57b5a4a6SAndroid Build Coastguard Worker 
39*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExamplePoly05null40*57b5a4a6SAndroid Build Coastguard Worker     fun testExamplePoly05() {
41*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExamplePoly05") { example.examplePoly05.main() }.verifyOutputLines(
42*57b5a4a6SAndroid Build Coastguard Worker             "{\"name\":\"kotlinx.coroutines\",\"owner\":\"kotlin\"}"
43*57b5a4a6SAndroid Build Coastguard Worker         )
44*57b5a4a6SAndroid Build Coastguard Worker     }
45*57b5a4a6SAndroid Build Coastguard Worker 
46*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExamplePoly06null47*57b5a4a6SAndroid Build Coastguard Worker     fun testExamplePoly06() {
48*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExamplePoly06") { example.examplePoly06.main() }.verifyOutputLines(
49*57b5a4a6SAndroid Build Coastguard Worker             "{\"type\":\"owned\",\"name\":\"kotlinx.coroutines\",\"owner\":\"kotlin\"}"
50*57b5a4a6SAndroid Build Coastguard Worker         )
51*57b5a4a6SAndroid Build Coastguard Worker     }
52*57b5a4a6SAndroid Build Coastguard Worker 
53*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExamplePoly07null54*57b5a4a6SAndroid Build Coastguard Worker     fun testExamplePoly07() {
55*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExamplePoly07") { example.examplePoly07.main() }.verifyOutputLines(
56*57b5a4a6SAndroid Build Coastguard Worker             "{\"type\":\"owned\",\"status\":\"open\",\"name\":\"kotlinx.coroutines\",\"owner\":\"kotlin\"}"
57*57b5a4a6SAndroid Build Coastguard Worker         )
58*57b5a4a6SAndroid Build Coastguard Worker     }
59*57b5a4a6SAndroid Build Coastguard Worker 
60*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExamplePoly08null61*57b5a4a6SAndroid Build Coastguard Worker     fun testExamplePoly08() {
62*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExamplePoly08") { example.examplePoly08.main() }.verifyOutputLines(
63*57b5a4a6SAndroid Build Coastguard Worker             "[{\"type\":\"example.examplePoly08.EmptyResponse\"},{\"type\":\"example.examplePoly08.TextResponse\",\"text\":\"OK\"}]"
64*57b5a4a6SAndroid Build Coastguard Worker         )
65*57b5a4a6SAndroid Build Coastguard Worker     }
66*57b5a4a6SAndroid Build Coastguard Worker 
67*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExamplePoly09null68*57b5a4a6SAndroid Build Coastguard Worker     fun testExamplePoly09() {
69*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExamplePoly09") { example.examplePoly09.main() }.verifyOutputLines(
70*57b5a4a6SAndroid Build Coastguard Worker             "{\"type\":\"owned\",\"name\":\"kotlinx.coroutines\",\"owner\":\"kotlin\"}"
71*57b5a4a6SAndroid Build Coastguard Worker         )
72*57b5a4a6SAndroid Build Coastguard Worker     }
73*57b5a4a6SAndroid Build Coastguard Worker 
74*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExamplePoly10null75*57b5a4a6SAndroid Build Coastguard Worker     fun testExamplePoly10() {
76*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExamplePoly10") { example.examplePoly10.main() }.verifyOutputLinesStart(
77*57b5a4a6SAndroid Build Coastguard Worker             "{\"type\":\"owned\",\"name\":\"kotlinx.coroutines\",\"owner\":\"kotlin\"}"
78*57b5a4a6SAndroid Build Coastguard Worker         )
79*57b5a4a6SAndroid Build Coastguard Worker     }
80*57b5a4a6SAndroid Build Coastguard Worker 
81*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExamplePoly11null82*57b5a4a6SAndroid Build Coastguard Worker     fun testExamplePoly11() {
83*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExamplePoly11") { example.examplePoly11.main() }.verifyOutputLines(
84*57b5a4a6SAndroid Build Coastguard Worker             "{\"project\":{\"type\":\"owned\",\"name\":\"kotlinx.coroutines\",\"owner\":\"kotlin\"}}"
85*57b5a4a6SAndroid Build Coastguard Worker         )
86*57b5a4a6SAndroid Build Coastguard Worker     }
87*57b5a4a6SAndroid Build Coastguard Worker 
88*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExamplePoly12null89*57b5a4a6SAndroid Build Coastguard Worker     fun testExamplePoly12() {
90*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExamplePoly12") { example.examplePoly12.main() }.verifyOutputLinesStart(
91*57b5a4a6SAndroid Build Coastguard Worker             "Exception in thread \"main\" kotlinx.serialization.SerializationException: Serializer for class 'Any' is not found.",
92*57b5a4a6SAndroid Build Coastguard Worker             "Please ensure that class is marked as '@Serializable' and that the serialization compiler plugin is applied."
93*57b5a4a6SAndroid Build Coastguard Worker         )
94*57b5a4a6SAndroid Build Coastguard Worker     }
95*57b5a4a6SAndroid Build Coastguard Worker 
96*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExamplePoly13null97*57b5a4a6SAndroid Build Coastguard Worker     fun testExamplePoly13() {
98*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExamplePoly13") { example.examplePoly13.main() }.verifyOutputLinesStart(
99*57b5a4a6SAndroid Build Coastguard Worker             "Exception in thread \"main\" kotlinx.serialization.SerializationException: Serializer for class 'Any' is not found.",
100*57b5a4a6SAndroid Build Coastguard Worker             "Please ensure that class is marked as '@Serializable' and that the serialization compiler plugin is applied."
101*57b5a4a6SAndroid Build Coastguard Worker         )
102*57b5a4a6SAndroid Build Coastguard Worker     }
103*57b5a4a6SAndroid Build Coastguard Worker 
104*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExamplePoly14null105*57b5a4a6SAndroid Build Coastguard Worker     fun testExamplePoly14() {
106*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExamplePoly14") { example.examplePoly14.main() }.verifyOutputLines(
107*57b5a4a6SAndroid Build Coastguard Worker             "{\"type\":\"owned\",\"name\":\"kotlinx.coroutines\",\"owner\":\"kotlin\"}"
108*57b5a4a6SAndroid Build Coastguard Worker         )
109*57b5a4a6SAndroid Build Coastguard Worker     }
110*57b5a4a6SAndroid Build Coastguard Worker 
111*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExamplePoly15null112*57b5a4a6SAndroid Build Coastguard Worker     fun testExamplePoly15() {
113*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExamplePoly15") { example.examplePoly15.main() }.verifyOutputLines(
114*57b5a4a6SAndroid Build Coastguard Worker             "{\"project\":{\"type\":\"owned\",\"name\":\"kotlinx.coroutines\",\"owner\":\"kotlin\"}}"
115*57b5a4a6SAndroid Build Coastguard Worker         )
116*57b5a4a6SAndroid Build Coastguard Worker     }
117*57b5a4a6SAndroid Build Coastguard Worker 
118*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExamplePoly16null119*57b5a4a6SAndroid Build Coastguard Worker     fun testExamplePoly16() {
120*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExamplePoly16") { example.examplePoly16.main() }.verifyOutputLines(
121*57b5a4a6SAndroid Build Coastguard Worker             "{\"project\":{\"type\":\"owned\",\"name\":\"kotlinx.coroutines\",\"owner\":\"kotlin\"},\"any\":{\"type\":\"owned\",\"name\":\"kotlinx.coroutines\",\"owner\":\"kotlin\"}}"
122*57b5a4a6SAndroid Build Coastguard Worker         )
123*57b5a4a6SAndroid Build Coastguard Worker     }
124*57b5a4a6SAndroid Build Coastguard Worker 
125*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExamplePoly17null126*57b5a4a6SAndroid Build Coastguard Worker     fun testExamplePoly17() {
127*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExamplePoly17") { example.examplePoly17.main() }.verifyOutputLines(
128*57b5a4a6SAndroid Build Coastguard Worker             "{\"type\":\"OkResponse\",\"data\":{\"type\":\"OwnedProject\",\"name\":\"kotlinx.serialization\",\"owner\":\"kotlin\"}}",
129*57b5a4a6SAndroid Build Coastguard Worker             "OkResponse(data=OwnedProject(name=kotlinx.serialization, owner=kotlin))"
130*57b5a4a6SAndroid Build Coastguard Worker         )
131*57b5a4a6SAndroid Build Coastguard Worker     }
132*57b5a4a6SAndroid Build Coastguard Worker 
133*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExamplePoly18null134*57b5a4a6SAndroid Build Coastguard Worker     fun testExamplePoly18() {
135*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExamplePoly18") { example.examplePoly18.main() }.verifyOutputLinesStart(
136*57b5a4a6SAndroid Build Coastguard Worker             "Exception in thread \"main\" kotlinx.serialization.json.internal.JsonDecodingException: Unexpected JSON token at offset 0: Serializer for subclass 'unknown' is not found in the polymorphic scope of 'Project' at path: $",
137*57b5a4a6SAndroid Build Coastguard Worker             "Check if class with serial name 'unknown' exists and serializer is registered in a corresponding SerializersModule."
138*57b5a4a6SAndroid Build Coastguard Worker         )
139*57b5a4a6SAndroid Build Coastguard Worker     }
140*57b5a4a6SAndroid Build Coastguard Worker 
141*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExamplePoly19null142*57b5a4a6SAndroid Build Coastguard Worker     fun testExamplePoly19() {
143*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExamplePoly19") { example.examplePoly19.main() }.verifyOutputLines(
144*57b5a4a6SAndroid Build Coastguard Worker             "[BasicProject(name=example, type=unknown), OwnedProject(name=kotlinx.serialization, owner=kotlin)]"
145*57b5a4a6SAndroid Build Coastguard Worker         )
146*57b5a4a6SAndroid Build Coastguard Worker     }
147*57b5a4a6SAndroid Build Coastguard Worker 
148*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExamplePoly20null149*57b5a4a6SAndroid Build Coastguard Worker     fun testExamplePoly20() {
150*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExamplePoly20") { example.examplePoly20.main() }.verifyOutputLines(
151*57b5a4a6SAndroid Build Coastguard Worker             "{\"type\":\"Cat\",\"catType\":\"Tabby\"}"
152*57b5a4a6SAndroid Build Coastguard Worker         )
153*57b5a4a6SAndroid Build Coastguard Worker     }
154*57b5a4a6SAndroid Build Coastguard Worker }
155