2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2024 Ericsson
4 * Modifications Copyright (C) 2024-2025 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
10 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 * SPDX-License-Identifier: Apache-2.0
19 * ============LICENSE_END=========================================================
21 package org.oran.smo.yangtools.parser.data.test;
23 import static org.junit.Assert.assertTrue;
26 import java.io.InputStream;
27 import java.util.Arrays;
28 import java.util.Collections;
29 import java.util.HashMap;
30 import java.util.List;
33 import java.util.stream.Collectors;
35 import org.junit.Test;
37 import org.oran.smo.yangtools.parser.data.YangData;
38 import org.oran.smo.yangtools.parser.data.instance.ContainerInstance;
39 import org.oran.smo.yangtools.parser.data.instance.DataTreeBuilderPredicate;
40 import org.oran.smo.yangtools.parser.data.instance.LeafInstance;
41 import org.oran.smo.yangtools.parser.data.instance.LeafListInstance;
42 import org.oran.smo.yangtools.parser.data.instance.ListInstance;
43 import org.oran.smo.yangtools.parser.data.instance.RootInstance;
44 import org.oran.smo.yangtools.parser.findings.ParserFindingType;
45 import org.oran.smo.yangtools.parser.input.YangInput;
46 import org.oran.smo.yangtools.parser.input.YangInputResolver;
47 import org.oran.smo.yangtools.parser.testutils.YangTestCommon;
49 public class ComplexInstanceDataTest extends YangTestCommon {
51 private static final String MODULE1 = "src/test/resources/data/instance-data/module1.yang";
52 private static final String MODULE2 = "src/test/resources/data/instance-data/module2.yang";
54 private static final String DATA1_XML = "src/test/resources/data/instance-data/data1.xml";
55 private static final String DATA2_XML = "src/test/resources/data/instance-data/data2.xml";
56 private static final String DATA1_JSON = "src/test/resources/data/instance-data/data1.json";
57 private static final String DATA2_JSON = "src/test/resources/data/instance-data/data2.json";
59 private static final String DATA3 = "src/test/resources/data/instance-data/data3.xml";
60 private static final String DATA4 = "src/test/resources/data/instance-data/data4.xml";
62 private static final String DATA5 = "src/test/resources/data/instance-data/data5.xml";
63 private static final String DATA6 = "src/test/resources/data/instance-data/data6.xml";
65 private static final String ERROR_DATA7 = "src/test/resources/data/instance-data/error-data7.xml";
66 private static final String ERROR_DATA8 = "src/test/resources/data/instance-data/error-data8.xml";
67 private static final String ERROR_DATA9 = "src/test/resources/data/instance-data/error-data9.xml";
68 private static final String ERROR_DATA10 = "src/test/resources/data/instance-data/error-data10.json";
70 private static final String NS1 = "test:module1";
71 private static final String NS2 = "test:module2";
74 public void test_module1_data1_data2_xml() {
76 parseAbsoluteImplementsYangModels(Arrays.asList(MODULE1));
77 parseAbsoluteYangData(Arrays.asList(DATA1_XML, DATA2_XML));
81 final RootInstance combinedInstanceDataRoot = yangDeviceModel.getCombinedInstanceDataRoot();
83 // -------------- Simple stuff ----------------
85 final ContainerInstance cont1data = getContainerInstance(combinedInstanceDataRoot, NS1, "cont1");
86 assertTrue(cont1data != null);
89 assertTrue(cont1data.getDataDomNode().getNamespace().equals("test:module1"));
90 assertTrue(cont1data.getDataDomNode().getModuleName().equals("module1"));
92 final LeafInstance leaf11data = getLeafInstance(cont1data, NS1, "leaf11");
93 assertTrue(leaf11data != null);
94 assertTrue(leaf11data.getValue().equals("42"));
96 final LeafInstance leaf12data = getLeafInstance(cont1data, NS1, "leaf12");
97 assertTrue(leaf12data != null);
98 assertTrue(leaf12data.getValue().equals("58"));
100 final LeafInstance leaf13data = getLeafInstance(cont1data, NS1, "leaf13");
101 assertTrue(leaf13data != null);
102 assertTrue(leaf13data.getValue().equals("Hello!"));
104 final LeafInstance leaf14data = getLeafInstance(cont1data, NS1, "leaf14");
105 assertTrue(leaf14data != null);
106 assertTrue(leaf14data.getValue().equals(""));
108 // -------------- A few NPs and defaults ----------------
110 final ListInstance list2data4 = getListInstanceData(combinedInstanceDataRoot, NS1, "list2", createKeyValue("leaf21",
112 assertTrue(list2data4 != null);
114 LeafInstance leaf21data = getLeafInstance(list2data4, NS1, "leaf21");
115 assertTrue(leaf21data != null);
116 assertTrue(leaf21data.getValue().equals("4"));
118 ContainerInstance cont22data = getContainerInstance(list2data4, NS1, "cont22");
119 assertTrue(cont22data != null);
121 LeafInstance leaf23data = getLeafInstance(cont22data, NS1, "leaf23");
122 assertTrue(leaf23data != null);
123 assertTrue(leaf23data.getValue().equals("One"));
125 LeafInstance leaf24data = getLeafInstance(cont22data, NS1, "leaf24");
126 assertTrue(leaf24data != null);
127 assertTrue(leaf24data.getValue().equals("Two"));
129 LeafInstance leaf25data = getLeafInstance(list2data4, NS1, "leaf25");
130 assertTrue(leaf25data != null);
131 assertTrue(leaf25data.getValue().equals("Three"));
133 List<LeafListInstance> leaflist26data = getLeafListInstances(list2data4, NS1, "leaflist26");
134 assertTrue(leaflist26data != null);
135 assertTrue(leaflist26data.size() == 1);
136 assertTrue(leaflist26data.get(0).getValue().equals("Six"));
140 final ListInstance list2data5 = getListInstanceData(combinedInstanceDataRoot, NS1, "list2", createKeyValue("leaf21",
142 assertTrue(list2data5 != null);
144 leaf21data = getLeafInstance(list2data5, NS1, "leaf21");
145 assertTrue(leaf21data != null);
146 assertTrue(leaf21data.getValue().equals("5"));
148 cont22data = getContainerInstance(list2data5, NS1, "cont22");
149 assertTrue(cont22data != null);
151 leaf23data = getLeafInstance(cont22data, NS1, "leaf23");
152 assertTrue(leaf23data != null);
153 assertTrue(leaf23data.getValue().equals("One"));
155 leaf24data = getLeafInstance(cont22data, NS1, "leaf24");
156 assertTrue(leaf24data == null);
158 leaf25data = getLeafInstance(list2data5, NS1, "leaf25");
159 assertTrue(leaf25data == null);
161 leaflist26data = getLeafListInstances(list2data5, NS1, "leaflist26");
162 assertTrue(leaflist26data != null);
163 assertTrue(leaflist26data.size() == 0);
167 final ListInstance list2data6 = getListInstanceData(combinedInstanceDataRoot, NS1, "list2", createKeyValue("leaf21",
169 assertTrue(list2data6 != null);
171 leaf21data = getLeafInstance(list2data6, NS1, "leaf21");
172 assertTrue(leaf21data != null);
173 assertTrue(leaf21data.getValue().equals("6"));
175 cont22data = getContainerInstance(list2data6, NS1, "cont22");
176 assertTrue(cont22data == null);
178 leaf25data = getLeafInstance(list2data6, NS1, "leaf25");
179 assertTrue(leaf25data == null);
181 leaflist26data = getLeafListInstances(list2data6, NS1, "leaflist26");
182 assertTrue(leaflist26data != null);
183 assertTrue(leaflist26data.size() == 0);
185 // --------------------- CDATA ---------------------------
187 final ContainerInstance cont8data = getContainerInstance(combinedInstanceDataRoot, NS1, "cont8");
189 final LeafInstance leaf81data = getLeafInstance(cont8data, NS1, "leaf81");
190 assertTrue(leaf81data != null);
191 assertTrue(leaf81data.getValue().equals("should ignore whitespaces"));
193 final LeafInstance leaf82data = getLeafInstance(cont8data, NS1, "leaf82");
194 assertTrue(leaf82data != null);
195 assertTrue(leaf82data.getValue().equals("should also ignore whitespaces"));
197 final LeafInstance leaf83data = getLeafInstance(cont8data, NS1, "leaf83");
198 assertTrue(leaf83data != null);
199 assertTrue(leaf83data.getValue().equals(" should be 2 whitespaces either side "));
201 final LeafInstance leaf84data = getLeafInstance(cont8data, NS1, "leaf84");
202 assertTrue(leaf84data != null);
203 assertTrue(leaf84data.getValue().equals("Before should be 2 whitespaces either side After"));
205 final LeafInstance leaf85data = getLeafInstance(cont8data, NS1, "leaf85");
206 assertTrue(leaf85data != null);
207 assertTrue(leaf85data.getValue().equals(""));
209 final LeafInstance leaf86data = getLeafInstance(cont8data, NS1, "leaf86");
210 assertTrue(leaf86data != null);
211 assertTrue(leaf86data.getValue().equals("blurb more blurb"));
215 public void test_module1_data1_data2_json() {
217 parseAbsoluteImplementsYangModels(Arrays.asList(MODULE1));
218 parseAbsoluteYangData(Arrays.asList(DATA1_JSON, DATA2_JSON));
222 final RootInstance combinedInstanceDataRoot = yangDeviceModel.getCombinedInstanceDataRoot();
224 // -------------- Simple stuff ----------------
226 final ContainerInstance cont1data = getContainerInstance(combinedInstanceDataRoot, NS1, "cont1");
227 assertTrue(cont1data != null);
230 assertTrue(cont1data.getDataDomNode().getNamespace().equals("test:module1"));
231 assertTrue(cont1data.getDataDomNode().getModuleName().equals("module1"));
233 final LeafInstance leaf11data = getLeafInstance(cont1data, NS1, "leaf11");
234 assertTrue(leaf11data != null);
235 assertTrue(leaf11data.getValue().equals(new Long(42)));
237 final LeafInstance leaf12data = getLeafInstance(cont1data, NS1, "leaf12");
238 assertTrue(leaf12data != null);
239 assertTrue(leaf12data.getDataDomNode().getNamespace().equals("test:module1"));
240 assertTrue(leaf12data.getDataDomNode().getModuleName().equals("module1"));
241 assertTrue(leaf12data.getValue().equals(new Long(58)));
243 final LeafInstance leaf13data = getLeafInstance(cont1data, NS1, "leaf13");
244 assertTrue(leaf13data != null);
245 assertTrue(leaf13data.getValue().equals("Hello!"));
247 final LeafInstance leaf14data = getLeafInstance(cont1data, NS1, "leaf14");
248 assertTrue(leaf14data != null);
249 assertTrue(leaf14data.getValue().equals(""));
251 // -------------- A few NPs and defaults ----------------
253 final ListInstance list2data4 = getListInstanceData(combinedInstanceDataRoot, NS1, "list2", createKeyValue("leaf21",
255 assertTrue(list2data4 != null);
257 LeafInstance leaf21data = getLeafInstance(list2data4, NS1, "leaf21");
258 assertTrue(leaf21data != null);
259 assertTrue(leaf21data.getDataDomNode().getNamespace().equals("test:module1"));
260 assertTrue(leaf21data.getDataDomNode().getModuleName().equals("module1"));
261 assertTrue(leaf21data.getValue().equals(new Long(4)));
263 ContainerInstance cont22data = getContainerInstance(list2data4, NS1, "cont22");
264 assertTrue(cont22data != null);
266 LeafInstance leaf23data = getLeafInstance(cont22data, NS1, "leaf23");
267 assertTrue(leaf23data != null);
268 assertTrue(leaf23data.getValue().equals("One"));
270 LeafInstance leaf24data = getLeafInstance(cont22data, NS1, "leaf24");
271 assertTrue(leaf24data != null);
272 assertTrue(leaf24data.getValue().equals("Two"));
274 LeafInstance leaf25data = getLeafInstance(list2data4, NS1, "leaf25");
275 assertTrue(leaf25data != null);
276 assertTrue(leaf25data.getValue().equals("Three"));
278 List<LeafListInstance> leaflist26data = getLeafListInstances(list2data4, NS1, "leaflist26");
279 assertTrue(leaflist26data != null);
280 assertTrue(leaflist26data.size() == 1);
281 assertTrue(leaflist26data.get(0).getValue().equals("Six"));
285 final ListInstance list2data5 = getListInstanceData(combinedInstanceDataRoot, NS1, "list2", createKeyValue("leaf21",
287 assertTrue(list2data5 != null);
289 leaf21data = getLeafInstance(list2data5, NS1, "leaf21");
290 assertTrue(leaf21data != null);
291 assertTrue(leaf21data.getValue().equals(new Long(5)));
293 cont22data = getContainerInstance(list2data5, NS1, "cont22");
294 assertTrue(cont22data != null);
296 leaf23data = getLeafInstance(cont22data, NS1, "leaf23");
297 assertTrue(leaf23data != null);
298 assertTrue(leaf23data.getValue().equals("One"));
300 leaf24data = getLeafInstance(cont22data, NS1, "leaf24");
301 assertTrue(leaf24data == null);
303 leaf25data = getLeafInstance(list2data5, NS1, "leaf25");
304 assertTrue(leaf25data == null);
306 leaflist26data = getLeafListInstances(list2data5, NS1, "leaflist26");
307 assertTrue(leaflist26data != null);
308 assertTrue(leaflist26data.size() == 0);
312 final ListInstance list2data6 = getListInstanceData(combinedInstanceDataRoot, NS1, "list2", createKeyValue("leaf21",
314 assertTrue(list2data6 != null);
316 leaf21data = getLeafInstance(list2data6, NS1, "leaf21");
317 assertTrue(leaf21data != null);
318 assertTrue(leaf21data.getValue().equals(new Long(6)));
320 cont22data = getContainerInstance(list2data6, NS1, "cont22");
321 assertTrue(cont22data == null);
323 leaf25data = getLeafInstance(list2data6, NS1, "leaf25");
324 assertTrue(leaf25data == null);
326 leaflist26data = getLeafListInstances(list2data6, NS1, "leaflist26");
327 assertTrue(leaflist26data != null);
328 assertTrue(leaflist26data.size() == 0);
330 // --------------------- Unions ---------------------------
332 final ContainerInstance cont5data = getContainerInstance(combinedInstanceDataRoot, NS1, "cont5");
334 final LeafInstance leaf51data = getLeafInstance(cont5data, NS1, "leaf51");
335 assertTrue(leaf51data != null);
336 assertTrue(leaf51data.getValue().equals(""));
338 // --------------------- CDATA ---------------------------
340 final ContainerInstance cont8data = getContainerInstance(combinedInstanceDataRoot, NS1, "cont8");
342 final LeafInstance leaf81data = getLeafInstance(cont8data, NS1, "leaf81");
343 assertTrue(leaf81data != null);
344 assertTrue(leaf81data.getValue().equals("should ignore whitespaces"));
346 final LeafInstance leaf82data = getLeafInstance(cont8data, NS1, "leaf82");
347 assertTrue(leaf82data != null);
348 assertTrue(leaf82data.getValue().equals("should also ignore whitespaces"));
350 final LeafInstance leaf83data = getLeafInstance(cont8data, NS1, "leaf83");
351 assertTrue(leaf83data != null);
352 assertTrue(leaf83data.getValue().equals(" should be 2 whitespaces either side "));
356 public void test_module1_module2_data3_data4() {
358 parseAbsoluteImplementsYangModels(Arrays.asList(MODULE1, MODULE2));
359 parseAbsoluteYangData(Arrays.asList(DATA3, DATA4));
363 final RootInstance combinedInstanceDataRoot = yangDeviceModel.getCombinedInstanceDataRoot();
365 // -------------- A few NPs and defaults ----------------
367 final ListInstance list2data35 = getListInstanceData(combinedInstanceDataRoot, NS1, "list2", createKeyValue(
369 assertTrue(list2data35 != null);
371 LeafInstance leaf21data = getLeafInstance(list2data35, NS1, "leaf21");
372 assertTrue(leaf21data != null);
373 assertTrue(leaf21data.getValue().equals("35"));
375 ContainerInstance cont22data = getContainerInstance(list2data35, NS1, "cont22");
376 assertTrue(cont22data != null);
378 LeafInstance leaf23data = getLeafInstance(cont22data, NS1, "leaf23");
379 assertTrue(leaf23data != null);
380 assertTrue(leaf23data.getValue().equals("hello"));
382 LeafInstance leaf24data = getLeafInstance(cont22data, NS1, "leaf24");
383 assertTrue(leaf24data != null);
384 assertTrue(leaf24data.getValue().equals("world"));
386 LeafInstance leaf25data = getLeafInstance(list2data35, NS1, "leaf25");
387 assertTrue(leaf25data != null);
388 assertTrue(leaf25data.getValue().equals("sure"));
390 List<LeafListInstance> leaflist26data = getLeafListInstances(list2data35, NS1, "leaflist26");
391 assertTrue(leaflist26data != null);
392 assertTrue(leaflist26data.size() == 2);
393 assertTrue(leaflist26data.get(0).getValue().equals("four"));
394 assertTrue(leaflist26data.get(1).getValue().equals("five"));
398 final ListInstance list2data48 = getListInstanceData(combinedInstanceDataRoot, NS1, "list2", createKeyValue(
400 assertTrue(list2data48 != null);
402 leaf21data = getLeafInstance(list2data48, NS1, "leaf21");
403 assertTrue(leaf21data != null);
404 assertTrue(leaf21data.getValue().equals("48"));
406 cont22data = getContainerInstance(list2data48, NS1, "cont22");
407 assertTrue(cont22data == null);
409 leaf25data = getLeafInstance(list2data48, NS1, "leaf25");
410 assertTrue(leaf25data == null);
412 leaflist26data = getLeafListInstances(list2data48, NS1, "leaflist26");
413 assertTrue(leaflist26data != null);
414 assertTrue(leaflist26data.size() == 0);
416 // -------------- Some choice handling ----------------
418 final ContainerInstance cont3data = getContainerInstance(combinedInstanceDataRoot, NS1, "cont3");
419 assertTrue(cont3data != null);
421 final LeafInstance leaf33data = getLeafInstance(cont3data, NS1, "leaf33");
422 assertTrue(leaf33data == null);
424 final LeafInstance leaf34data = getLeafInstance(cont3data, NS1, "leaf34");
425 assertTrue(leaf34data == null);
427 final ContainerInstance cont35data = getContainerInstance(cont3data, NS1, "cont35");
428 assertTrue(cont35data == null);
430 final LeafInstance leaf38data = getLeafInstance(cont3data, NS1, "leaf38");
431 assertTrue(leaf38data == null);
433 final ContainerInstance cont39data = getContainerInstance(cont3data, NS1, "cont39");
434 assertTrue(cont39data != null);
436 // -------------- for augmentation ----------------
438 final ContainerInstance cont7data = getContainerInstance(combinedInstanceDataRoot, NS1, "cont7");
439 assertTrue(cont7data != null);
441 final LeafInstance leaf71data = getLeafInstance(cont7data, NS2, "leaf71");
442 assertTrue(leaf71data == null);
444 final LeafInstance leaf72data = getLeafInstance(cont7data, NS2, "leaf72");
445 assertTrue(leaf72data != null);
446 assertTrue(leaf72data.getValue().equals("-90"));
448 assertTrue(leaf72data.getDataDomNode().getNamespace().equals("test:module2"));
449 assertTrue(leaf72data.getDataDomNode().getModuleName().equals("module2"));
453 public void test_module1_data5_data6() {
455 parseAbsoluteImplementsYangModels(Arrays.asList(MODULE1));
456 parseAbsoluteYangData(Arrays.asList(DATA5, DATA6));
460 final RootInstance combinedInstanceDataRoot = yangDeviceModel.getCombinedInstanceDataRoot();
462 // -------------- first list instance ----------------
464 final ListInstance list2data501 = getListInstanceData(combinedInstanceDataRoot, NS1, "list2", createKeyValue(
466 assertTrue(list2data501 != null);
468 LeafInstance leaf21data = getLeafInstance(list2data501, NS1, "leaf21");
469 assertTrue(leaf21data != null);
470 assertTrue(leaf21data.getValue().equals("501"));
472 ContainerInstance cont22data = getContainerInstance(list2data501, NS1, "cont22");
473 assertTrue(cont22data != null);
475 LeafInstance leaf23data = getLeafInstance(cont22data, NS1, "leaf23");
476 assertTrue(leaf23data != null);
477 assertTrue(leaf23data.getValue().equals("hello"));
479 LeafInstance leaf24data = getLeafInstance(cont22data, NS1, "leaf24");
480 assertTrue(leaf24data != null);
481 assertTrue(leaf24data.getValue().equals("hi"));
483 LeafInstance leaf25data = getLeafInstance(list2data501, NS1, "leaf25");
484 assertTrue(leaf25data != null);
485 assertTrue(leaf25data.getValue().equals("world"));
487 List<Object> leaflist26data = getLeafListValues(list2data501, NS1, "leaflist26");
488 assertTrue(leaflist26data != null);
489 assertTrue(leaflist26data.size() == 0);
491 // -------------- second list instance ----------------
493 final ListInstance list2data502 = getListInstanceData(combinedInstanceDataRoot, NS1, "list2", createKeyValue(
495 assertTrue(list2data501 != null);
497 leaf21data = getLeafInstance(list2data502, NS1, "leaf21");
498 assertTrue(leaf21data != null);
499 assertTrue(leaf21data.getValue().equals("502"));
501 cont22data = getContainerInstance(list2data502, NS1, "cont22");
502 assertTrue(cont22data == null);
504 leaf25data = getLeafInstance(list2data502, NS1, "leaf25");
505 assertTrue(leaf25data == null);
507 leaflist26data = getLeafListValues(list2data502, NS1, "leaflist26");
508 assertTrue(leaflist26data != null);
509 assertTrue(leaflist26data.size() == 4);
510 assertTrue(leaflist26data.contains("red"));
511 assertTrue(leaflist26data.contains("yellow"));
512 assertTrue(leaflist26data.contains("green"));
513 assertTrue(leaflist26data.contains("blue"));
517 public void test_module1_data5_data6_datainput() {
519 parseAbsoluteImplementsYangModels(Arrays.asList(MODULE1));
520 parseAbsoluteYangData(Arrays.asList(DATA5, DATA6));
524 final YangData yangDataInput1 = yangDeviceModel.getYangInstanceDataInputs().get(0);
525 assertTrue(yangDataInput1.getFindings().isEmpty());
526 yangDataInput1.toString();
528 final YangData yangDataInput2 = yangDeviceModel.getYangInstanceDataInputs().get(1);
529 assertTrue(yangDataInput2.getFindings().isEmpty());
533 public void test_module1_errordata7() {
535 parseAbsoluteImplementsYangModels(Arrays.asList(MODULE1));
536 parseAbsoluteYangData(Arrays.asList(ERROR_DATA7));
538 assertHasFindingOfType(ParserFindingType.P072_MISSING_KEY_VALUE.toString());
539 assertHasFindingOfType(ParserFindingType.P075_CORRESPONDING_SCHEMA_NODE_NOT_FOUND.toString());
540 assertHasFindingOfType(ParserFindingType.P076_DUPLICATE_INSTANCE_DATA.toString());
544 public void test_module1_errordata7_datainput() {
546 parseAbsoluteImplementsYangModels(Arrays.asList(MODULE1));
547 parseAbsoluteYangData(Arrays.asList(ERROR_DATA7));
549 final YangData yangDataInput = yangDeviceModel.getYangInstanceDataInputs().get(0);
550 final Set<String> findingTypes = yangDataInput.getFindings().stream().map(finding -> finding.getFindingType())
551 .collect(Collectors.toSet());
553 assertTrue(findingTypes.contains(ParserFindingType.P072_MISSING_KEY_VALUE.toString()));
554 assertTrue(findingTypes.contains(ParserFindingType.P075_CORRESPONDING_SCHEMA_NODE_NOT_FOUND.toString()));
555 assertTrue(findingTypes.contains(ParserFindingType.P076_DUPLICATE_INSTANCE_DATA.toString()));
559 public void test_module1_provoke_exception() {
561 parseAbsoluteImplementsYangModels(Arrays.asList(MODULE1));
563 final YangInput yangInput = new YangInput() {
565 public String getName() {
570 public File getFile() {
575 public InputStream getInputStream() {
580 public String getMediaType() {
585 final YangInputResolver yangInputResolver = new YangInputResolver() {
587 public Set<YangInput> getResolvedYangInput() {
588 return Collections.singleton(yangInput);
592 yangDeviceModel.parseYangData(context, yangInputResolver, new DataTreeBuilderPredicate());
594 assertHasFindingOfType(ParserFindingType.P000_UNSPECIFIED_ERROR.toString());
598 public void test_module1_errordata8_errordata9() {
600 parseAbsoluteImplementsYangModels(Arrays.asList(MODULE1));
601 parseAbsoluteYangData(Arrays.asList(ERROR_DATA8, ERROR_DATA9));
603 assertHasFindingOfType(ParserFindingType.P073_LEAF_VALUE_ALREADY_SET.toString());
604 assertHasFindingOfType(ParserFindingType.P080_NULL_VALUE.toString());
606 final RootInstance combinedInstanceDataRoot = yangDeviceModel.getCombinedInstanceDataRoot();
608 final ListInstance list2data1 = getListInstanceData(combinedInstanceDataRoot, NS1, "list2", createKeyValue("leaf21",
610 assertTrue(list2data1 != null);
612 LeafInstance leaf25data = getLeafInstance(list2data1, NS1, "leaf25");
613 assertTrue(leaf25data == null);
615 final ListInstance list2data2 = getListInstanceData(combinedInstanceDataRoot, NS1, "list2", createKeyValue("leaf21",
617 assertTrue(list2data2 != null);
619 leaf25data = getLeafInstance(list2data2, NS1, "leaf25");
620 assertTrue(leaf25data != null);
621 assertTrue(leaf25data.getValue().equals("abc 123"));
623 final ListInstance list2data3 = getListInstanceData(combinedInstanceDataRoot, NS1, "list2", createKeyValue("leaf21",
625 assertTrue(list2data3 != null);
627 leaf25data = getLeafInstance(list2data3, NS1, "leaf25");
628 assertTrue(leaf25data != null);
629 assertTrue(leaf25data.getValue().equals("abc 456"));
631 final ListInstance list2data4 = getListInstanceData(combinedInstanceDataRoot, NS1, "list2", createKeyValue("leaf21",
633 assertTrue(list2data4 != null);
635 leaf25data = getLeafInstance(list2data4, NS1, "leaf25");
636 assertTrue(leaf25data != null);
637 assertTrue(leaf25data.getValue().equals("abc 123"));
639 final ListInstance list2data5 = getListInstanceData(combinedInstanceDataRoot, NS1, "list2", createKeyValue("leaf21",
641 assertTrue(list2data5 != null);
643 leaf25data = getLeafInstance(list2data5, NS1, "leaf25");
644 assertTrue(leaf25data != null);
645 assertTrue(leaf25data.getValue().equals("abc 123"));
647 // ===================================
649 final ListInstance list2data51 = getListInstanceData(combinedInstanceDataRoot, NS1, "list2", createKeyValue(
651 assertTrue(list2data51 != null);
653 List<LeafListInstance> leaflist26data = getLeafListInstances(list2data51, NS1, "leaflist26");
654 assertTrue(leaflist26data != null);
655 assertTrue(leaflist26data.size() == 2);
656 assertTrue(leaflist26data.get(0).getValue().equals("abc"));
657 assertTrue(leaflist26data.get(1).getValue().equals("def"));
659 final ListInstance list2data52 = getListInstanceData(combinedInstanceDataRoot, NS1, "list2", createKeyValue(
661 assertTrue(list2data52 != null);
663 leaflist26data = getLeafListInstances(list2data52, NS1, "leaflist26");
664 assertTrue(leaflist26data != null);
665 assertTrue(leaflist26data.size() == 2);
666 assertTrue(leaflist26data.get(0).getValue().equals("abc"));
667 assertTrue(leaflist26data.get(1).getValue().equals("def"));
669 final ListInstance list2data53 = getListInstanceData(combinedInstanceDataRoot, NS1, "list2", createKeyValue(
671 assertTrue(list2data53 != null);
673 leaflist26data = getLeafListInstances(list2data53, NS1, "leaflist26");
674 assertTrue(leaflist26data != null);
675 assertTrue(leaflist26data.size() == 2);
676 assertTrue(leaflist26data.get(0).getValue().equals("abc"));
677 assertTrue(leaflist26data.get(1).getValue().equals("def"));
681 public void test_module1_errordata10_json() {
683 parseAbsoluteImplementsYangModels(Arrays.asList(MODULE1));
684 parseAbsoluteYangData(Arrays.asList(ERROR_DATA10));
686 assertHasFindingOfType(ParserFindingType.P080_NULL_VALUE.toString());
689 private static Map<String, String> createKeyValue(final String key, final String value) {
690 final Map<String, String> map = new HashMap<>();