Add sibling serialization test 41/82441/2
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 7 Jun 2019 09:37:47 +0000 (11:37 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Fri, 7 Jun 2019 11:51:56 +0000 (13:51 +0200)
This adds the model update and a simple test for sibling
serialization boundaries.

Change-Id: I0f67626f56d86bbbfd02486c376b66efabd3b81c
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/AbstractAnydataTest.java
yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/AnydataSerializeTest.java
yang/yang-data-codec-xml/src/test/resources/test-anydata.yang

index 9d7541b19547e8b0b571d9d13ad6496e18a55936..792d08f686c840ade6b83a132b58f534701b4ec6 100644 (file)
@@ -34,7 +34,14 @@ import org.xml.sax.SAXException;
 
 public abstract class AbstractAnydataTest {
     static final QName FOO_QNAME = QName.create("test-anydata", "foo");
+    static final QName CONT_QNAME = QName.create(FOO_QNAME, "cont");
+    static final QName CONT_ANY_QNAME = QName.create(FOO_QNAME, "cont-any");
+    static final QName CONT_LEAF_QNAME = QName.create(FOO_QNAME, "cont-leaf");
+
     static final NodeIdentifier FOO_NODEID = NodeIdentifier.create(FOO_QNAME);
+    static final NodeIdentifier CONT_NODEID = NodeIdentifier.create(CONT_QNAME);
+    static final NodeIdentifier CONT_ANY_NODEID = NodeIdentifier.create(CONT_ANY_QNAME);
+    static final NodeIdentifier CONT_LEAF_NODEID = NodeIdentifier.create(CONT_LEAF_QNAME);
 
     static SchemaContext SCHEMA_CONTEXT;
 
@@ -58,7 +65,7 @@ public abstract class AbstractAnydataTest {
         return new ByteArrayInputStream(str.getBytes(StandardCharsets.UTF_8));
     }
 
-    private static Document readXmlToDocument(final InputStream xmlContent) throws IOException, SAXException {
+    static Document readXmlToDocument(final InputStream xmlContent) throws IOException, SAXException {
         final Document doc = UntrustedXML.newDocumentBuilder().parse(xmlContent);
         doc.getDocumentElement().normalize();
         return doc;
index 19c5b84f2c8553b784fbca1ab423c0c4df92d50d..cd20873fa4d87e8fd130d516188ade6a939c9ad9 100644 (file)
@@ -39,6 +39,8 @@ import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWrit
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableAnydataNodeBuilder;
+import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
+import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafNodeBuilder;
 import org.opendaylight.yangtools.yang.model.api.AnyDataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.SchemaNode;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
@@ -196,4 +198,25 @@ public class AnydataSerializeTest extends AbstractAnydataTest {
 
         XMLAssert.assertXMLEqual(diff, true);
     }
+
+    @Test
+    public void testSiblingSerialize() throws IOException, SAXException, XMLStreamException {
+        final StringWriter writer = new StringWriter();
+        final XMLStreamWriter xmlStreamWriter = factory.createXMLStreamWriter(writer);
+
+        final NormalizedNodeStreamWriter xmlNormalizedNodeStreamWriter = XMLStreamNormalizedNodeStreamWriter.create(
+            xmlStreamWriter, SCHEMA_CONTEXT);
+        final NormalizedNodeWriter normalizedNodeWriter = NormalizedNodeWriter.forStreamWriter(
+            xmlNormalizedNodeStreamWriter);
+        normalizedNodeWriter.write(ImmutableContainerNodeBuilder.create().withNodeIdentifier(CONT_NODEID)
+            .withChild(ImmutableAnydataNodeBuilder.create(DOMSourceAnydata.class).withNodeIdentifier(CONT_ANY_NODEID)
+                .withValue(toDOMSource("<bar xmlns=\"test-anydata\"/>")).build())
+            .withChild(ImmutableLeafNodeBuilder.create().withNodeIdentifier(CONT_LEAF_NODEID).withValue("abc").build())
+            .build());
+        normalizedNodeWriter.flush();
+
+        final String serializedXml = writer.toString();
+        assertEquals("<cont xmlns=\"test-anydata\"><cont-any><bar xmlns=\"test-anydata\"></bar></cont-any>"
+                + "<cont-leaf>abc</cont-leaf></cont>", serializedXml);
+    }
 }
index d1410150bf496d9d631db55909cf237981aba1b2..0655955be45c9359f6922bc2327619f8b21c256e 100644 (file)
@@ -4,5 +4,13 @@ module test-anydata {
     prefix ta;
 
     anydata foo;
+
+    container cont {
+        anydata cont-any;
+
+        leaf cont-leaf {
+            type string;
+        }
+    }
 }