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.Assert.assertNotNull;
12 import java.io.InputStream;
13 import javax.xml.stream.XMLStreamReader;
14 import org.junit.AfterClass;
15 import org.junit.BeforeClass;
16 import org.junit.Test;
17 import org.opendaylight.yangtools.util.xml.UntrustedXML;
18 import org.opendaylight.yangtools.yang.common.QName;
19 import org.opendaylight.yangtools.yang.common.QNameModule;
20 import org.opendaylight.yangtools.yang.common.Revision;
21 import org.opendaylight.yangtools.yang.common.XMLNamespace;
22 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
23 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
24 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
25 import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
26 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
27 import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack.Inference;
28 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
30 public class Bug8675Test {
31 private static final QNameModule FOO = QNameModule.create(XMLNamespace.of("foo"), Revision.of("2017-06-13"));
33 private static EffectiveModelContext schemaContext;
36 public static void setup() {
37 schemaContext = YangParserTestUtils.parseYangResource("/bug8675/foo.yang");
41 public static void cleanup() {
46 public void testParsingEmptyElements() throws Exception {
47 final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream(
50 final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
52 final NormalizedNodeResult result = new NormalizedNodeResult();
53 final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
55 final XmlParserStream xmlParser = XmlParserStream.create(streamWriter,
56 Inference.ofDataTreePath(schemaContext, QName.create(FOO, "top-level-container")));
57 xmlParser.parse(reader);
59 final NormalizedNode transformedInput = result.getResult();
60 assertNotNull(transformedInput);
64 public void testParsingEmptyRootElement() throws Exception {
65 final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream(
66 "/bug8675/foo-2.xml");
68 final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
70 final NormalizedNodeResult result = new NormalizedNodeResult();
71 final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
73 final XmlParserStream xmlParser = XmlParserStream.create(streamWriter,
74 Inference.ofDataTreePath(schemaContext, QName.create(FOO, "top-level-container")));
75 xmlParser.parse(reader);
77 final NormalizedNode transformedInput = result.getResult();
78 assertNotNull(transformedInput);
82 public void testListAsRootElement() throws Exception {
83 final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-3.xml");
85 final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
87 final NormalizedNodeResult result = new NormalizedNodeResult();
88 final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
90 final XmlParserStream xmlParser = XmlParserStream.create(streamWriter,
91 Inference.ofDataTreePath(schemaContext, QName.create(FOO, "top-level-list")));
92 xmlParser.parse(reader);
94 final NormalizedNode transformedInput = result.getResult();
95 assertNotNull(transformedInput);
99 public void testAnyXmlAsRootElement() throws Exception {
100 final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-4.xml");
102 final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
104 final NormalizedNodeResult result = new NormalizedNodeResult();
105 final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
107 final XmlParserStream xmlParser = XmlParserStream.create(streamWriter,
108 Inference.ofDataTreePath(schemaContext, QName.create(FOO, "top-level-anyxml")));
109 xmlParser.parse(reader);
111 final NormalizedNode transformedInput = result.getResult();
112 assertNotNull(transformedInput);
116 public void testLeafAsRootElement() throws Exception {
117 final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-5.xml");
119 final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
121 final NormalizedNodeResult result = new NormalizedNodeResult();
122 final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
124 final XmlParserStream xmlParser = XmlParserStream.create(streamWriter,
125 Inference.ofDataTreePath(schemaContext, QName.create(FOO, "top-level-leaf")));
126 xmlParser.parse(reader);
128 final NormalizedNode transformedInput = result.getResult();
129 assertNotNull(transformedInput);
133 public void testLeafListAsRootElement() throws Exception {
134 final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-6.xml");
136 final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
138 final NormalizedNodeResult result = new NormalizedNodeResult();
139 final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
141 final XmlParserStream xmlParser = XmlParserStream.create(streamWriter,
142 Inference.ofDataTreePath(schemaContext, QName.create(FOO, "top-level-leaf-list")));
143 xmlParser.parse(reader);
145 final NormalizedNode transformedInput = result.getResult();
146 assertNotNull(transformedInput);