3b20a448ed11a2697aa8575d344b5c428e12cb4a
[smo/teiv.git] /
1 /*
2  *  ============LICENSE_START=======================================================
3  *  Copyright (C) 2024 Ericsson
4  *  Modifications Copyright (C) 2024 OpenInfra Foundation Europe
5  *  ================================================================================
6  *  Licensed under the Apache License, Version 2.0 (the "License");
7  *  you may not use this file except in compliance with the License.
8  *  You may obtain a copy of the License at
9  *
10  *        http://www.apache.org/licenses/LICENSE-2.0
11  *
12  *  Unless required by applicable law or agreed to in writing, software
13  *  distributed under the License is distributed on an "AS IS" BASIS,
14  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  *  See the License for the specific language governing permissions and
16  *  limitations under the License.
17  *
18  *  SPDX-License-Identifier: Apache-2.0
19  *  ============LICENSE_END=========================================================
20  */
21 package org.oran.smo.yangtools.parser.data.parser.test;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertFalse;
25 import static org.junit.Assert.assertTrue;
26
27 import java.io.File;
28 import java.io.IOException;
29
30 import org.junit.Test;
31
32 import org.oran.smo.yangtools.parser.data.YangData;
33 import org.oran.smo.yangtools.parser.data.parser.JsonParser;
34 import org.oran.smo.yangtools.parser.data.parser.JsonParser.JsonArray;
35 import org.oran.smo.yangtools.parser.data.parser.JsonParser.JsonObject;
36 import org.oran.smo.yangtools.parser.data.parser.JsonParser.JsonObjectMemberName;
37 import org.oran.smo.yangtools.parser.data.parser.JsonParser.JsonPrimitive;
38 import org.oran.smo.yangtools.parser.data.parser.JsonParser.JsonValue;
39 import org.oran.smo.yangtools.parser.findings.ParserFindingType;
40 import org.oran.smo.yangtools.parser.input.FileBasedYangInput;
41 import org.oran.smo.yangtools.parser.testutils.YangTestCommon;
42
43 public class JsonParserTest extends YangTestCommon {
44
45     private static final String DIR = "src/test/resources/data-parser/";
46
47     @Test
48     public void test_ok_json1() {
49
50         final Object jsonRoot = parseJsonFile("json-ok1.json");
51
52         assertNoFindings();
53
54         assertTrue(jsonRoot instanceof JsonObject);
55         final JsonObject jsonRootObject = (JsonObject) jsonRoot;
56
57         final JsonValue attr1 = getJsonObjectMemberValue(jsonRootObject, "attr1");
58         assertTrue(attr1 instanceof JsonPrimitive);
59         assertTrue(((JsonPrimitive) attr1).getValue() instanceof String);
60         assertTrue(((String) ((JsonPrimitive) attr1).getValue()).equals("some string"));
61
62         final JsonValue attr2 = getJsonObjectMemberValue(jsonRootObject, "attr2");
63         assertTrue(attr2 instanceof JsonPrimitive);
64         assertTrue(((JsonPrimitive) attr2).getValue() instanceof Boolean);
65         assertTrue(((Boolean) ((JsonPrimitive) attr2).getValue()).equals(Boolean.TRUE));
66
67         final JsonValue attr3 = getJsonObjectMemberValue(jsonRootObject, "attr3");
68         assertTrue(attr3 instanceof JsonPrimitive);
69         assertTrue(((JsonPrimitive) attr3).getValue() instanceof Long);
70         assertTrue(((Long) ((JsonPrimitive) attr3).getValue()).intValue() == 12);
71
72         final JsonValue attr4 = getJsonObjectMemberValue(jsonRootObject, "attr4");
73         assertTrue(attr4 instanceof JsonPrimitive);
74         assertTrue(((JsonPrimitive) attr4).getValue() == null);
75
76         final JsonValue attr5 = getJsonObjectMemberValue(jsonRootObject, "attr5");
77         assertTrue(attr5 instanceof JsonPrimitive);
78         assertTrue(((JsonPrimitive) attr5).getValue() instanceof Boolean);
79         assertTrue(((Boolean) ((JsonPrimitive) attr5).getValue()).equals(Boolean.FALSE));
80
81         final JsonValue attr6 = getJsonObjectMemberValue(jsonRootObject, "attr6");
82         assertTrue(attr6 instanceof JsonPrimitive);
83         assertTrue(((JsonPrimitive) attr6).getValue() instanceof Double);
84         assertTrue(((Double) ((JsonPrimitive) attr6).getValue()).doubleValue() == 123456789.123456789d);
85
86         final JsonValue attr7 = getJsonObjectMemberValue(jsonRootObject, "attr7");
87         assertTrue(attr7 instanceof JsonPrimitive);
88         assertTrue(((JsonPrimitive) attr7).getValue() instanceof Long);
89         assertTrue(((Long) ((JsonPrimitive) attr7).getValue()).longValue() == 1234567890123L);
90
91         final JsonValue attr8 = getJsonObjectMemberValue(jsonRootObject, "attr8");
92         assertTrue(attr8 instanceof JsonPrimitive);
93         assertTrue(((JsonPrimitive) attr8).getValue() instanceof Long);
94         assertTrue(((Long) ((JsonPrimitive) attr8).getValue()).longValue() == Long.MAX_VALUE);
95
96         final JsonValue attr9 = getJsonObjectMemberValue(jsonRootObject, "attr9");
97         assertTrue(attr9 instanceof JsonPrimitive);
98         assertTrue(((JsonPrimitive) attr9).getValue() instanceof String);
99         assertTrue(((String) ((JsonPrimitive) attr9).getValue()).equals("9223372036854775808"));
100
101         final JsonValue attr10 = getJsonObjectMemberValue(jsonRootObject, "attr10");
102         assertTrue(attr10 instanceof JsonPrimitive);
103         assertTrue(((JsonPrimitive) attr10).getValue() instanceof Long);
104         assertTrue(((Long) ((JsonPrimitive) attr10).getValue()).longValue() == Long.MIN_VALUE);
105
106         final JsonValue attr11 = getJsonObjectMemberValue(jsonRootObject, "attr11");
107         assertTrue(attr11 instanceof JsonPrimitive);
108         assertTrue(((JsonPrimitive) attr11).getValue() instanceof String);
109         assertTrue(((String) ((JsonPrimitive) attr11).getValue()).equals("-9223372036854775809"));
110
111         // ======================
112
113         final JsonValue attr12 = getJsonObjectMemberValue(jsonRootObject, "attr12");
114         assertTrue(attr12 instanceof JsonObject);
115         assertTrue(((JsonObject) attr12).getValuesByMember().size() == 0);
116
117         final JsonValue attr13 = getJsonObjectMemberValue(jsonRootObject, "attr13");
118         assertTrue(attr13 instanceof JsonObject);
119         assertTrue(((JsonObject) attr13).getValuesByMember().size() == 2);
120
121         final JsonObject attr12Object = (JsonObject) attr13;
122
123         final JsonValue attr17 = getJsonObjectMemberValue(attr12Object, "attr17");
124         assertTrue(attr17 instanceof JsonPrimitive);
125         assertTrue(((JsonPrimitive) attr17).getValue() instanceof String);
126         assertTrue(((String) ((JsonPrimitive) attr17).getValue()).equals("hello"));
127
128         final JsonValue attr18 = getJsonObjectMemberValue(attr12Object, "module:attr18");
129         assertTrue(attr18 instanceof JsonPrimitive);
130         assertTrue(((JsonPrimitive) attr18).getValue() instanceof Double);
131         assertTrue(((Double) ((JsonPrimitive) attr18).getValue()).doubleValue() == -1d);
132
133         // ======================
134
135         final JsonValue attr21 = getJsonObjectMemberValue(jsonRootObject, "attr21");
136         assertTrue(attr21 instanceof JsonArray);
137         assertTrue(((JsonArray) attr21).getValues().size() == 0);
138
139         final JsonValue attr22 = getJsonObjectMemberValue(jsonRootObject, "attr22");
140         assertTrue(attr22 instanceof JsonArray);
141         assertTrue(((JsonArray) attr22).getValues().size() == 3);
142
143         assertTrue(((JsonArray) attr22).getValues().get(0) instanceof JsonPrimitive);
144         assertTrue(((JsonPrimitive) ((JsonArray) attr22).getValues().get(0)).getValue() instanceof Double);
145         assertTrue(((Double) ((JsonPrimitive) ((JsonArray) attr22).getValues().get(0)).getValue()).doubleValue() == 1d);
146
147         assertTrue(((JsonArray) attr22).getValues().get(1) instanceof JsonPrimitive);
148         assertTrue(((JsonPrimitive) ((JsonArray) attr22).getValues().get(1)).getValue() instanceof Long);
149         assertTrue(((Long) ((JsonPrimitive) ((JsonArray) attr22).getValues().get(1)).getValue()).longValue() == 2L);
150
151         assertTrue(((JsonArray) attr22).getValues().get(2) instanceof JsonPrimitive);
152         assertTrue(((JsonPrimitive) ((JsonArray) attr22).getValues().get(2)).getValue() instanceof Double);
153         assertTrue(((Double) ((JsonPrimitive) ((JsonArray) attr22).getValues().get(2)).getValue()).doubleValue() == -99d);
154     }
155
156     @Test
157     public void test_ok_json2() {
158
159         final Object jsonRoot = parseJsonFile("json-ok2.json");
160
161         assertNoFindings();
162
163         assertTrue(jsonRoot instanceof JsonObject);
164         final JsonObject jsonRootObject = (JsonObject) jsonRoot;
165
166         final JsonValue attr1 = getJsonObjectMemberValue(jsonRootObject, "attr1");
167         assertTrue(attr1 instanceof JsonArray);
168         assertTrue(((JsonArray) attr1).getValues().size() == 0);
169
170         final JsonValue attr2 = getJsonObjectMemberValue(jsonRootObject, "attr2");
171         assertTrue(attr2 instanceof JsonArray);
172         assertTrue(((JsonArray) attr2).getValues().size() == 0);
173
174         final JsonValue attr3 = getJsonObjectMemberValue(jsonRootObject, "attr3");
175         assertTrue(attr3 instanceof JsonArray);
176         assertTrue(((JsonArray) attr3).getValues().size() == 0);
177
178         // ======================
179
180         final JsonValue attr4 = getJsonObjectMemberValue(jsonRootObject, "attr4");
181         assertTrue(attr4 instanceof JsonArray);
182         assertTrue(((JsonArray) attr4).getValues().size() == 5);
183
184         assertTrue(((JsonArray) attr4).getValues().get(0) instanceof JsonPrimitive);
185         assertTrue(((JsonPrimitive) ((JsonArray) attr4).getValues().get(0)).getValue() instanceof String);
186         assertTrue(((String) ((JsonPrimitive) ((JsonArray) attr4).getValues().get(0)).getValue()).equals("hello"));
187
188         assertTrue(((JsonArray) attr4).getValues().get(1) instanceof JsonPrimitive);
189         assertTrue(((JsonPrimitive) ((JsonArray) attr4).getValues().get(1)).getValue() instanceof Boolean);
190         assertTrue(((Boolean) ((JsonPrimitive) ((JsonArray) attr4).getValues().get(1)).getValue()).booleanValue() == true);
191
192         assertTrue(((JsonArray) attr4).getValues().get(2) instanceof JsonPrimitive);
193         assertTrue(((JsonPrimitive) ((JsonArray) attr4).getValues().get(2)).getValue() instanceof Boolean);
194         assertTrue(((Boolean) ((JsonPrimitive) ((JsonArray) attr4).getValues().get(2)).getValue()).booleanValue() == false);
195
196         assertTrue(((JsonArray) attr4).getValues().get(3) instanceof JsonPrimitive);
197         assertTrue(((JsonPrimitive) ((JsonArray) attr4).getValues().get(3)).getValue() == null);
198
199         assertTrue(((JsonArray) attr4).getValues().get(4) instanceof JsonPrimitive);
200         assertTrue(((JsonPrimitive) ((JsonArray) attr4).getValues().get(4)).getValue() instanceof Double);
201         assertTrue(((Double) ((JsonPrimitive) ((JsonArray) attr4).getValues().get(4)).getValue())
202                 .doubleValue() == 123456789.123456789d);
203
204         // ======================
205
206         final JsonValue attr5 = getJsonObjectMemberValue(jsonRootObject, "attr5");
207         assertTrue(attr5 instanceof JsonArray);
208         assertTrue(((JsonArray) attr5).getValues().size() == 4);
209
210         assertTrue(((JsonArray) attr5).getValues().get(0) instanceof JsonArray);
211         assertTrue(((JsonArray) ((JsonArray) attr5).getValues().get(0)).getValues().size() == 1);
212         assertTrue(((JsonArray) ((JsonArray) attr5).getValues().get(0)).getValues().get(0) instanceof JsonPrimitive);
213         assertTrue(((JsonPrimitive) ((JsonArray) ((JsonArray) attr5).getValues().get(0)).getValues().get(0))
214                 .getValue() == null);
215
216         assertTrue(((JsonArray) attr5).getValues().get(1) instanceof JsonArray);
217         assertTrue(((JsonArray) ((JsonArray) attr5).getValues().get(1)).getValues().size() == 2);
218         assertTrue(((JsonArray) ((JsonArray) attr5).getValues().get(1)).getValues().get(0) instanceof JsonPrimitive);
219         assertTrue(((JsonPrimitive) ((JsonArray) ((JsonArray) attr5).getValues().get(1)).getValues().get(0))
220                 .getValue() == null);
221         assertTrue(((JsonArray) ((JsonArray) attr5).getValues().get(1)).getValues().get(1) instanceof JsonPrimitive);
222         assertTrue(((JsonPrimitive) ((JsonArray) ((JsonArray) attr5).getValues().get(1)).getValues().get(1))
223                 .getValue() instanceof Boolean);
224         assertTrue(((Boolean) ((JsonPrimitive) ((JsonArray) ((JsonArray) attr5).getValues().get(1)).getValues().get(1))
225                 .getValue()).booleanValue() == true);
226
227         assertTrue(((JsonArray) attr5).getValues().get(2) instanceof JsonArray);
228         assertTrue(((JsonArray) ((JsonArray) attr5).getValues().get(2)).getValues().size() == 0);
229
230         assertTrue(((JsonArray) attr5).getValues().get(3) instanceof JsonPrimitive);
231         assertTrue(((JsonPrimitive) ((JsonArray) attr5).getValues().get(3)).getValue() instanceof String);
232         assertTrue(((String) ((JsonPrimitive) ((JsonArray) attr5).getValues().get(3)).getValue()).equals("hello"));
233
234         // ======================
235
236         final JsonValue attr6 = getJsonObjectMemberValue(jsonRootObject, "attr6");
237         assertTrue(attr6 instanceof JsonArray);
238         assertTrue(((JsonArray) attr6).getValues().size() == 2);
239
240         assertTrue(((JsonArray) attr6).getValues().get(0) instanceof JsonArray);
241         assertTrue(((JsonArray) ((JsonArray) attr6).getValues().get(0)).getValues().size() == 0);
242
243         assertTrue(((JsonArray) attr6).getValues().get(1) instanceof JsonObject);
244         assertTrue(((JsonObject) ((JsonArray) attr6).getValues().get(1)).getValuesByMember().size() == 0);
245
246         // ======================
247
248         final JsonValue attr7 = getJsonObjectMemberValue(jsonRootObject, "attr7");
249         assertTrue(attr7 instanceof JsonArray);
250         assertTrue(((JsonArray) attr7).getValues().size() == 2);
251
252         assertTrue(((JsonArray) attr7).getValues().get(0) instanceof JsonObject);
253         assertTrue(((JsonObject) ((JsonArray) attr7).getValues().get(0)).getValuesByMember().size() == 0);
254
255         assertTrue(((JsonArray) attr7).getValues().get(1) instanceof JsonObject);
256         assertTrue(((JsonObject) ((JsonArray) attr7).getValues().get(1)).getValuesByMember().size() == 0);
257
258         // ======================
259
260         final JsonValue attr8 = getJsonObjectMemberValue(jsonRootObject, "attr8");
261         assertTrue(attr8 instanceof JsonArray);
262         assertTrue(((JsonArray) attr8).getValues().size() == 2);
263
264         assertTrue(((JsonArray) attr8).getValues().get(0) instanceof JsonObject);
265         assertTrue(((JsonObject) ((JsonArray) attr8).getValues().get(0)).getValuesByMember().size() == 2);
266
267         final JsonValue attr21 = getJsonObjectMemberValue((JsonObject) ((JsonArray) attr8).getValues().get(0), "attr21");
268         assertTrue(attr21 instanceof JsonPrimitive);
269         assertTrue(((JsonPrimitive) attr21).getValue() instanceof String);
270         assertTrue(((String) ((JsonPrimitive) attr21).getValue()).equals("hello"));
271
272         final JsonValue attr22 = getJsonObjectMemberValue((JsonObject) ((JsonArray) attr8).getValues().get(0), "attr22");
273         assertTrue(attr22 instanceof JsonArray);
274         assertTrue(((JsonArray) attr22).getValues().size() == 0);
275
276         assertTrue(((JsonArray) attr8).getValues().get(1) instanceof JsonObject);
277         assertTrue(((JsonObject) ((JsonArray) attr8).getValues().get(1)).getValuesByMember().size() == 0);
278
279         // ======================
280
281         final JsonValue attr9 = getJsonObjectMemberValue(jsonRootObject, "attr9");
282         assertTrue(attr9 instanceof JsonArray);
283         assertTrue(((JsonArray) attr9).getValues().size() == 2);
284         assertTrue(((JsonArray) attr9).getValues().get(0) instanceof JsonObject);
285         assertTrue(((JsonArray) attr9).getValues().get(1) instanceof JsonObject);
286         assertTrue(((JsonObject) ((JsonArray) attr9).getValues().get(0)).getValuesByMember().size() == 2);
287         assertTrue(((JsonObject) ((JsonArray) attr9).getValues().get(1)).getValuesByMember().size() == 0);
288
289         final JsonValue attr31 = getJsonObjectMemberValue((JsonObject) ((JsonArray) attr9).getValues().get(0), "attr31");
290         assertTrue(attr31 instanceof JsonPrimitive);
291         assertTrue(((JsonPrimitive) attr31).getValue() instanceof String);
292         assertTrue(((String) ((JsonPrimitive) attr31).getValue()).equals("hello"));
293
294         final JsonValue attr32 = getJsonObjectMemberValue((JsonObject) ((JsonArray) attr9).getValues().get(0), "attr32");
295         assertTrue(attr32 instanceof JsonArray);
296         assertTrue(((JsonArray) attr32).getValues().size() == 2);
297         assertTrue(((JsonArray) attr32).getValues().get(0) instanceof JsonObject);
298         assertTrue(((JsonArray) attr32).getValues().get(1) instanceof JsonObject);
299
300         final JsonValue attr33 = getJsonObjectMemberValue((JsonObject) ((JsonArray) attr32).getValues().get(1), "attr33");
301         assertTrue(attr33 instanceof JsonPrimitive);
302         assertTrue(((JsonPrimitive) attr33).getValue() instanceof Boolean);
303         assertTrue(((Boolean) ((JsonPrimitive) attr33).getValue()).booleanValue() == true);
304
305         final JsonValue attr34 = getJsonObjectMemberValue((JsonObject) ((JsonArray) attr32).getValues().get(1), "attr34");
306         assertTrue(attr34 instanceof JsonPrimitive);
307         assertTrue(((JsonPrimitive) attr34).getValue() instanceof Long);
308         assertTrue(((Long) ((JsonPrimitive) attr34).getValue()).longValue() == -99999999999L);
309     }
310
311     @Test
312     public void test_ok_json3() {
313
314         final Object jsonRoot = parseJsonFile("json-ok3.json");
315
316         assertNoFindings();
317
318         assertTrue(jsonRoot instanceof JsonObject);
319         final JsonObject jsonRootObject = (JsonObject) jsonRoot;
320
321         verifyObjectMemberStringValue(jsonRootObject, "attr1", "");
322         verifyObjectMemberStringValue(jsonRootObject, "attr2", " ");
323         verifyObjectMemberStringValue(jsonRootObject, "attr3", "\t");
324         verifyObjectMemberStringValue(jsonRootObject, "attr4", "\n");
325         verifyObjectMemberStringValue(jsonRootObject, "attr5", "\"");
326         verifyObjectMemberStringValue(jsonRootObject, "attr6", "\\");
327         verifyObjectMemberStringValue(jsonRootObject, "attr7", "/");
328         verifyObjectMemberStringValue(jsonRootObject, "attr8", "\b");
329         verifyObjectMemberStringValue(jsonRootObject, "attr9", "\f");
330         verifyObjectMemberStringValue(jsonRootObject, "attr10", "\r");
331
332         verifyObjectMemberStringValue(jsonRootObject, "attr21", " ");
333     }
334
335     @Test
336     public void test_ok_json4() {
337
338         final Object jsonRoot = parseJsonFile("json-ok4.json");
339
340         assertNoFindings();
341
342         assertTrue(jsonRoot instanceof JsonPrimitive);
343         assertTrue(((JsonPrimitive) jsonRoot).getValue() instanceof String);
344         assertTrue(((String) ((JsonPrimitive) jsonRoot).getValue()).equals("hello"));
345     }
346
347     @Test
348     public void test_ok_json5() {
349
350         final Object jsonRoot = parseJsonFile("json-ok5.json");
351
352         assertNoFindings();
353
354         assertTrue(jsonRoot instanceof JsonPrimitive);
355         assertTrue(((JsonPrimitive) jsonRoot).getValue() == null);
356     }
357
358     @Test
359     public void test_error_but_continue1() {
360
361         final Object jsonRoot = parseJsonFile("json-error-but-continue1.json");
362
363         assertHasFindingOfType(ParserFindingType.P015_INVALID_SYNTAX_IN_DOCUMENT.toString());
364
365         assertTrue(jsonRoot instanceof JsonObject);
366         final JsonObject jsonRootObject = (JsonObject) jsonRoot;
367
368         verifyObjectMemberStringValue(jsonRootObject, "attr1", "comma missing after this string");
369         verifyObjectMemberStringValue(jsonRootObject, "attr2", "comma after this string not needed");
370     }
371
372     @Test
373     public void test_error_but_continue2() {
374
375         final Object jsonRoot = parseJsonFile("json-error-but-continue2.json");
376
377         assertHasFindingOfType(ParserFindingType.P015_INVALID_SYNTAX_IN_DOCUMENT.toString());
378
379         assertTrue(jsonRoot instanceof JsonArray);
380         final JsonArray jsonRootArray = (JsonArray) jsonRoot;
381
382         verifyArrayMemberStringValue(jsonRootArray, 0, "comma missing after this string");
383         verifyArrayMemberStringValue(jsonRootArray, 1, "comma after this string not needed");
384     }
385
386     @Test
387     public void test_error1() {
388         parseJsonFile("json-error1.json");
389         assertHasFindingOfType(ParserFindingType.P015_INVALID_SYNTAX_IN_DOCUMENT.toString());
390         assertTrue(findingsManager.getAllFindings().iterator().next().getMessage().contains(
391                 "Expected a quoted member name"));
392     }
393
394     @Test
395     public void test_error2() {
396         parseJsonFile("json-error2.json");
397         assertHasFindingOfType(ParserFindingType.P015_INVALID_SYNTAX_IN_DOCUMENT.toString());
398         assertTrue(findingsManager.getAllFindings().iterator().next().getMessage().contains("Expected name separator"));
399     }
400
401     @Test
402     public void test_error3() {
403         parseJsonFile("json-error3.json");
404         assertHasFindingOfType(ParserFindingType.P015_INVALID_SYNTAX_IN_DOCUMENT.toString());
405         assertTrue(findingsManager.getAllFindings().iterator().next().getMessage().contains("Expected a value"));
406     }
407
408     @Test
409     public void test_error4() {
410         parseJsonFile("json-error4.json");
411         assertHasFindingOfType(ParserFindingType.P015_INVALID_SYNTAX_IN_DOCUMENT.toString());
412         assertTrue(findingsManager.getAllFindings().iterator().next().getMessage().contains("Expected a value"));
413     }
414
415     @Test
416     public void test_error5() {
417         parseJsonFile("json-error5.json");
418         assertHasFindingOfType(ParserFindingType.P015_INVALID_SYNTAX_IN_DOCUMENT.toString());
419         assertTrue(findingsManager.getAllFindings().iterator().next().getMessage().contains("does not translate"));
420     }
421
422     @Test
423     public void test_error6() {
424         parseJsonFile("json-error6.json");
425         assertHasFindingOfType(ParserFindingType.P015_INVALID_SYNTAX_IN_DOCUMENT.toString());
426         assertTrue(findingsManager.getAllFindings().iterator().next().getMessage().contains(
427                 "Missing terminating double-quote character"));
428     }
429
430     @Test
431     public void test_error7() {
432         parseJsonFile("json-error7.json");
433         assertHasFindingOfType(ParserFindingType.P015_INVALID_SYNTAX_IN_DOCUMENT.toString());
434         assertTrue(findingsManager.getAllFindings().iterator().next().getMessage().contains("Missing escaped character"));
435     }
436
437     @Test
438     public void test_error8() {
439         parseJsonFile("json-error8.json");
440         assertHasFindingOfType(ParserFindingType.P011_INVALID_CHARACTER_ESCAPING_IN_QUOTED_TEXT.toString());
441         assertTrue(findingsManager.getAllFindings().iterator().next().getMessage().contains(
442                 "Unrecognized escaped character"));
443     }
444
445     @Test
446     public void test_error9() {
447         parseJsonFile("json-error9.json");
448         assertHasFindingOfType(ParserFindingType.P015_INVALID_SYNTAX_IN_DOCUMENT.toString());
449         assertTrue(findingsManager.getAllFindings().iterator().next().getMessage().contains(
450                 "Unicode character not correctly escaped"));
451     }
452
453     @Test
454     public void test_error10() {
455         parseJsonFile("json-error10.json");
456         assertHasFindingOfType(ParserFindingType.P015_INVALID_SYNTAX_IN_DOCUMENT.toString());
457         assertTrue(findingsManager.getAllFindings().iterator().next().getMessage().contains(
458                 "Unicode character not correctly escaped"));
459     }
460
461     private void verifyObjectMemberStringValue(final JsonObject jsonObject, final String memberName,
462             final String expected) {
463         final JsonValue attr1 = getJsonObjectMemberValue(jsonObject, memberName);
464         assertTrue(attr1 instanceof JsonPrimitive);
465         assertTrue(((JsonPrimitive) attr1).getValue() instanceof String);
466         assertEquals(expected, (String) ((JsonPrimitive) attr1).getValue());
467     }
468
469     private void verifyArrayMemberStringValue(final JsonArray jsonArray, final int index, final String expected) {
470         final JsonValue attr1 = jsonArray.getValues().get(index);
471         assertTrue(attr1 instanceof JsonPrimitive);
472         assertTrue(((JsonPrimitive) attr1).getValue() instanceof String);
473         assertEquals(expected, (String) ((JsonPrimitive) attr1).getValue());
474     }
475
476     private Object parseJsonFile(final String fileName) {
477
478         final File jsonFile = new File(DIR + fileName);
479         final FileBasedYangInput fileBasedYangInput = new FileBasedYangInput(jsonFile);
480         final YangData yangInstanceDataInput = new YangData(fileBasedYangInput);
481
482         try {
483             return new JsonParser(context, yangInstanceDataInput, fileBasedYangInput.getInputStream()).parse();
484         } catch (IOException e) {
485             e.printStackTrace();
486         }
487
488         return null;
489     }
490
491     @SuppressWarnings("unlikely-arg-type")
492     @Test
493     public void test_json_object_member_handling() {
494
495         final JsonObject jsonObject = new JsonObject();
496
497         jsonObject.putMember("member1", JsonPrimitive.valueOf(Boolean.TRUE));
498         jsonObject.putMember("member2", JsonPrimitive.valueOf(Boolean.FALSE));
499         jsonObject.putMember(new JsonObjectMemberName("member3"), JsonPrimitive.valueOf(null));
500
501         assertTrue(jsonObject.getValues().get("member1").equals(JsonPrimitive.TRUE));
502         assertTrue(jsonObject.getValues().get("member2").equals(JsonPrimitive.FALSE));
503         assertTrue(jsonObject.getValues().get("member3").equals(JsonPrimitive.NULL));
504
505         assertFalse(jsonObject.getValues().get("member1").equals(null));
506         assertFalse(jsonObject.getValues().get("member2").equals(null));
507         assertTrue(jsonObject.getValues().get("member3").equals(null));
508
509         assertTrue(jsonObject.getValuesByMember().get(new JsonObjectMemberName("member1")).equals(JsonPrimitive.TRUE));
510         assertTrue(jsonObject.getValuesByMember().get(new JsonObjectMemberName("member2")).equals(JsonPrimitive.FALSE));
511         assertTrue(jsonObject.getValuesByMember().get(new JsonObjectMemberName("member3")).equals(JsonPrimitive.NULL));
512
513         final JsonObjectMemberName jsonObjectMemberName99 = new JsonObjectMemberName("member99");
514
515         assertTrue(jsonObjectMemberName99.equals(jsonObjectMemberName99));
516         assertTrue(jsonObjectMemberName99.equals(new JsonObjectMemberName("member99")));
517         assertTrue(jsonObjectMemberName99.equals("member99"));
518
519         assertFalse(jsonObjectMemberName99.equals(null));
520         assertFalse(jsonObjectMemberName99.equals(new JsonObjectMemberName("memberXXXXXX")));
521         assertFalse(jsonObjectMemberName99.equals("memberXXXXX"));
522
523         final JsonPrimitive booleanTrue = JsonPrimitive.valueOf(Boolean.TRUE);
524
525         assertTrue(booleanTrue.equals(JsonPrimitive.valueOf(Boolean.TRUE)));
526         assertTrue(booleanTrue.equals(Boolean.TRUE));
527         assertTrue(booleanTrue.equals(true));
528         assertFalse(booleanTrue.equals(null));
529
530         final JsonPrimitive nullValue = JsonPrimitive.valueOf(null);
531
532         assertTrue(nullValue.equals(JsonPrimitive.valueOf(null)));
533         assertTrue(nullValue.equals(null));
534         assertFalse(nullValue.equals(Boolean.TRUE));
535     }
536
537 }