Fix default namespace emission
[yangtools.git] / yang / yang-data-codec-xml / src / test / java / org / opendaylight / yangtools / yang / data / codec / xml / Bug8803Test.java
index 97e9d80c5e5f95aeddf3d9484593bdb61445f643..ea1a026e2d17fe27f83d938ee26cc2550f150502 100644 (file)
@@ -13,10 +13,15 @@ import static org.junit.Assert.assertTrue;
 
 import java.io.InputStream;
 import java.io.StringWriter;
+import java.util.Collection;
 import javax.xml.stream.XMLOutputFactory;
 import javax.xml.stream.XMLStreamReader;
 import javax.xml.stream.XMLStreamWriter;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
 import org.opendaylight.yangtools.util.xml.UntrustedXML;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
@@ -31,13 +36,35 @@ import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil;
 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 
+@RunWith(Parameterized.class)
 public class Bug8803Test {
+    @Parameterized.Parameters(name = "{0}")
+    public static Collection<Object[]> data() {
+        return TestFactories.junitParameters();
+    }
+
+    private static SchemaContext SCHEMA_CONTEXT;
+
+    private final XMLOutputFactory factory;
+
+    public Bug8803Test(final String factoryMode, final XMLOutputFactory factory) {
+        this.factory = factory;
+    }
+
+    @BeforeClass
+    public static void beforeClass() {
+        SCHEMA_CONTEXT = YangParserTestUtils.parseYangResourceDirectory("/bug8803");
+    }
+
+    @AfterClass
+    public static void afterClass() {
+        SCHEMA_CONTEXT = null;
+    }
 
     @Test
     public void test() throws Exception {
-        final SchemaContext schemaContext = YangParserTestUtils.parseYangResourceDirectory("/bug8803");
         final SchemaPath topContPath = SchemaPath.create(true, QName.create("foo-ns", "top-cont"));
-        final SchemaNode dataSchemaNode = SchemaContextUtil.findDataSchemaNode(schemaContext, topContPath);
+        final SchemaNode dataSchemaNode = SchemaContextUtil.findDataSchemaNode(SCHEMA_CONTEXT, topContPath);
         assertTrue(dataSchemaNode instanceof ContainerSchemaNode);
         final ContainerSchemaNode topContSchema = (ContainerSchemaNode) dataSchemaNode;
 
@@ -48,20 +75,17 @@ public class Bug8803Test {
 
         final NormalizedNodeResult result = new NormalizedNodeResult();
         final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
-        final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topContSchema);
+        final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, SCHEMA_CONTEXT, topContSchema);
         xmlParser.parse(reader);
         final NormalizedNode<?, ?> transformedInput = result.getResult();
         assertNotNull(transformedInput);
 
         // serialization
         final StringWriter writer = new StringWriter();
-        final XMLOutputFactory outputFactory = XMLOutputFactory.newFactory();
-        // switching NS repairing to false does not help
-        outputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, Boolean.TRUE);
-        final XMLStreamWriter xmlStreamWriter = outputFactory.createXMLStreamWriter(writer);
+        final XMLStreamWriter xmlStreamWriter = factory.createXMLStreamWriter(writer);
 
         final NormalizedNodeStreamWriter xmlNormalizedNodeStreamWriter = XMLStreamNormalizedNodeStreamWriter.create(
-                xmlStreamWriter, schemaContext);
+                xmlStreamWriter, SCHEMA_CONTEXT);
 
         final NormalizedNodeWriter normalizedNodeWriter = NormalizedNodeWriter.forStreamWriter(
                 xmlNormalizedNodeStreamWriter);