Deprecate simple DataTreeFactory.create()
[yangtools.git] / parser / yang-parser-rfc7950 / src / test / java / org / opendaylight / yangtools / yang / stmt / OrderingTest.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.yangtools.yang.stmt;
9
10 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
11 import static org.junit.jupiter.api.Assertions.assertEquals;
12 import static org.junit.jupiter.api.Assertions.assertNotNull;
13
14 import org.junit.jupiter.api.Test;
15 import org.opendaylight.yangtools.yang.common.QName;
16 import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode;
17 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
18 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
19 import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
20 import org.opendaylight.yangtools.yang.model.api.Module;
21
22 class OrderingTest extends AbstractModelTest {
23     @Test
24     void testOrderingTypedef() {
25         final var typedefs = BAR.getTypeDefinitions();
26         final String[] expectedOrder = { "int32-ext1", "int32-ext2", "string-ext1", "string-ext2", "string-ext3",
27             "string-ext4", "multiple-pattern-string", "my-decimal-type", "my-union", "my-union-ext", "nested-union2"
28         };
29         final String[] actualOrder = new String[typedefs.size()];
30
31         int offset = 0;
32         for (var type : typedefs) {
33             actualOrder[offset] = type.getQName().getLocalName();
34             offset++;
35         }
36         assertArrayEquals(expectedOrder, actualOrder);
37     }
38
39     @Test
40     void testOrderingChildNodes() {
41         AugmentationSchemaNode augment1 = null;
42         for (final AugmentationSchemaNode as : FOO.getAugmentations()) {
43             if (as.getChildNodes().size() == 5) {
44                 augment1 = as;
45                 break;
46             }
47         }
48         assertNotNull(augment1);
49
50         final String[] expectedOrder = { "ds0ChannelNumber", "interface-id", "my-type", "schemas", "odl" };
51         final String[] actualOrder = new String[expectedOrder.length];
52
53         int offset = 0;
54         for (final DataSchemaNode augmentChild : augment1.getChildNodes()) {
55             actualOrder[offset] = augmentChild.getQName().getLocalName();
56             offset++;
57         }
58
59         assertArrayEquals(expectedOrder, actualOrder);
60     }
61
62     @Test
63     void testOrderingNestedChildNodes1() {
64         final var childNodes = FOO.getChildNodes();
65         final String[] expectedOrder = { "int32-leaf", "string-leaf", "multiple-pattern-string-leaf",
66             "multiple-pattern-direct-string-def-leaf", "length-leaf", "decimal-leaf", "decimal-leaf2", "ext",
67             "union-leaf", "custom-union-leaf", "transfer", "datas", "mycont", "data", "how", "address", "port",
68             "addresses", "peer", "id", "foo-id", "sub-ext", "sub-transfer", "sub-datas"
69         };
70         final String[] actualOrder = new String[childNodes.size()];
71
72         int offset = 0;
73         for (final DataSchemaNode child : childNodes) {
74             actualOrder[offset] = child.getQName().getLocalName();
75             offset++;
76         }
77         assertArrayEquals(expectedOrder, actualOrder);
78     }
79
80     @Test
81     void testOrderingNestedChildNodes2() {
82         final var groupings = BAZ.getGroupings();
83         assertEquals(1, groupings.size());
84         final GroupingDefinition target = groupings.iterator().next();
85
86         final var childNodes = target.getChildNodes();
87         final String[] expectedOrder = {"data", "how", "address", "port", "addresses"};
88         final String[] actualOrder = new String[childNodes.size()];
89
90         int offset = 0;
91         for (final DataSchemaNode child : childNodes) {
92             actualOrder[offset] = child.getQName().getLocalName();
93             offset++;
94         }
95         assertArrayEquals(expectedOrder, actualOrder);
96     }
97
98     @Test
99     void testOrderingNestedChildNodes3() {
100         final Module justFoo = assertEffectiveModel("/ordering/foo.yang").getModules().iterator().next();
101         final ContainerSchemaNode x = (ContainerSchemaNode) justFoo
102             .getDataChildByName(QName.create(justFoo.getQNameModule(), "x"));
103         final var childNodes = x.getChildNodes();
104
105         final String[] expectedOrder = { "x15", "x10", "x5", "x1", "a5", "a1", "x2", "b5", "b1", "x3", "ax15", "ax5" };
106         final String[] actualOrder = new String[childNodes.size()];
107
108         int offset = 0;
109         for (final DataSchemaNode child : childNodes) {
110             actualOrder[offset] = child.getQName().getLocalName();
111             offset++;
112         }
113         assertArrayEquals(expectedOrder, actualOrder);
114     }
115 }