Migrate users of deprecated QNameModule methods
[yangtools.git] / codec / yang-data-codec-xml / src / test / java / org / opendaylight / yangtools / yang / data / codec / xml / Bug8675Test.java
1 /*
2  * Copyright (c) 2017 Pantheon Technologies s.r.o. 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.codec.xml;
9
10 import static org.junit.jupiter.api.Assertions.assertNotNull;
11
12 import org.junit.jupiter.api.AfterAll;
13 import org.junit.jupiter.api.BeforeAll;
14 import org.junit.jupiter.api.Test;
15 import org.opendaylight.yangtools.util.xml.UntrustedXML;
16 import org.opendaylight.yangtools.yang.common.QName;
17 import org.opendaylight.yangtools.yang.common.QNameModule;
18 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
19 import org.opendaylight.yangtools.yang.data.impl.schema.NormalizationResultHolder;
20 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
21 import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack.Inference;
22 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
23
24 class Bug8675Test {
25     private static final QNameModule FOO = QNameModule.of("foo", "2017-06-13");
26
27     private static EffectiveModelContext schemaContext;
28
29     @BeforeAll
30     static void setup() {
31         schemaContext = YangParserTestUtils.parseYang("""
32             module foo {
33               namespace foo;
34               prefix foo;
35               revision 2017-06-13;
36
37               list top-level-list {
38                 key key-leaf;
39                 leaf key-leaf {
40                   type string;
41                 }
42                 leaf ordinary-leaf {
43                   type string;
44                 }
45
46                 container cont-in-list {}
47
48                 list inner-list {
49                   key inner-key-leaf;
50                   leaf inner-key-leaf {
51                     type string;
52                   }
53                   leaf inner-ordinary-leaf {
54                     type string;
55                   }
56                 }
57               }
58
59               container top-level-container {
60                 container inner-container-1 {}
61                 container inner-container-2 {}
62               }
63
64               anyxml top-level-anyxml;
65
66               leaf top-level-leaf {
67                 type int32;
68               }
69
70               leaf-list top-level-leaf-list {
71                 type int32;
72               }
73             }""");
74     }
75
76     @AfterAll
77     static void cleanup() {
78         schemaContext = null;
79     }
80
81     @Test
82     void testParsingEmptyElements() throws Exception {
83         final var resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream(
84                 "/bug8675/foo.xml");
85         final var reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
86         final var result = new NormalizationResultHolder();
87         final var streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
88         final var xmlParser = XmlParserStream.create(streamWriter,
89             Inference.ofDataTreePath(schemaContext, QName.create(FOO, "top-level-container")));
90         xmlParser.parse(reader);
91
92         final var transformedInput = result.getResult().data();
93         assertNotNull(transformedInput);
94     }
95
96     @Test
97     void testParsingEmptyRootElement() throws Exception {
98         final var resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-2.xml");
99         final var reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
100         final var result = new NormalizationResultHolder();
101         final var streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
102         final var xmlParser = XmlParserStream.create(streamWriter,
103             Inference.ofDataTreePath(schemaContext, QName.create(FOO, "top-level-container")));
104         xmlParser.parse(reader);
105
106         final var transformedInput = result.getResult().data();
107         assertNotNull(transformedInput);
108     }
109
110     @Test
111     void testListAsRootElement() throws Exception {
112         final var resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-3.xml");
113         final var reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
114         final var result = new NormalizationResultHolder();
115         final var streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
116         final var xmlParser = XmlParserStream.create(streamWriter,
117             Inference.ofDataTreePath(schemaContext, QName.create(FOO, "top-level-list")));
118         xmlParser.parse(reader);
119
120         final var transformedInput = result.getResult().data();
121         assertNotNull(transformedInput);
122     }
123
124     @Test
125     void testAnyXmlAsRootElement() throws Exception {
126         final var resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-4.xml");
127         final var reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
128         final var result = new NormalizationResultHolder();
129         final var streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
130         final var xmlParser = XmlParserStream.create(streamWriter,
131             Inference.ofDataTreePath(schemaContext, QName.create(FOO, "top-level-anyxml")));
132         xmlParser.parse(reader);
133
134         final var transformedInput = result.getResult().data();
135         assertNotNull(transformedInput);
136     }
137
138     @Test
139     void testLeafAsRootElement() throws Exception {
140         final var resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-5.xml");
141         final var reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
142         final var result = new NormalizationResultHolder();
143         final var streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
144         final var xmlParser = XmlParserStream.create(streamWriter,
145             Inference.ofDataTreePath(schemaContext, QName.create(FOO, "top-level-leaf")));
146         xmlParser.parse(reader);
147
148         final var transformedInput = result.getResult().data();
149         assertNotNull(transformedInput);
150     }
151
152     @Test
153     void testLeafListAsRootElement() throws Exception {
154         final var resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-6.xml");
155         final var reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
156         final var result = new NormalizationResultHolder();
157         final var streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
158         final var xmlParser = XmlParserStream.create(streamWriter,
159             Inference.ofDataTreePath(schemaContext, QName.create(FOO, "top-level-leaf-list")));
160         xmlParser.parse(reader);
161
162         final var transformedInput = result.getResult().data();
163         assertNotNull(transformedInput);
164     }
165 }