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
9 package org.opendaylight.yangtools.yang.data.codec.xml;
11 import static org.junit.Assert.assertNotNull;
13 import java.io.InputStream;
14 import javax.xml.stream.XMLInputFactory;
15 import javax.xml.stream.XMLStreamReader;
16 import org.junit.BeforeClass;
17 import org.junit.Test;
18 import org.opendaylight.yangtools.yang.common.QName;
19 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
20 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
21 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
22 import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
23 import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
24 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
25 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
26 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
27 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
28 import org.opendaylight.yangtools.yang.model.api.Module;
29 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
30 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
32 public class Bug8675Test {
34 private static SchemaContext schemaContext;
35 private static Module fooModule;
38 public static void setup() throws Exception {
39 schemaContext = YangParserTestUtils.parseYangResource("/bug8675/foo.yang");
40 fooModule = schemaContext.getModules().iterator().next();
44 public void testParsingEmptyElements() throws Exception {
45 final ContainerSchemaNode topLevelContainer = (ContainerSchemaNode) fooModule.getDataChildByName(
46 QName.create(fooModule.getQNameModule(), "top-level-container"));
47 assertNotNull(topLevelContainer);
49 final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream(
52 final XMLInputFactory factory = XMLInputFactory.newInstance();
53 final XMLStreamReader reader = factory.createXMLStreamReader(resourceAsStream);
55 final NormalizedNodeResult result = new NormalizedNodeResult();
56 final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
58 final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelContainer);
59 xmlParser.parse(reader);
61 final NormalizedNode<?, ?> transformedInput = result.getResult();
62 assertNotNull(transformedInput);
66 public void testParsingEmptyRootElement() throws Exception {
67 final ContainerSchemaNode topLevelContainer = (ContainerSchemaNode) fooModule.getDataChildByName(
68 QName.create(fooModule.getQNameModule(), "top-level-container"));
69 assertNotNull(topLevelContainer);
71 final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream(
72 "/bug8675/foo-2.xml");
74 final XMLInputFactory factory = XMLInputFactory.newInstance();
75 final XMLStreamReader reader = factory.createXMLStreamReader(resourceAsStream);
77 final NormalizedNodeResult result = new NormalizedNodeResult();
78 final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
80 final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelContainer);
81 xmlParser.parse(reader);
83 final NormalizedNode<?, ?> transformedInput = result.getResult();
84 assertNotNull(transformedInput);
88 public void testListAsRootElement() throws Exception {
89 final ListSchemaNode topLevelList = (ListSchemaNode) fooModule.getDataChildByName(
90 QName.create(fooModule.getQNameModule(), "top-level-list"));
91 assertNotNull(topLevelList);
93 final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-3.xml");
95 final XMLInputFactory factory = XMLInputFactory.newInstance();
96 final XMLStreamReader reader = factory.createXMLStreamReader(resourceAsStream);
98 final NormalizedNodeResult result = new NormalizedNodeResult();
99 final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
101 final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelList);
102 xmlParser.parse(reader);
104 final NormalizedNode<?, ?> transformedInput = result.getResult();
105 assertNotNull(transformedInput);
109 public void testAnyXmlAsRootElement() throws Exception {
110 final AnyXmlSchemaNode topLevelAnyXml = (AnyXmlSchemaNode) fooModule.getDataChildByName(
111 QName.create(fooModule.getQNameModule(), "top-level-anyxml"));
112 assertNotNull(topLevelAnyXml);
114 final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-4.xml");
116 final XMLInputFactory factory = XMLInputFactory.newInstance();
117 final XMLStreamReader reader = factory.createXMLStreamReader(resourceAsStream);
119 final NormalizedNodeResult result = new NormalizedNodeResult();
120 final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
122 final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelAnyXml);
123 xmlParser.parse(reader);
125 final NormalizedNode<?, ?> transformedInput = result.getResult();
126 assertNotNull(transformedInput);
130 public void testLeafAsRootElement() throws Exception {
131 final LeafSchemaNode topLevelLeaf = (LeafSchemaNode) fooModule.getDataChildByName(
132 QName.create(fooModule.getQNameModule(), "top-level-leaf"));
134 final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-5.xml");
136 final XMLInputFactory factory = XMLInputFactory.newInstance();
137 final XMLStreamReader reader = factory.createXMLStreamReader(resourceAsStream);
139 final NormalizedNodeResult result = new NormalizedNodeResult();
140 final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
142 final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelLeaf);
143 xmlParser.parse(reader);
145 final NormalizedNode<?, ?> transformedInput = result.getResult();
146 assertNotNull(transformedInput);
150 public void testLeafListAsRootElement() throws Exception {
151 final LeafListSchemaNode topLevelLeafList = (LeafListSchemaNode) fooModule.getDataChildByName(
152 QName.create(fooModule.getQNameModule(), "top-level-leaf-list"));
154 final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-6.xml");
156 final XMLInputFactory factory = XMLInputFactory.newInstance();
157 final XMLStreamReader reader = factory.createXMLStreamReader(resourceAsStream);
159 final NormalizedNodeResult result = new NormalizedNodeResult();
160 final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
162 final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelLeafList);
163 xmlParser.parse(reader);
165 final NormalizedNode<?, ?> transformedInput = result.getResult();
166 assertNotNull(transformedInput);