• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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