Populate codec/ directory
[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.Assert.assertNotNull;
11
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;
29
30 public class Bug8675Test {
31     private static final QNameModule FOO = QNameModule.create(XMLNamespace.of("foo"), Revision.of("2017-06-13"));
32
33     private static EffectiveModelContext schemaContext;
34
35     @BeforeClass
36     public static void setup() {
37         schemaContext = YangParserTestUtils.parseYangResource("/bug8675/foo.yang");
38     }
39
40     @AfterClass
41     public static void cleanup() {
42         schemaContext = null;
43     }
44
45     @Test
46     public void testParsingEmptyElements() throws Exception {
47         final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream(
48                 "/bug8675/foo.xml");
49
50         final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
51
52         final NormalizedNodeResult result = new NormalizedNodeResult();
53         final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
54
55         final XmlParserStream xmlParser = XmlParserStream.create(streamWriter,
56             Inference.ofDataTreePath(schemaContext, QName.create(FOO, "top-level-container")));
57         xmlParser.parse(reader);
58
59         final NormalizedNode transformedInput = result.getResult();
60         assertNotNull(transformedInput);
61     }
62
63     @Test
64     public void testParsingEmptyRootElement() throws Exception {
65         final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream(
66                 "/bug8675/foo-2.xml");
67
68         final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
69
70         final NormalizedNodeResult result = new NormalizedNodeResult();
71         final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
72
73         final XmlParserStream xmlParser = XmlParserStream.create(streamWriter,
74             Inference.ofDataTreePath(schemaContext, QName.create(FOO, "top-level-container")));
75         xmlParser.parse(reader);
76
77         final NormalizedNode transformedInput = result.getResult();
78         assertNotNull(transformedInput);
79     }
80
81     @Test
82     public void testListAsRootElement() throws Exception {
83         final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-3.xml");
84
85         final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
86
87         final NormalizedNodeResult result = new NormalizedNodeResult();
88         final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
89
90         final XmlParserStream xmlParser = XmlParserStream.create(streamWriter,
91             Inference.ofDataTreePath(schemaContext, QName.create(FOO, "top-level-list")));
92         xmlParser.parse(reader);
93
94         final NormalizedNode transformedInput = result.getResult();
95         assertNotNull(transformedInput);
96     }
97
98     @Test
99     public void testAnyXmlAsRootElement() throws Exception {
100         final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-4.xml");
101
102         final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
103
104         final NormalizedNodeResult result = new NormalizedNodeResult();
105         final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
106
107         final XmlParserStream xmlParser = XmlParserStream.create(streamWriter,
108             Inference.ofDataTreePath(schemaContext, QName.create(FOO, "top-level-anyxml")));
109         xmlParser.parse(reader);
110
111         final NormalizedNode transformedInput = result.getResult();
112         assertNotNull(transformedInput);
113     }
114
115     @Test
116     public void testLeafAsRootElement() throws Exception {
117         final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-5.xml");
118
119         final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
120
121         final NormalizedNodeResult result = new NormalizedNodeResult();
122         final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
123
124         final XmlParserStream xmlParser = XmlParserStream.create(streamWriter,
125             Inference.ofDataTreePath(schemaContext, QName.create(FOO, "top-level-leaf")));
126         xmlParser.parse(reader);
127
128         final NormalizedNode transformedInput = result.getResult();
129         assertNotNull(transformedInput);
130     }
131
132     @Test
133     public void testLeafListAsRootElement() throws Exception {
134         final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-6.xml");
135
136         final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
137
138         final NormalizedNodeResult result = new NormalizedNodeResult();
139         final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
140
141         final XmlParserStream xmlParser = XmlParserStream.create(streamWriter,
142             Inference.ofDataTreePath(schemaContext, QName.create(FOO, "top-level-leaf-list")));
143         xmlParser.parse(reader);
144
145         final NormalizedNode transformedInput = result.getResult();
146         assertNotNull(transformedInput);
147     }
148 }