Remove deprecated Yin/YangStatementSourceImpl
[yangtools.git] / yang / 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
9 package org.opendaylight.yangtools.yang.data.codec.xml;
10
11 import static org.junit.Assert.assertNotNull;
12
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;
31
32 public class Bug8675Test {
33
34     private static SchemaContext schemaContext;
35     private static Module fooModule;
36
37     @BeforeClass
38     public static void setup() throws Exception {
39         schemaContext = YangParserTestUtils.parseYangResource("/bug8675/foo.yang");
40         fooModule = schemaContext.getModules().iterator().next();
41     }
42
43     @Test
44     public void testParsingEmptyElements() throws Exception {
45         final ContainerSchemaNode topLevelContainer = (ContainerSchemaNode) fooModule.getDataChildByName(
46                 QName.create(fooModule.getQNameModule(), "top-level-container"));
47         assertNotNull(topLevelContainer);
48
49         final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream(
50                 "/bug8675/foo.xml");
51
52         final XMLInputFactory factory = XMLInputFactory.newInstance();
53         final XMLStreamReader reader = factory.createXMLStreamReader(resourceAsStream);
54
55         final NormalizedNodeResult result = new NormalizedNodeResult();
56         final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
57
58         final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelContainer);
59         xmlParser.parse(reader);
60
61         final NormalizedNode<?, ?> transformedInput = result.getResult();
62         assertNotNull(transformedInput);
63     }
64
65     @Test
66     public void testParsingEmptyRootElement() throws Exception {
67         final ContainerSchemaNode topLevelContainer = (ContainerSchemaNode) fooModule.getDataChildByName(
68                 QName.create(fooModule.getQNameModule(), "top-level-container"));
69         assertNotNull(topLevelContainer);
70
71         final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream(
72                 "/bug8675/foo-2.xml");
73
74         final XMLInputFactory factory = XMLInputFactory.newInstance();
75         final XMLStreamReader reader = factory.createXMLStreamReader(resourceAsStream);
76
77         final NormalizedNodeResult result = new NormalizedNodeResult();
78         final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
79
80         final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelContainer);
81         xmlParser.parse(reader);
82
83         final NormalizedNode<?, ?> transformedInput = result.getResult();
84         assertNotNull(transformedInput);
85     }
86
87     @Test
88     public void testListAsRootElement() throws Exception {
89         final ListSchemaNode topLevelList = (ListSchemaNode) fooModule.getDataChildByName(
90                 QName.create(fooModule.getQNameModule(), "top-level-list"));
91         assertNotNull(topLevelList);
92
93         final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-3.xml");
94
95         final XMLInputFactory factory = XMLInputFactory.newInstance();
96         final XMLStreamReader reader = factory.createXMLStreamReader(resourceAsStream);
97
98         final NormalizedNodeResult result = new NormalizedNodeResult();
99         final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
100
101         final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelList);
102         xmlParser.parse(reader);
103
104         final NormalizedNode<?, ?> transformedInput = result.getResult();
105         assertNotNull(transformedInput);
106     }
107
108     @Test
109     public void testAnyXmlAsRootElement() throws Exception {
110         final AnyXmlSchemaNode topLevelAnyXml = (AnyXmlSchemaNode) fooModule.getDataChildByName(
111                 QName.create(fooModule.getQNameModule(), "top-level-anyxml"));
112         assertNotNull(topLevelAnyXml);
113
114         final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-4.xml");
115
116         final XMLInputFactory factory = XMLInputFactory.newInstance();
117         final XMLStreamReader reader = factory.createXMLStreamReader(resourceAsStream);
118
119         final NormalizedNodeResult result = new NormalizedNodeResult();
120         final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
121
122         final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelAnyXml);
123         xmlParser.parse(reader);
124
125         final NormalizedNode<?, ?> transformedInput = result.getResult();
126         assertNotNull(transformedInput);
127     }
128
129     @Test
130     public void testLeafAsRootElement() throws Exception {
131         final LeafSchemaNode topLevelLeaf = (LeafSchemaNode) fooModule.getDataChildByName(
132                 QName.create(fooModule.getQNameModule(), "top-level-leaf"));
133
134         final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-5.xml");
135
136         final XMLInputFactory factory = XMLInputFactory.newInstance();
137         final XMLStreamReader reader = factory.createXMLStreamReader(resourceAsStream);
138
139         final NormalizedNodeResult result = new NormalizedNodeResult();
140         final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
141
142         final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelLeaf);
143         xmlParser.parse(reader);
144
145         final NormalizedNode<?, ?> transformedInput = result.getResult();
146         assertNotNull(transformedInput);
147     }
148
149     @Test
150     public void testLeafListAsRootElement() throws Exception {
151         final LeafListSchemaNode topLevelLeafList = (LeafListSchemaNode) fooModule.getDataChildByName(
152                 QName.create(fooModule.getQNameModule(), "top-level-leaf-list"));
153
154         final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-6.xml");
155
156         final XMLInputFactory factory = XMLInputFactory.newInstance();
157         final XMLStreamReader reader = factory.createXMLStreamReader(resourceAsStream);
158
159         final NormalizedNodeResult result = new NormalizedNodeResult();
160         final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
161
162         final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelLeafList);
163         xmlParser.parse(reader);
164
165         final NormalizedNode<?, ?> transformedInput = result.getResult();
166         assertNotNull(transformedInput);
167     }
168 }