Migrate users of deprecated QNameModule methods
[yangtools.git] / data / yang-data-impl / src / test / java / org / opendaylight / yangtools / yang / data / impl / schema / ImmutableNormalizedNodeStreamWriterTest.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.data.impl.schema;
9
10 import static org.junit.jupiter.api.Assertions.assertEquals;
11 import static org.junit.jupiter.api.Assertions.assertNotNull;
12
13 import java.io.IOException;
14 import java.util.List;
15 import java.util.Map;
16 import javax.xml.transform.dom.DOMSource;
17 import org.junit.jupiter.api.Test;
18 import org.opendaylight.yangtools.yang.common.QName;
19 import org.opendaylight.yangtools.yang.common.QNameModule;
20 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
21 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
22 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
23 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter;
24 import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
25
26 class ImmutableNormalizedNodeStreamWriterTest {
27
28     private QNameModule bazModule;
29
30     private QName outerContainer;
31
32     private QName myContainer1;
33     private QName myKeyedList;
34     private QName myKeyLeaf;
35     private QName myLeafInList1;
36     private QName myLeafInList2;
37     private QName myOrderedList;
38     private QName myKeyLeafInOrderedList;
39     private QName myLeafInOrderedList1;
40     private QName myLeafInOrderedList2;
41     private QName myUnkeyedList;
42     private QName myLeafInUnkeyedList;
43     private QName myLeaf1;
44     private QName myLeafList;
45     private QName myOrderedLeafList;
46
47     private QName myContainer2;
48     private QName innerContainer;
49     private QName myLeaf2;
50     private QName myLeaf3;
51     private QName myChoice;
52     private QName myLeafInCase2;
53     private QName myAnyxml;
54
55     private QName myContainer3;
56     private QName myDoublyKeyedList;
57     private QName myFirstKeyLeaf;
58     private QName mySecondKeyLeaf;
59     private QName myLeafInList3;
60
61     private DOMSource anyxmlDomSource;
62
63     @Test
64     void testImmutableNormalizedNodeStreamWriter() throws IOException {
65         bazModule = QNameModule.of("baz-namespace", "1970-01-01");
66
67         outerContainer = QName.create(bazModule, "outer-container");
68
69         myContainer1 = QName.create(bazModule, "my-container-1");
70         myKeyedList = QName.create(bazModule, "my-keyed-list");
71         myKeyLeaf = QName.create(bazModule, "my-key-leaf");
72         myLeafInList1 = QName.create(bazModule, "my-leaf-in-list-1");
73         myLeafInList2 = QName.create(bazModule, "my-leaf-in-list-2");
74         myOrderedList = QName.create(bazModule, "my-ordered-list");
75         myKeyLeafInOrderedList = QName.create(bazModule, "my-key-leaf-in-ordered-list");
76         myLeafInOrderedList1 = QName.create(bazModule, "my-leaf-in-ordered-list-1");
77         myLeafInOrderedList2 = QName.create(bazModule, "my-leaf-in-ordered-list-2");
78         myUnkeyedList = QName.create(bazModule, "my-unkeyed-list");
79         myLeafInUnkeyedList = QName.create(bazModule, "my-leaf-in-unkeyed-list");
80         myLeaf1 = QName.create(bazModule, "my-leaf-1");
81         myLeafList = QName.create(bazModule, "my-leaf-list");
82         myOrderedLeafList = QName.create(bazModule, "my-ordered-leaf-list");
83
84         myContainer2 = QName.create(bazModule, "my-container-2");
85         innerContainer = QName.create(bazModule, "inner-container");
86         myLeaf2 = QName.create(bazModule, "my-leaf-2");
87         myLeaf3 = QName.create(bazModule, "my-leaf-3");
88         myChoice = QName.create(bazModule, "my-choice");
89         myLeafInCase2 = QName.create(bazModule, "my-leaf-in-case-2");
90         myAnyxml = QName.create(bazModule, "my-anyxml");
91
92         myContainer3 = QName.create(bazModule, "my-container-3");
93         myDoublyKeyedList = QName.create(bazModule, "my-doubly-keyed-list");
94         myFirstKeyLeaf = QName.create(bazModule, "my-first-key-leaf");
95         mySecondKeyLeaf = QName.create(bazModule, "my-second-key-leaf");
96         myLeafInList3 = QName.create(bazModule, "my-leaf-in-list-3");
97
98         anyxmlDomSource = new DOMSource();
99
100         final var result = new NormalizationResultHolder();
101         final var immutableNormalizedNodeStreamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
102         final var normalizedNodeWriter = NormalizedNodeWriter.forStreamWriter(immutableNormalizedNodeStreamWriter);
103         normalizedNodeWriter.write(buildOuterContainerNode());
104
105         final var output = result.getResult().data();
106         assertNotNull(output);
107
108         final var expectedNormalizedNode = buildOuterContainerNode();
109         assertNotNull(expectedNormalizedNode);
110
111         assertEquals(expectedNormalizedNode, output);
112     }
113
114     private ContainerNode buildOuterContainerNode() {
115         return ImmutableNodes.newContainerBuilder()
116             .withNodeIdentifier(new NodeIdentifier(outerContainer))
117             .withChild(ImmutableNodes.newContainerBuilder()
118                 .withNodeIdentifier(new NodeIdentifier(myContainer1))
119                 .withChild(ImmutableNodes.newSystemMapBuilder()
120                     .withNodeIdentifier(new NodeIdentifier(myKeyedList))
121                     .withChild(ImmutableNodes.newMapEntryBuilder()
122                         .withNodeIdentifier(NodeIdentifierWithPredicates.of(myKeyedList, myKeyLeaf, "listkeyvalue1"))
123                         .withChild(ImmutableNodes.leafNode(myLeafInList1, "listleafvalue1"))
124                         .withChild(ImmutableNodes.leafNode(myLeafInList2, "listleafvalue2"))
125                         .build())
126                     .withChild(ImmutableNodes.newMapEntryBuilder()
127                         .withNodeIdentifier(NodeIdentifierWithPredicates.of(myKeyedList, myKeyLeaf, "listkeyvalue2"))
128                         .withChild(ImmutableNodes.leafNode(myLeafInList1, "listleafvalue12"))
129                         .withChild(ImmutableNodes.leafNode(myLeafInList2, "listleafvalue22"))
130                         .build())
131                     .build())
132                 .withChild(ImmutableNodes.newUserMapBuilder()
133                     .withNodeIdentifier(new NodeIdentifier(myOrderedList))
134                     .withChild(ImmutableNodes.newMapEntryBuilder()
135                         .withNodeIdentifier(
136                             NodeIdentifierWithPredicates.of(myOrderedList, myKeyLeafInOrderedList, "olistkeyvalue1"))
137                         .withChild(ImmutableNodes.leafNode(myLeafInOrderedList1, "olistleafvalue1"))
138                         .withChild(ImmutableNodes.leafNode(myLeafInOrderedList2, "olistleafvalue2"))
139                         .build())
140                     .withChild(ImmutableNodes.newMapEntryBuilder()
141                         .withNodeIdentifier(
142                             NodeIdentifierWithPredicates.of(myOrderedList, myKeyLeafInOrderedList, "olistkeyvalue2"))
143                         .withChild(ImmutableNodes.leafNode(myLeafInOrderedList1, "olistleafvalue12"))
144                         .withChild(ImmutableNodes.leafNode(myLeafInOrderedList2, "olistleafvalue22"))
145                         .build())
146                     .build())
147                 .withChild(ImmutableNodes.newUnkeyedListBuilder()
148                     .withNodeIdentifier(new NodeIdentifier(myUnkeyedList))
149                     .withValue(List.of(ImmutableNodes.newUnkeyedListEntryBuilder()
150                         .withNodeIdentifier(new NodeIdentifier(myLeafInUnkeyedList))
151                         .withChild(ImmutableNodes.leafNode(myLeafInUnkeyedList, "foo"))
152                         .build()))
153                     .build())
154                 .withChild(ImmutableNodes.leafNode(myLeaf1, "value1"))
155                 .withChild(ImmutableNodes.newSystemLeafSetBuilder()
156                     .withNodeIdentifier(new NodeIdentifier(myLeafList))
157                     .withChild(ImmutableNodes.leafSetEntry(myLeafList, "lflvalue1"))
158                     .withChild(ImmutableNodes.leafSetEntry(myLeafList, "lflvalue2"))
159                     .build())
160                 .withChild(ImmutableNodes.newUserLeafSetBuilder()
161                     .withNodeIdentifier(new NodeIdentifier(myOrderedLeafList))
162                     .withChild(ImmutableNodes.leafSetEntry(myOrderedLeafList, "olflvalue1"))
163                     .withChild(ImmutableNodes.leafSetEntry(myOrderedLeafList, "olflvalue2"))
164                     .build())
165                 .build())
166             .withChild(ImmutableNodes.newContainerBuilder()
167                 .withNodeIdentifier(new NodeIdentifier(myContainer2))
168                 .withChild(ImmutableNodes.newContainerBuilder()
169                     .withNodeIdentifier(new NodeIdentifier(innerContainer))
170                     .withChild(ImmutableNodes.leafNode(myLeaf2, "value2"))
171                     .build())
172                 .withChild(ImmutableNodes.leafNode(myLeaf3, "value3"))
173                 .withChild(ImmutableNodes.newChoiceBuilder()
174                     .withNodeIdentifier(new NodeIdentifier(myChoice))
175                     .withChild(ImmutableNodes.leafNode(myLeafInCase2, "case2value"))
176                     .build())
177                 .withChild(ImmutableNodes.newAnyxmlBuilder(DOMSource.class)
178                     .withNodeIdentifier(new NodeIdentifier(myAnyxml))
179                     .withValue(anyxmlDomSource)
180                     .build())
181                 .build())
182             .withChild(ImmutableNodes.newContainerBuilder()
183                 .withNodeIdentifier(new NodeIdentifier(myContainer3))
184                 .withChild(ImmutableNodes.newSystemMapBuilder()
185                     .withNodeIdentifier(new NodeIdentifier(myDoublyKeyedList))
186                     .withChild(ImmutableNodes.newMapEntryBuilder()
187                         .withNodeIdentifier(NodeIdentifierWithPredicates.of(myDoublyKeyedList,
188                             Map.of(myFirstKeyLeaf, "listkeyvalue1", mySecondKeyLeaf, "listkeyvalue2")))
189                         .withChild(ImmutableNodes.leafNode(myLeafInList3, "listleafvalue1"))
190                         .build())
191                     .build())
192                 .build())
193             .build();
194     }
195 }