// This file was automatically generated from basic-serialization.md by Knit tool. Do not edit. package example.test import org.junit.Test import kotlinx.knit.test.* class BasicSerializationTest { @Test fun testExampleBasic01() { captureOutput("ExampleBasic01") { example.exampleBasic01.main() }.verifyOutputLinesStart( "Exception in thread \"main\" kotlinx.serialization.SerializationException: Serializer for class 'Project' is not found.", "Please ensure that class is marked as '@Serializable' and that the serialization compiler plugin is applied." ) } @Test fun testExampleBasic02() { captureOutput("ExampleBasic02") { example.exampleBasic02.main() }.verifyOutputLines( "{\"name\":\"kotlinx.serialization\",\"language\":\"Kotlin\"}" ) } @Test fun testExampleBasic03() { captureOutput("ExampleBasic03") { example.exampleBasic03.main() }.verifyOutputLines( "Project(name=kotlinx.serialization, language=Kotlin)" ) } @Test fun testExampleClasses01() { captureOutput("ExampleClasses01") { example.exampleClasses01.main() }.verifyOutputLines( "{\"name\":\"kotlinx.serialization\",\"stars\":9000}" ) } @Test fun testExampleClasses02() { captureOutput("ExampleClasses02") { example.exampleClasses02.main() }.verifyOutputLines( "{\"owner\":\"kotlin\",\"name\":\"kotlinx.serialization\"}" ) } @Test fun testExampleClasses03() { captureOutput("ExampleClasses03") { example.exampleClasses03.main() }.verifyOutputLinesStart( "Exception in thread \"main\" java.lang.IllegalArgumentException: name cannot be empty" ) } @Test fun testExampleClasses04() { captureOutput("ExampleClasses04") { example.exampleClasses04.main() }.verifyOutputLinesStart( "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: $" ) } @Test fun testExampleClasses05() { captureOutput("ExampleClasses05") { example.exampleClasses05.main() }.verifyOutputLines( "Project(name=kotlinx.serialization, language=Kotlin)" ) } @Test fun testExampleClasses06() { captureOutput("ExampleClasses06") { example.exampleClasses06.main() }.verifyOutputLines( "Project(name=kotlinx.serialization, language=Kotlin)" ) } @Test fun testExampleClasses07() { captureOutput("ExampleClasses07") { example.exampleClasses07.main() }.verifyOutputLinesStart( "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: $" ) } @Test fun testExampleClasses08() { captureOutput("ExampleClasses08") { example.exampleClasses08.main() }.verifyOutputLinesStart( "Exception in thread \"main\" kotlinx.serialization.json.internal.JsonDecodingException: Unexpected JSON token at offset 42: Encountered an unknown key 'language' at path: $.name", "Use 'ignoreUnknownKeys = true' in 'Json {}' builder to ignore unknown keys." ) } @Test fun testExampleClasses09() { captureOutput("ExampleClasses09") { example.exampleClasses09.main() }.verifyOutputLines( "{\"name\":\"kotlinx.serialization\"}" ) } @Test fun testExampleClasses10() { captureOutput("ExampleClasses10") { example.exampleClasses10.main() }.verifyOutputLines( "{\"name\":\"Alice\",\"projects\":[{\"name\":\"kotlinx.serialization\",\"language\":\"Kotlin\"}]}", "{\"name\":\"Bob\"}" ) } @Test fun testExampleClasses11() { captureOutput("ExampleClasses11") { example.exampleClasses11.main() }.verifyOutputLines( "{\"name\":\"kotlinx.serialization\"}" ) } @Test fun testExampleClasses12() { captureOutput("ExampleClasses12") { example.exampleClasses12.main() }.verifyOutputLinesStart( "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", "Use 'coerceInputValues = true' in 'Json {}' builder to coerce nulls if property has a default value." ) } @Test fun testExampleClasses13() { captureOutput("ExampleClasses13") { example.exampleClasses13.main() }.verifyOutputLines( "{\"name\":\"kotlinx.serialization\",\"owner\":{\"name\":\"kotlin\"}}" ) } @Test fun testExampleClasses14() { captureOutput("ExampleClasses14") { example.exampleClasses14.main() }.verifyOutputLines( "{\"name\":\"kotlinx.serialization\",\"owner\":{\"name\":\"kotlin\"},\"maintainer\":{\"name\":\"kotlin\"}}" ) } @Test fun testExampleClasses15() { captureOutput("ExampleClasses15") { example.exampleClasses15.main() }.verifyOutputLines( "{\"a\":{\"contents\":42},\"b\":{\"contents\":{\"name\":\"kotlinx.serialization\",\"language\":\"Kotlin\"}}}" ) } @Test fun testExampleClasses16() { captureOutput("ExampleClasses16") { example.exampleClasses16.main() }.verifyOutputLines( "{\"name\":\"kotlinx.serialization\",\"lang\":\"Kotlin\"}" ) } }