1 /* 2 * Copyright 2017-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. 3 */ 4 5 package kotlinx.serialization.json 6 7 import kotlin.test.* 8 9 class JsonBuildersTest { 10 11 @Test testBuildJsonnull12 fun testBuildJson() { 13 val json = buildJsonObject { 14 putJsonObject("object") { 15 put("k", JsonPrimitive("v")) 16 } 17 18 putJsonArray("array") { 19 addJsonObject { put("nestedLiteral", true) } 20 } 21 22 val number: Number? = null 23 put("null", number) 24 put("primitive", JsonPrimitive(42)) 25 put("boolean", true) 26 put("literal", "foo") 27 put("null2", null) 28 } 29 assertEquals("""{"object":{"k":"v"},"array":[{"nestedLiteral":true}],"null":null,"primitive":42,"boolean":true,"literal":"foo","null2":null}""", json.toString()) 30 } 31 32 @Test testBuildJsonArraynull33 fun testBuildJsonArray() { 34 val json = buildJsonArray { 35 add(true) 36 addJsonArray { 37 for (i in 1..10) add(i) 38 } 39 add(null) 40 addJsonObject { 41 put("stringKey", "stringValue") 42 } 43 } 44 assertEquals("""[true,[1,2,3,4,5,6,7,8,9,10],null,{"stringKey":"stringValue"}]""", json.toString()) 45 } 46 47 @Test testBuildJsonArrayAddAllnull48 fun testBuildJsonArrayAddAll() { 49 assertEquals( 50 """[1,2,3,4,5,null]""", 51 buildJsonArray { 52 assertTrue { addAll(listOf(1, 2, 3, 4, 5, null)) } 53 }.toString() 54 ) 55 56 assertEquals( 57 """["a","b","c",null]""", 58 buildJsonArray { 59 assertTrue { addAll(listOf("a", "b", "c", null)) } 60 }.toString() 61 ) 62 63 assertEquals( 64 """[true,false,null]""", 65 buildJsonArray { 66 assertTrue { addAll(listOf(true, false, null)) } 67 }.toString() 68 ) 69 70 assertEquals( 71 """[2,"b",true,null]""", 72 buildJsonArray { 73 assertTrue { 74 addAll( 75 listOf( 76 JsonPrimitive(2), 77 JsonPrimitive("b"), 78 JsonPrimitive(true), 79 JsonNull, 80 ) 81 ) 82 } 83 }.toString() 84 ) 85 86 assertEquals( 87 """[{},{},{},null]""", 88 buildJsonArray { 89 assertTrue { 90 addAll( 91 listOf( 92 JsonObject(emptyMap()), 93 JsonObject(emptyMap()), 94 JsonObject(emptyMap()), 95 JsonNull 96 ) 97 ) 98 } 99 }.toString() 100 ) 101 102 assertEquals( 103 """[[],[],[],null]""", 104 buildJsonArray { 105 assertTrue { 106 addAll( 107 listOf( 108 JsonArray(emptyList()), 109 JsonArray(emptyList()), 110 JsonArray(emptyList()), 111 JsonNull 112 ) 113 ) 114 } 115 }.toString() 116 ) 117 118 assertEquals( 119 """[null,null]""", 120 buildJsonArray { 121 assertTrue { 122 addAll(listOf(JsonNull, JsonNull)) 123 } 124 }.toString() 125 ) 126 } 127 128 @Test testBuildJsonArrayAddAllNotModifiednull129 fun testBuildJsonArrayAddAllNotModified() { 130 assertEquals( 131 """[]""", 132 buildJsonArray { 133 // add collections 134 assertFalse { addAll(listOf<Number>()) } 135 assertFalse { addAll(listOf<String>()) } 136 assertFalse { addAll(listOf<Boolean>()) } 137 138 // add json elements 139 assertFalse { addAll(listOf()) } 140 assertFalse { addAll(listOf<JsonNull>()) } 141 assertFalse { addAll(listOf<JsonObject>()) } 142 assertFalse { addAll(listOf<JsonArray>()) } 143 assertFalse { addAll(listOf<JsonPrimitive>()) } 144 }.toString() 145 ) 146 } 147 } 148