*/\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.Map;\r
\r
import org.junit.Assert;\r
+import org.junit.Before;\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.MutableCompositeNode;\r
import org.opendaylight.controller.yang.data.api.Node;\r
import org.opendaylight.controller.yang.data.api.NodeModification;\r
+import org.opendaylight.controller.yang.data.api.SimpleNode;\r
import org.w3c.dom.Document;\r
\r
/**\r
* \r
*/\r
public class NodeFactoryTest {\r
+ \r
+ private QName qName;\r
+ private CompositeNode network;\r
+\r
+ private String ns;\r
+ private Document networkShadow;\r
+\r
+\r
+ /**\r
+ * @throws Exception\r
+ */\r
+ @Before\r
+ public void setUp() throws Exception {\r
+ ns = "urn:ietf:params:xml:ns:netconf:base:1.0";\r
+ qName = new QName(\r
+ new URI(ns), \r
+ new Date(42), null);\r
+ network = NodeHelper.buildTestConfigTree(qName);\r
+ networkShadow = NodeUtils.buildShadowDomTree(network);\r
+ NodeHelper.compareXmlTree(networkShadow, "./config02-shadow.xml", getClass());\r
+ }\r
\r
/**\r
* Test method for methods creating immutable nodes in\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
+ Assert.assertEquals(2, network.getChildren().size());\r
+ CompositeNode tpList = NodeUtils.findNodeByXpath(networkShadow, \r
+ NodeHelper.AddNamespaceToPattern(\r
+ "//{0}node[{0}node-id/text()='nodeId_19']/{0}termination-points", ns));\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
+ * Test method for methods creating immutable and mutable nodes:\r
+ * {@link NodeFactory#createMutableCompositeNode(QName, CompositeNode, List, ModifyAction, CompositeNode)},\r
+ * {@link NodeFactory#createMutableSimpleNode(QName, CompositeNode, Object, ModifyAction, SimpleNode)}\r
* @throws Exception \r
*/\r
@Test\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
+ value.add(NodeFactory.createImmutableSimpleNode(new QName(qName, "name"), null, "Ethernet0/0"));\r
+ value.add(NodeFactory.createImmutableSimpleNode(new QName(qName, "mtu"), null, 1500));\r
\r
- CompositeNodeModificationTOImpl ifNode = NodeFactory.createCompositeNodeModification(\r
- new QName(qName, "interface"), null, value, ModifyAction.DELETE);\r
+ MutableCompositeNode ifNode = NodeFactory.createMutableCompositeNode(\r
+ new QName(qName, "interface"), null, value, ModifyAction.DELETE, null);\r
+ ifNode.init();\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
+ value.add(NodeFactory.createImmutableSimpleNode(new QName(qName, "name"), null, "Ethernet1/0"));\r
+ value.add(NodeFactory.createMutableSimpleNode(new QName(qName, "mtu"), null, 1501, ModifyAction.REMOVE, null));\r
\r
- CompositeNode ifNode2 = NodeFactory.createCompositeNode(new QName(qName, "interface"), null, value);\r
+ CompositeNode ifNode2 = NodeFactory.createImmutableCompositeNode(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
+ CompositeNode topNode = NodeFactory.createImmutableCompositeNode(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
+ CompositeNode root = NodeFactory.createImmutableCompositeNode(new QName(qName, "config"), null, value);\r
+ Document shadowConfig = NodeUtils.buildShadowDomTree(root);\r
+ NodeHelper.compareXmlTree(shadowConfig, "./mutableNodesConfig.xml", getClass());\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
+ NodeModification interfaceMod = topNode.getCompositesByName("interface").get(0);\r
Assert.assertEquals(ModifyAction.DELETE, interfaceMod.getModificationAction());\r
}\r
\r
/**\r
- * test modifications builder\r
+ * test of {@link NodeFactory#copyDeepAsMutable(CompositeNode, Map)}\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
+ public void testCopyDeepAsMutable() throws Exception {\r
Map<Node<?>, Node<?>> mutableToOrig = new HashMap<>();\r
- MutableCompositeNode mutableNetwork = NodeFactory.copyDeepNode(network, mutableToOrig );\r
+ CompositeNode mutableNetwork = NodeFactory.copyDeepAsMutable(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
+ NodeHelper.compareXmlTree(mutableNetworkShadow, "./config02-shadow.xml", getClass());\r
+ \r
+ CompositeNode immutableNetwork = NodeFactory.copyDeepAsImmutable(mutableNetwork, null);\r
+ Assert.assertEquals(network, immutableNetwork);\r
+ }\r
+ \r
+ \r
+ /**\r
+ * test of {@link NodeFactory#copyDeepAsImmutable(CompositeNode, Map)}\r
+ * @throws Exception \r
+ */\r
+ @Test\r
+ public void testCopyDeepAsImmutable() throws Exception {\r
+ Map<Node<?>, Node<?>> mutableToOrig = new HashMap<>();\r
+ CompositeNode immutableNetwork = NodeFactory.copyDeepAsImmutable(network, mutableToOrig);\r
+ \r
+ Document mutableNetworkShadow = NodeUtils.buildShadowDomTree(immutableNetwork);\r
+ NodeHelper.compareXmlTree(mutableNetworkShadow, "./config02-shadow.xml", getClass());\r
+ \r
+ Assert.assertEquals(network, immutableNetwork);\r
}\r
\r
}\r