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