Rework NormalizedNode type hierarchy
[yangtools.git] / yang / yang-data-codec-xml / src / test / java / org / opendaylight / yangtools / yang / data / codec / xml / SchemaOrderedNormalizedNodeWriterTest.java
index fc9caa57084c8b167c8a1610ce67f67dc5473ac5..10bdf9eb8bf0e22a8fd559ed663265b8e98005e9 100644 (file)
@@ -7,37 +7,44 @@
  */
 package org.opendaylight.yangtools.yang.data.codec.xml;
 
-import java.io.FileNotFoundException;
+import java.io.IOException;
 import java.io.StringWriter;
-import java.net.URISyntaxException;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamWriter;
 import org.custommonkey.xmlunit.Diff;
 import org.custommonkey.xmlunit.XMLAssert;
 import org.custommonkey.xmlunit.XMLUnit;
-import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
+import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
+import org.opendaylight.yangtools.yang.data.api.schema.UserMapNode;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter;
 import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.SchemaOrderedNormalizedNodeWriter;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
-import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
+import org.xml.sax.SAXException;
 
+@RunWith(Parameterized.class)
 public class SchemaOrderedNormalizedNodeWriterTest {
+    @Parameterized.Parameters(name = "{0}")
+    public static Collection<Object[]> data() {
+        return TestFactories.junitParameters();
+    }
 
     private static final String EXPECTED_1 = ""
-        + "<root>\n"
+        + "<root xmlns=\"foo\">\n"
         + "    <policy>\n"
         + "        <name>policy1</name>\n"
         + "        <rule>\n"
@@ -60,7 +67,7 @@ public class SchemaOrderedNormalizedNodeWriterTest {
 
 
     private static final String EXPECTED_2 = ""
-        + "<root>\n"
+        + "<root xmlns=\"order\">\n"
         + "    <id>id1</id>\n"
         + "    <cont>\n"
         + "        <content>content1</content>\n"
@@ -73,18 +80,19 @@ public class SchemaOrderedNormalizedNodeWriterTest {
     private static final String POLICY_NODE = "policy";
     private static final String ORDER_NAMESPACE = "order";
 
+    private final XMLOutputFactory factory;
 
-    @Before
-    public void setUp() throws Exception {
+    public SchemaOrderedNormalizedNodeWriterTest(final String factoryMode, final XMLOutputFactory factory) {
+        this.factory = factory;
         XMLUnit.setIgnoreWhitespace(true);
     }
 
     @Test
-    public void testWrite() throws Exception {
+    public void testWrite() throws XMLStreamException, IOException, SAXException {
         final StringWriter stringWriter = new StringWriter();
-        final XMLStreamWriter xmlStreamWriter = XMLOutputFactory.newFactory().createXMLStreamWriter(stringWriter);
+        final XMLStreamWriter xmlStreamWriter = factory.createXMLStreamWriter(stringWriter);
 
-        SchemaContext schemaContext = getSchemaContext("/bug1848/foo.yang");
+        EffectiveModelContext schemaContext = getSchemaContext("/bug1848/foo.yang");
         NormalizedNodeStreamWriter writer = XMLStreamNormalizedNodeStreamWriter.create(xmlStreamWriter, schemaContext);
 
         try (SchemaOrderedNormalizedNodeWriter nnw = new SchemaOrderedNormalizedNodeWriter(writer, schemaContext,
@@ -102,11 +110,11 @@ public class SchemaOrderedNormalizedNodeWriterTest {
             rule1Names.add(ImmutableNodes.mapEntry(createQName(FOO_NAMESPACE, RULE_NODE),
                 createQName(FOO_NAMESPACE, NAME_NODE), "rule4"));
 
-            DataContainerChild<?, ?> rules1 = Builders.orderedMapBuilder()
+            UserMapNode rules1 = Builders.orderedMapBuilder()
                     .withNodeIdentifier(getNodeIdentifier(FOO_NAMESPACE, RULE_NODE))
                     .withValue(rule1Names)
                     .build();
-            DataContainerChild<?, ?> rules2 = Builders.orderedMapBuilder()
+            UserMapNode rules2 = Builders.orderedMapBuilder()
                     .withNodeIdentifier(getNodeIdentifier(FOO_NAMESPACE, RULE_NODE))
                     .withValue(rule2Names)
                     .build();
@@ -127,11 +135,11 @@ public class SchemaOrderedNormalizedNodeWriterTest {
             policyNodes.add(pn1);
             policyNodes.add(pn2);
 
-            DataContainerChild<?, ?> policy = Builders.orderedMapBuilder()
+            UserMapNode policy = Builders.orderedMapBuilder()
                     .withNodeIdentifier(getNodeIdentifier(FOO_NAMESPACE, POLICY_NODE))
                     .withValue(policyNodes)
                     .build();
-            NormalizedNode<?, ?> root = Builders.containerBuilder()
+            ContainerNode root = Builders.containerBuilder()
                     .withNodeIdentifier(getNodeIdentifier(FOO_NAMESPACE, "root"))
                     .withChild(policy).build();
             nnw.write(root);
@@ -141,20 +149,20 @@ public class SchemaOrderedNormalizedNodeWriterTest {
     }
 
     @Test
-    public void testWriteOrder() throws Exception {
+    public void testWriteOrder() throws XMLStreamException, IOException, SAXException {
         final StringWriter stringWriter = new StringWriter();
-        final XMLStreamWriter xmlStreamWriter = XMLOutputFactory.newFactory().createXMLStreamWriter(stringWriter);
-        SchemaContext schemaContext = getSchemaContext("/bug1848/order.yang");
+        final XMLStreamWriter xmlStreamWriter = factory.createXMLStreamWriter(stringWriter);
+        EffectiveModelContext schemaContext = getSchemaContext("/bug1848/order.yang");
         NormalizedNodeStreamWriter writer = XMLStreamNormalizedNodeStreamWriter.create(xmlStreamWriter, schemaContext);
 
         try (NormalizedNodeWriter nnw = new SchemaOrderedNormalizedNodeWriter(writer, schemaContext, SchemaPath.ROOT)) {
 
-            DataContainerChild<?, ?> cont = Builders.containerBuilder()
+            ContainerNode cont = Builders.containerBuilder()
                     .withNodeIdentifier(getNodeIdentifier(ORDER_NAMESPACE, "cont"))
                     .withChild(ImmutableNodes.leafNode(createQName(ORDER_NAMESPACE, "content"), "content1"))
                     .build();
 
-            NormalizedNode<?, ?> root = Builders.containerBuilder()
+            ContainerNode root = Builders.containerBuilder()
                     .withNodeIdentifier(getNodeIdentifier(ORDER_NAMESPACE, "root"))
                     .withChild(cont)
                     .withChild(ImmutableNodes.leafNode(createQName(ORDER_NAMESPACE, "id"), "id1"))
@@ -166,8 +174,7 @@ public class SchemaOrderedNormalizedNodeWriterTest {
         XMLAssert.assertXMLIdentical(new Diff(EXPECTED_2, stringWriter.toString()), true);
     }
 
-    private static SchemaContext getSchemaContext(final String filePath) throws URISyntaxException,
-            ReactorException, FileNotFoundException {
+    private static EffectiveModelContext getSchemaContext(final String filePath) {
         return YangParserTestUtils.parseYangResource(filePath);
     }