2 * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved.
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
8 package org.opendaylight.yangtools.yang.data.codec.xml;
10 import static org.junit.jupiter.api.Assertions.assertNotNull;
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;
25 private static final QNameModule FOO = QNameModule.of("foo", "2017-06-13");
27 private static EffectiveModelContext schemaContext;
31 schemaContext = YangParserTestUtils.parseYang("""
46 container cont-in-list {}
53 leaf inner-ordinary-leaf {
59 container top-level-container {
60 container inner-container-1 {}
61 container inner-container-2 {}
64 anyxml top-level-anyxml;
70 leaf-list top-level-leaf-list {
77 static void cleanup() {
82 void testParsingEmptyElements() throws Exception {
83 final var resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream(
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);
92 final var transformedInput = result.getResult().data();
93 assertNotNull(transformedInput);
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);
106 final var transformedInput = result.getResult().data();
107 assertNotNull(transformedInput);
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);
120 final var transformedInput = result.getResult().data();
121 assertNotNull(transformedInput);
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);
134 final var transformedInput = result.getResult().data();
135 assertNotNull(transformedInput);
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);
148 final var transformedInput = result.getResult().data();
149 assertNotNull(transformedInput);
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);
162 final var transformedInput = result.getResult().data();
163 assertNotNull(transformedInput);