1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.juneau.uon;
18
19 import static org.apache.juneau.commons.utils.CollectionUtils.*;
20 import static org.junit.jupiter.api.Assertions.*;
21
22 import org.apache.juneau.collections.*;
23 import org.junit.jupiter.api.*;
24
25 class UonSerializer_Test {
26
27 static UonSerializer s = UonSerializer.DEFAULT_ENCODING;
28 static UonSerializer su = UonSerializer.DEFAULT;
29 static UonSerializer sr = UonSerializer.DEFAULT_READABLE;
30
31
32
33
34 @Test void a01_basic() throws Exception {
35
36
37 var t = (Object)"a";
38 assertEquals("a", s.serialize(t));
39 assertEquals("a", su.serialize(t));
40 assertEquals("a", sr.serialize(t));
41
42
43 t = JsonMap.ofJson("{a:'a'}");
44 assertEquals("(a=a)", s.serialize(t));
45 assertEquals("(a=a)", su.serialize(t));
46 assertEquals("(\n\ta=a\n)", sr.serialize(t));
47
48
49
50 t = JsonMap.ofJson("{a:'b',c:123,d:false,e:true,f:null}");
51 assertEquals("(a=b,c=123,d=false,e=true,f=null)", s.serialize(t));
52 assertEquals("(a=b,c=123,d=false,e=true,f=null)", su.serialize(t));
53 assertEquals("(\n\ta=b,\n\tc=123,\n\td=false,\n\te=true,\n\tf=null\n)", sr.serialize(t));
54
55
56 t = JsonMap.ofJson("{a:{a:'b',c:123,d:false,e:true,f:null}}");
57 assertEquals("(a=(a=b,c=123,d=false,e=true,f=null))", s.serialize(t));
58 assertEquals("(a=(a=b,c=123,d=false,e=true,f=null))", su.serialize(t));
59 assertEquals("(\n\ta=(\n\t\ta=b,\n\t\tc=123,\n\t\td=false,\n\t\te=true,\n\t\tf=null\n\t)\n)", sr.serialize(t));
60
61
62 t = JsonMap.ofJson("{a:'b',c:'123',d:'false',e:'true',f:'null'}");
63 assertEquals("(a=b,c='123',d='false',e='true',f='null')", s.serialize(t));
64 assertEquals("(a=b,c='123',d='false',e='true',f='null')", su.serialize(t));
65 assertEquals("(\n\ta=b,\n\tc='123',\n\td='false',\n\te='true',\n\tf='null'\n)", sr.serialize(t));
66
67
68
69
70 t = null;
71 assertEquals("null", s.serialize(t));
72 assertEquals("null", su.serialize(t));
73 assertEquals("null", sr.serialize(t));
74
75
76 t = JsonMap.ofJson("{null:null}");
77 assertEquals("(null=null)", s.serialize(t));
78 assertEquals("(null=null)", su.serialize(t));
79 assertEquals("(\n\tnull=null\n)", sr.serialize(t));
80
81
82 t = JsonMap.ofJson("{null:{null:null}}");
83 assertEquals("(null=(null=null))", s.serialize(t));
84 assertEquals("(null=(null=null))", su.serialize(t));
85 assertEquals("(\n\tnull=(\n\t\tnull=null\n\t)\n)", sr.serialize(t));
86
87
88
89 t = new String[0];
90 assertEquals("@()", s.serialize(t));
91 assertEquals("@()", su.serialize(t));
92 assertEquals("@()", sr.serialize(t));
93
94
95 t = JsonMap.ofJson("{x:[]}");
96 assertEquals("(x=@())", s.serialize(t));
97 assertEquals("(x=@())", su.serialize(t));
98 assertEquals("(\n\tx=@()\n)", sr.serialize(t));
99
100
101 t = new String[1][0];
102 assertEquals("@(@())", s.serialize(t));
103 assertEquals("@(@())", su.serialize(t));
104 assertEquals("@(\n\t@()\n)", sr.serialize(t));
105
106
107
108 t = a("");
109 assertEquals("@('')", s.serialize(t));
110 assertEquals("@('')", su.serialize(t));
111 assertEquals("@(\n\t''\n)", sr.serialize(t));
112
113
114 t = JsonMap.ofJson("{x:['']}");
115 assertEquals("(x=@(''))", s.serialize(t));
116 assertEquals("(x=@(''))", su.serialize(t));
117 assertEquals("(\n\tx=@(\n\t\t''\n\t)\n)", sr.serialize(t));
118
119
120 t = a("","","");
121 assertEquals("@('','','')", s.serialize(t));
122 assertEquals("@('','','')", su.serialize(t));
123 assertEquals("@(\n\t'',\n\t'',\n\t''\n)", sr.serialize(t));
124
125
126
127 t = "\u0000";
128 assertEquals("%00", s.serialize(t));
129 assertEquals("\u0000", su.serialize(t));
130 assertEquals("\u0000", sr.serialize(t));
131
132
133 t = JsonMap.ofJson("{'\u0000':'\u0000'}");
134 assertEquals("(%00=%00)", s.serialize(t));
135 assertEquals("(\u0000=\u0000)", su.serialize(t));
136 assertEquals("(\n\t\u0000=\u0000\n)", sr.serialize(t));
137
138
139
140 t = false;
141 assertEquals("false", s.serialize(t));
142 assertEquals("false", su.serialize(t));
143 assertEquals("false", sr.serialize(t));
144
145
146 t = JsonMap.ofJson("{x:false}");
147 assertEquals("(x=false)", s.serialize(t));
148 assertEquals("(x=false)", su.serialize(t));
149 assertEquals("(\n\tx=false\n)", sr.serialize(t));
150
151
152
153 t = 123;
154 assertEquals("123", s.serialize(t));
155 assertEquals("123", su.serialize(t));
156 assertEquals("123", sr.serialize(t));
157
158
159 t = JsonMap.ofJson("{x:123}");
160 assertEquals("(x=123)", s.serialize(t));
161 assertEquals("(x=123)", su.serialize(t));
162 assertEquals("(\n\tx=123\n)", sr.serialize(t));
163
164
165
166 t = "x;/?:@-_.!*'";
167 assertEquals("x;/?:@-_.!*~'", s.serialize(t));
168 assertEquals("x;/?:@-_.!*~'", su.serialize(t));
169 assertEquals("x;/?:@-_.!*~'", sr.serialize(t));
170
171
172 t = JsonMap.ofJson("{x:'x;/?:@-_.!*\\''}");
173 assertEquals("(x=x;/?:@-_.!*~')", s.serialize(t));
174 assertEquals("(x=x;/?:@-_.!*~')", su.serialize(t));
175 assertEquals("(\n\tx=x;/?:@-_.!*~'\n)", sr.serialize(t));
176
177
178
179 t = "x{}|\\^[]`<>#%\"&+";
180 assertEquals("x%7B%7D%7C%5C%5E%5B%5D%60%3C%3E%23%25%22%26%2B", s.serialize(t));
181 assertEquals("x{}|\\^[]`<>#%\"&+", su.serialize(t));
182 assertEquals("x{}|\\^[]`<>#%\"&+", sr.serialize(t));
183
184
185 t = JsonMap.ofJson("{'x{}|\\\\^[]`<>#%\"&+':'x{}|\\\\^[]`<>#%\"&+'}");
186 assertEquals("(x%7B%7D%7C%5C%5E%5B%5D%60%3C%3E%23%25%22%26%2B=x%7B%7D%7C%5C%5E%5B%5D%60%3C%3E%23%25%22%26%2B)", s.serialize(t));
187 assertEquals("(x{}|\\^[]`<>#%\"&+=x{}|\\^[]`<>#%\"&+)", su.serialize(t));
188 assertEquals("(\n\tx{}|\\^[]`<>#%\"&+=x{}|\\^[]`<>#%\"&+\n)", sr.serialize(t));
189
190
191
192 t = "x$,()~";
193 assertEquals("'x$,()~~'", s.serialize(t));
194 assertEquals("'x$,()~~'", su.serialize(t));
195 assertEquals("'x$,()~~'", sr.serialize(t));
196
197
198
199 t = JsonMap.ofJson("{'x$,()~':'x$,()~'}");
200 assertEquals("('x$,()~~'='x$,()~~')", s.serialize(t));
201 assertEquals("('x$,()~~'='x$,()~~')", su.serialize(t));
202 assertEquals("(\n\t'x$,()~~'='x$,()~~'\n)", sr.serialize(t));
203
204
205
206 t = JsonMap.ofJson("{'x$,()~':{'x$,()~':'x$,()~'}}");
207 assertEquals("('x$,()~~'=('x$,()~~'='x$,()~~'))", s.serialize(t));
208 assertEquals("('x$,()~~'=('x$,()~~'='x$,()~~'))", su.serialize(t));
209 assertEquals("(\n\t'x$,()~~'=(\n\t\t'x$,()~~'='x$,()~~'\n\t)\n)", sr.serialize(t));
210
211
212
213
214 t = "x=";
215 assertEquals("'x='", s.serialize(t));
216 assertEquals("'x='", su.serialize(t));
217 assertEquals("'x='", sr.serialize(t));
218
219
220 t = JsonMap.ofJson("{'x=':'x='}");
221 assertEquals("('x='='x=')", s.serialize(t));
222 assertEquals("('x='='x=')", su.serialize(t));
223 assertEquals("(\n\t'x='='x='\n)", sr.serialize(t));
224
225
226 t = JsonMap.ofJson("{'x=':{'x=':'x='}}");
227 assertEquals("('x='=('x='='x='))", s.serialize(t));
228 assertEquals("('x='=('x='='x='))", su.serialize(t));
229 assertEquals("(\n\t'x='=(\n\t\t'x='='x='\n\t)\n)", sr.serialize(t));
230
231
232
233 t = "()";
234 assertEquals("'()'", s.serialize(t));
235 assertEquals("'()'", su.serialize(t));
236 assertEquals("'()'", sr.serialize(t));
237
238
239 t = JsonMap.ofJson("{'()':'()'}");
240 assertEquals("('()'='()')", s.serialize(t));
241 assertEquals("('()'='()')", su.serialize(t));
242 assertEquals("(\n\t'()'='()'\n)", sr.serialize(t));
243
244
245
246 t = "$a";
247 assertEquals("$a", s.serialize(t));
248 assertEquals("$a", su.serialize(t));
249 assertEquals("$a", sr.serialize(t));
250
251
252 t = JsonMap.ofJson("{$a:'$a'}");
253 assertEquals("($a=$a)", s.serialize(t));
254 assertEquals("($a=$a)", su.serialize(t));
255 assertEquals("(\n\t$a=$a\n)", sr.serialize(t));
256
257
258
259 t = "";
260 assertEquals("''", s.serialize(t));
261 assertEquals("''", su.serialize(t));
262 assertEquals("''", sr.serialize(t));
263
264
265 t = JsonMap.ofJson("{'':''}");
266 assertEquals("(''='')", s.serialize(t));
267 assertEquals("(''='')", su.serialize(t));
268 assertEquals("(\n\t''=''\n)", sr.serialize(t));
269
270
271 t = JsonMap.ofJson("{'':{'':''}}");
272 assertEquals("(''=(''=''))", s.serialize(t));
273 assertEquals("(''=(''=''))", su.serialize(t));
274 assertEquals("(\n\t''=(\n\t\t''=''\n\t)\n)", sr.serialize(t));
275
276
277
278 t = "\n";
279 assertEquals("'%0A'", s.serialize(t));
280 assertEquals("'\n'", su.serialize(t));
281 assertEquals("'\n'", sr.serialize(t));
282
283
284 t = JsonMap.ofJson("{'\n':'\n'}");
285 assertEquals("('%0A'='%0A')", s.serialize(t));
286 assertEquals("('\n'='\n')", su.serialize(t));
287 assertEquals("(\n\t'\n'='\n'\n)", sr.serialize(t));
288
289
290 t = JsonMap.ofJson("{'\n':{'\n':'\n'}}");
291 assertEquals("('%0A'=('%0A'='%0A'))", s.serialize(t));
292 assertEquals("('\n'=('\n'='\n'))", su.serialize(t));
293 assertEquals("(\n\t'\n'=(\n\t\t'\n'='\n'\n\t)\n)", sr.serialize(t));
294 }
295
296
297
298
299 @Test void a02_unicodeChars() throws Exception {
300
301
302
303 var t = (Object)"¢";
304 assertEquals("%C2%A2", s.serialize(t));
305 assertEquals("¢", su.serialize(t));
306 assertEquals("¢", sr.serialize(t));
307
308
309 t = JsonMap.ofJson("{'¢':'¢'}");
310 assertEquals("(%C2%A2=%C2%A2)", s.serialize(t));
311 assertEquals("(¢=¢)", su.serialize(t));
312 assertEquals("(\n\t¢=¢\n)", sr.serialize(t));
313
314
315 t = JsonMap.ofJson("{'¢':{'¢':'¢'}}");
316 assertEquals("(%C2%A2=(%C2%A2=%C2%A2))", s.serialize(t));
317 assertEquals("(¢=(¢=¢))", su.serialize(t));
318 assertEquals("(\n\t¢=(\n\t\t¢=¢\n\t)\n)", sr.serialize(t));
319
320
321
322 t = "€";
323 assertEquals("%E2%82%AC", s.serialize(t));
324 assertEquals("€", su.serialize(t));
325 assertEquals("€", sr.serialize(t));
326
327
328 t = JsonMap.ofJson("{'€':'€'}");
329 assertEquals("(%E2%82%AC=%E2%82%AC)", s.serialize(t));
330 assertEquals("(€=€)", su.serialize(t));
331 assertEquals("(\n\t€=€\n)", sr.serialize(t));
332
333
334 t = JsonMap.ofJson("{'€':{'€':'€'}}");
335 assertEquals("(%E2%82%AC=(%E2%82%AC=%E2%82%AC))", s.serialize(t));
336 assertEquals("(€=(€=€))", su.serialize(t));
337 assertEquals("(\n\t€=(\n\t\t€=€\n\t)\n)", sr.serialize(t));
338
339
340
341 t = "𤭢";
342 assertEquals("%F0%A4%AD%A2", s.serialize(t));
343 assertEquals("𤭢", su.serialize(t));
344 assertEquals("𤭢", sr.serialize(t));
345
346
347 t = JsonMap.ofJson("{'𤭢':'𤭢'}");
348 assertEquals("(%F0%A4%AD%A2=%F0%A4%AD%A2)", s.serialize(t));
349 assertEquals("(𤭢=𤭢)", su.serialize(t));
350 assertEquals("(\n\t𤭢=𤭢\n)", sr.serialize(t));
351
352
353 t = JsonMap.ofJson("{'𤭢':{'𤭢':'𤭢'}}");
354 assertEquals("(%F0%A4%AD%A2=(%F0%A4%AD%A2=%F0%A4%AD%A2))", s.serialize(t));
355 assertEquals("(𤭢=(𤭢=𤭢))", su.serialize(t));
356 assertEquals("(\n\t𤭢=(\n\t\t𤭢=𤭢\n\t)\n)", sr.serialize(t));
357 }
358 }