xref: /aosp_15_r20/external/kotlinx.serialization/guide/test/BasicSerializationTest.kt (revision 57b5a4a64c534cf7f27ac9427ceab07f3d8ed3d8)
1*57b5a4a6SAndroid Build Coastguard Worker // This file was automatically generated from basic-serialization.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 BasicSerializationTest {
8*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExampleBasic01null9*57b5a4a6SAndroid Build Coastguard Worker     fun testExampleBasic01() {
10*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExampleBasic01") { example.exampleBasic01.main() }.verifyOutputLinesStart(
11*57b5a4a6SAndroid Build Coastguard Worker             "Exception in thread \"main\" kotlinx.serialization.SerializationException: Serializer for class 'Project' is not found.",
12*57b5a4a6SAndroid Build Coastguard Worker             "Please ensure that class is marked as '@Serializable' and that the serialization compiler plugin is applied."
13*57b5a4a6SAndroid Build Coastguard Worker         )
14*57b5a4a6SAndroid Build Coastguard Worker     }
15*57b5a4a6SAndroid Build Coastguard Worker 
16*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExampleBasic02null17*57b5a4a6SAndroid Build Coastguard Worker     fun testExampleBasic02() {
18*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExampleBasic02") { example.exampleBasic02.main() }.verifyOutputLines(
19*57b5a4a6SAndroid Build Coastguard Worker             "{\"name\":\"kotlinx.serialization\",\"language\":\"Kotlin\"}"
20*57b5a4a6SAndroid Build Coastguard Worker         )
21*57b5a4a6SAndroid Build Coastguard Worker     }
22*57b5a4a6SAndroid Build Coastguard Worker 
23*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExampleBasic03null24*57b5a4a6SAndroid Build Coastguard Worker     fun testExampleBasic03() {
25*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExampleBasic03") { example.exampleBasic03.main() }.verifyOutputLines(
26*57b5a4a6SAndroid Build Coastguard Worker             "Project(name=kotlinx.serialization, language=Kotlin)"
27*57b5a4a6SAndroid Build Coastguard Worker         )
28*57b5a4a6SAndroid Build Coastguard Worker     }
29*57b5a4a6SAndroid Build Coastguard Worker 
30*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExampleClasses01null31*57b5a4a6SAndroid Build Coastguard Worker     fun testExampleClasses01() {
32*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExampleClasses01") { example.exampleClasses01.main() }.verifyOutputLines(
33*57b5a4a6SAndroid Build Coastguard Worker             "{\"name\":\"kotlinx.serialization\",\"stars\":9000}"
34*57b5a4a6SAndroid Build Coastguard Worker         )
35*57b5a4a6SAndroid Build Coastguard Worker     }
36*57b5a4a6SAndroid Build Coastguard Worker 
37*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExampleClasses02null38*57b5a4a6SAndroid Build Coastguard Worker     fun testExampleClasses02() {
39*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExampleClasses02") { example.exampleClasses02.main() }.verifyOutputLines(
40*57b5a4a6SAndroid Build Coastguard Worker             "{\"owner\":\"kotlin\",\"name\":\"kotlinx.serialization\"}"
41*57b5a4a6SAndroid Build Coastguard Worker         )
42*57b5a4a6SAndroid Build Coastguard Worker     }
43*57b5a4a6SAndroid Build Coastguard Worker 
44*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExampleClasses03null45*57b5a4a6SAndroid Build Coastguard Worker     fun testExampleClasses03() {
46*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExampleClasses03") { example.exampleClasses03.main() }.verifyOutputLinesStart(
47*57b5a4a6SAndroid Build Coastguard Worker             "Exception in thread \"main\" java.lang.IllegalArgumentException: name cannot be empty"
48*57b5a4a6SAndroid Build Coastguard Worker         )
49*57b5a4a6SAndroid Build Coastguard Worker     }
50*57b5a4a6SAndroid Build Coastguard Worker 
51*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExampleClasses04null52*57b5a4a6SAndroid Build Coastguard Worker     fun testExampleClasses04() {
53*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExampleClasses04") { example.exampleClasses04.main() }.verifyOutputLinesStart(
54*57b5a4a6SAndroid Build Coastguard Worker             "Exception in thread \"main\" kotlinx.serialization.MissingFieldException: Field 'language' is required for type with serial name 'example.exampleClasses04.Project', but it was missing at path: $"
55*57b5a4a6SAndroid Build Coastguard Worker         )
56*57b5a4a6SAndroid Build Coastguard Worker     }
57*57b5a4a6SAndroid Build Coastguard Worker 
58*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExampleClasses05null59*57b5a4a6SAndroid Build Coastguard Worker     fun testExampleClasses05() {
60*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExampleClasses05") { example.exampleClasses05.main() }.verifyOutputLines(
61*57b5a4a6SAndroid Build Coastguard Worker             "Project(name=kotlinx.serialization, language=Kotlin)"
62*57b5a4a6SAndroid Build Coastguard Worker         )
63*57b5a4a6SAndroid Build Coastguard Worker     }
64*57b5a4a6SAndroid Build Coastguard Worker 
65*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExampleClasses06null66*57b5a4a6SAndroid Build Coastguard Worker     fun testExampleClasses06() {
67*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExampleClasses06") { example.exampleClasses06.main() }.verifyOutputLines(
68*57b5a4a6SAndroid Build Coastguard Worker             "Project(name=kotlinx.serialization, language=Kotlin)"
69*57b5a4a6SAndroid Build Coastguard Worker         )
70*57b5a4a6SAndroid Build Coastguard Worker     }
71*57b5a4a6SAndroid Build Coastguard Worker 
72*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExampleClasses07null73*57b5a4a6SAndroid Build Coastguard Worker     fun testExampleClasses07() {
74*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExampleClasses07") { example.exampleClasses07.main() }.verifyOutputLinesStart(
75*57b5a4a6SAndroid Build Coastguard Worker             "Exception in thread \"main\" kotlinx.serialization.MissingFieldException: Field 'language' is required for type with serial name 'example.exampleClasses07.Project', but it was missing at path: $"
76*57b5a4a6SAndroid Build Coastguard Worker         )
77*57b5a4a6SAndroid Build Coastguard Worker     }
78*57b5a4a6SAndroid Build Coastguard Worker 
79*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExampleClasses08null80*57b5a4a6SAndroid Build Coastguard Worker     fun testExampleClasses08() {
81*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExampleClasses08") { example.exampleClasses08.main() }.verifyOutputLinesStart(
82*57b5a4a6SAndroid Build Coastguard Worker             "Exception in thread \"main\" kotlinx.serialization.json.internal.JsonDecodingException: Unexpected JSON token at offset 42: Encountered an unknown key 'language' at path: $.name",
83*57b5a4a6SAndroid Build Coastguard Worker             "Use 'ignoreUnknownKeys = true' in 'Json {}' builder to ignore unknown keys."
84*57b5a4a6SAndroid Build Coastguard Worker         )
85*57b5a4a6SAndroid Build Coastguard Worker     }
86*57b5a4a6SAndroid Build Coastguard Worker 
87*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExampleClasses09null88*57b5a4a6SAndroid Build Coastguard Worker     fun testExampleClasses09() {
89*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExampleClasses09") { example.exampleClasses09.main() }.verifyOutputLines(
90*57b5a4a6SAndroid Build Coastguard Worker             "{\"name\":\"kotlinx.serialization\"}"
91*57b5a4a6SAndroid Build Coastguard Worker         )
92*57b5a4a6SAndroid Build Coastguard Worker     }
93*57b5a4a6SAndroid Build Coastguard Worker 
94*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExampleClasses10null95*57b5a4a6SAndroid Build Coastguard Worker     fun testExampleClasses10() {
96*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExampleClasses10") { example.exampleClasses10.main() }.verifyOutputLines(
97*57b5a4a6SAndroid Build Coastguard Worker             "{\"name\":\"Alice\",\"projects\":[{\"name\":\"kotlinx.serialization\",\"language\":\"Kotlin\"}]}",
98*57b5a4a6SAndroid Build Coastguard Worker             "{\"name\":\"Bob\"}"
99*57b5a4a6SAndroid Build Coastguard Worker         )
100*57b5a4a6SAndroid Build Coastguard Worker     }
101*57b5a4a6SAndroid Build Coastguard Worker 
102*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExampleClasses11null103*57b5a4a6SAndroid Build Coastguard Worker     fun testExampleClasses11() {
104*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExampleClasses11") { example.exampleClasses11.main() }.verifyOutputLines(
105*57b5a4a6SAndroid Build Coastguard Worker             "{\"name\":\"kotlinx.serialization\"}"
106*57b5a4a6SAndroid Build Coastguard Worker         )
107*57b5a4a6SAndroid Build Coastguard Worker     }
108*57b5a4a6SAndroid Build Coastguard Worker 
109*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExampleClasses12null110*57b5a4a6SAndroid Build Coastguard Worker     fun testExampleClasses12() {
111*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExampleClasses12") { example.exampleClasses12.main() }.verifyOutputLinesStart(
112*57b5a4a6SAndroid Build Coastguard Worker             "Exception in thread \"main\" kotlinx.serialization.json.internal.JsonDecodingException: Unexpected JSON token at offset 52: Expected string literal but 'null' literal was found at path: $.language",
113*57b5a4a6SAndroid Build Coastguard Worker             "Use 'coerceInputValues = true' in 'Json {}' builder to coerce nulls if property has a default value."
114*57b5a4a6SAndroid Build Coastguard Worker         )
115*57b5a4a6SAndroid Build Coastguard Worker     }
116*57b5a4a6SAndroid Build Coastguard Worker 
117*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExampleClasses13null118*57b5a4a6SAndroid Build Coastguard Worker     fun testExampleClasses13() {
119*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExampleClasses13") { example.exampleClasses13.main() }.verifyOutputLines(
120*57b5a4a6SAndroid Build Coastguard Worker             "{\"name\":\"kotlinx.serialization\",\"owner\":{\"name\":\"kotlin\"}}"
121*57b5a4a6SAndroid Build Coastguard Worker         )
122*57b5a4a6SAndroid Build Coastguard Worker     }
123*57b5a4a6SAndroid Build Coastguard Worker 
124*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExampleClasses14null125*57b5a4a6SAndroid Build Coastguard Worker     fun testExampleClasses14() {
126*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExampleClasses14") { example.exampleClasses14.main() }.verifyOutputLines(
127*57b5a4a6SAndroid Build Coastguard Worker             "{\"name\":\"kotlinx.serialization\",\"owner\":{\"name\":\"kotlin\"},\"maintainer\":{\"name\":\"kotlin\"}}"
128*57b5a4a6SAndroid Build Coastguard Worker         )
129*57b5a4a6SAndroid Build Coastguard Worker     }
130*57b5a4a6SAndroid Build Coastguard Worker 
131*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExampleClasses15null132*57b5a4a6SAndroid Build Coastguard Worker     fun testExampleClasses15() {
133*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExampleClasses15") { example.exampleClasses15.main() }.verifyOutputLines(
134*57b5a4a6SAndroid Build Coastguard Worker             "{\"a\":{\"contents\":42},\"b\":{\"contents\":{\"name\":\"kotlinx.serialization\",\"language\":\"Kotlin\"}}}"
135*57b5a4a6SAndroid Build Coastguard Worker         )
136*57b5a4a6SAndroid Build Coastguard Worker     }
137*57b5a4a6SAndroid Build Coastguard Worker 
138*57b5a4a6SAndroid Build Coastguard Worker     @Test
testExampleClasses16null139*57b5a4a6SAndroid Build Coastguard Worker     fun testExampleClasses16() {
140*57b5a4a6SAndroid Build Coastguard Worker         captureOutput("ExampleClasses16") { example.exampleClasses16.main() }.verifyOutputLines(
141*57b5a4a6SAndroid Build Coastguard Worker             "{\"name\":\"kotlinx.serialization\",\"lang\":\"Kotlin\"}"
142*57b5a4a6SAndroid Build Coastguard Worker         )
143*57b5a4a6SAndroid Build Coastguard Worker     }
144*57b5a4a6SAndroid Build Coastguard Worker }
145