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