--- /dev/null
+/*\r
+ * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+package org.opendaylight.controller.yang.data.impl;\r
+\r
+import java.io.ByteArrayOutputStream;\r
+import java.io.PrintStream;\r
+import java.net.URI;\r
+import java.util.ArrayList;\r
+import java.util.Date;\r
+import java.util.HashMap;\r
+import java.util.List;\r
+import java.util.Map;\r
+\r
+import org.junit.Assert;\r
+import org.junit.Test;\r
+import org.opendaylight.controller.yang.common.QName;\r
+import org.opendaylight.controller.yang.data.api.CompositeNode;\r
+import org.opendaylight.controller.yang.data.api.ModifyAction;\r
+import org.opendaylight.controller.yang.data.api.MutableCompositeNode;\r
+import org.opendaylight.controller.yang.data.api.Node;\r
+import org.opendaylight.controller.yang.data.api.NodeModification;\r
+import org.w3c.dom.Document;\r
+\r
+/**\r
+ * @author michal.rehak\r
+ * \r
+ */\r
+public class NodeFactoryTest {\r
+\r
+ /**\r
+ * Test method for methods creating immutable nodes in\r
+ * {@link org.opendaylight.controller.yang.data.impl.NodeFactory}.\r
+ * @throws Exception \r
+ */\r
+ @Test\r
+ public void testImmutableNodes() throws Exception {\r
+ QName qName = new QName(\r
+ new URI("urn:opendaylight:controller:network"), \r
+ new Date(42), "yang-data-impl-immutableTest_", null);\r
+ \r
+ CompositeNode network = NodeHelper.buildTestConfigTree(qName);\r
+ \r
+ \r
+ Assert.assertEquals(1, network.getChildren().size());\r
+ Document domTree = NodeUtils.buildShadowDomTree(network);\r
+ NodeHelper.dumpDoc(domTree, System.out);\r
+ \r
+ CompositeNode tpList = NodeUtils.findNodeByXpath(domTree, \r
+ "//node[node-id/text()='nodeId_19']/termination-points");\r
+ \r
+ \r
+ Assert.assertEquals(2, tpList.getCompositesByName("termination-point").size());\r
+// Assert.assertEquals(1, topologies.getCompositesByName("topology").size());\r
+// Assert.assertEquals(2, destination.getChildren().size());\r
+ }\r
+\r
+ /**\r
+ * Test method for methods creating immutable nodes in\r
+ * {@link org.opendaylight.controller.yang.data.impl.NodeFactory}.\r
+ * @throws Exception \r
+ */\r
+ @Test\r
+ public void testMutableNodes() throws Exception {\r
+ // <config>\r
+ // <top xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">\r
+ // <interface xc:operation="delete">\r
+ // <name>Ethernet0/0</name>\r
+ // <mtu>1500</mtu>\r
+ // </interface>\r
+ // <interface>\r
+ // <name>Ethernet0/1</name>\r
+ // <mtu>1501</mtu>\r
+ // </interface>\r
+ // </top>\r
+ // </config>\r
+ \r
+ QName qName = new QName(\r
+ new URI("urn:ietf:params:xml:ns:netconf:base:1.0"), \r
+ new Date(42), "yang-data-impl-mutableTest");\r
+ \r
+ List<Node<?>> value = new ArrayList<Node<?>>(); \r
+ value.add(NodeFactory.createSimpleNode(new QName(qName, "name"), null, "Ethernet0/0"));\r
+ value.add(NodeFactory.createSimpleNode(new QName(qName, "mtu"), null, 1500));\r
+ \r
+ CompositeNodeModificationTOImpl ifNode = NodeFactory.createCompositeNodeModification(\r
+ new QName(qName, "interface"), null, value, ModifyAction.DELETE);\r
+ NodeHelper.assignParentToChildren(ifNode);\r
+ \r
+ value = new ArrayList<Node<?>>(); \r
+ value.add(NodeFactory.createSimpleNode(new QName(qName, "name"), null, "Ethernet1/0"));\r
+ value.add(NodeFactory.createSimpleNode(new QName(qName, "mtu"), null, 1501));\r
+ \r
+ CompositeNode ifNode2 = NodeFactory.createCompositeNode(new QName(qName, "interface"), null, value);\r
+ NodeHelper.assignParentToChildren(ifNode2);\r
+\r
+ value = new ArrayList<Node<?>>(); \r
+ value.add(ifNode);\r
+ value.add(ifNode2);\r
+ \r
+ CompositeNode topNode = NodeFactory.createCompositeNode(new QName(qName, "top"), null, value);\r
+ NodeHelper.assignParentToChildren(topNode);\r
+ value = new ArrayList<Node<?>>(); \r
+ value.add(topNode);\r
+ \r
+ CompositeNode root = NodeFactory.createCompositeNode(new QName(qName, "config"), null, value);\r
+ \r
+ \r
+ Assert.assertEquals(1, root.getChildren().size());\r
+ Assert.assertEquals(1, ifNode.getSimpleNodesByName("name").size());\r
+ Assert.assertEquals(1, ifNode.getSimpleNodesByName("mtu").size());\r
+ Assert.assertEquals(2, topNode.getCompositesByName("interface").size());\r
+ NodeModification interfaceMod = (NodeModification) \r
+ topNode.getCompositesByName("interface").get(0);\r
+ Assert.assertEquals(ModifyAction.DELETE, interfaceMod.getModificationAction());\r
+ }\r
+\r
+ /**\r
+ * test modifications builder\r
+ * @throws Exception \r
+ */\r
+ @Test\r
+ public void testCopyDeepNode() throws Exception {\r
+ QName qName = new QName(\r
+ new URI("urn:opendaylight:controller:network"), \r
+ new Date(42), "yang-data-impl-immutableTest_", null);\r
+ \r
+ CompositeNode network = NodeHelper.buildTestConfigTree(qName);\r
+ Map<Node<?>, Node<?>> mutableToOrig = new HashMap<>();\r
+ MutableCompositeNode mutableNetwork = NodeFactory.copyDeepNode(network, mutableToOrig );\r
+\r
+ Document networkShadow = NodeUtils.buildShadowDomTree(network);\r
+ ByteArrayOutputStream expected = new ByteArrayOutputStream();\r
+ NodeHelper.dumpDoc(networkShadow, new PrintStream(expected));\r
+ \r
+ Document mutableNetworkShadow = NodeUtils.buildShadowDomTree(mutableNetwork);\r
+ ByteArrayOutputStream actual = new ByteArrayOutputStream();\r
+ NodeHelper.dumpDoc(mutableNetworkShadow, new PrintStream(actual));\r
+ \r
+ Assert.assertEquals(new String(expected.toByteArray()), new String(actual.toByteArray()));\r
+ }\r
+\r
+}\r