2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
\r
4 * This program and the accompanying materials are made available under the
\r
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
\r
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
\r
8 package org.opendaylight.controller.yang.data.impl;
\r
10 import java.net.URI;
\r
11 import java.util.ArrayList;
\r
12 import java.util.Date;
\r
13 import java.util.HashMap;
\r
14 import java.util.List;
\r
15 import java.util.Map;
\r
17 import org.junit.Assert;
\r
18 import org.junit.Before;
\r
19 import org.junit.Test;
\r
20 import org.opendaylight.controller.yang.common.QName;
\r
21 import org.opendaylight.controller.yang.data.api.CompositeNode;
\r
22 import org.opendaylight.controller.yang.data.api.ModifyAction;
\r
23 import org.opendaylight.controller.yang.data.api.MutableCompositeNode;
\r
24 import org.opendaylight.controller.yang.data.api.Node;
\r
25 import org.opendaylight.controller.yang.data.api.NodeModification;
\r
26 import org.opendaylight.controller.yang.data.api.SimpleNode;
\r
27 import org.w3c.dom.Document;
\r
30 * @author michal.rehak
\r
33 public class NodeFactoryTest {
\r
35 private QName qName;
\r
36 private CompositeNode network;
\r
39 private Document networkShadow;
\r
46 public void setUp() throws Exception {
\r
47 ns = "urn:ietf:params:xml:ns:netconf:base:1.0";
\r
50 new Date(42), null);
\r
51 network = NodeHelper.buildTestConfigTree(qName);
\r
52 networkShadow = NodeUtils.buildShadowDomTree(network);
\r
53 NodeHelper.compareXmlTree(networkShadow, "./config02-shadow.xml", getClass());
\r
57 * Test method for methods creating immutable nodes in
\r
58 * {@link org.opendaylight.controller.yang.data.impl.NodeFactory}.
\r
59 * @throws Exception
\r
62 public void testImmutableNodes() throws Exception {
\r
63 Assert.assertEquals(2, network.getChildren().size());
\r
64 CompositeNode tpList = NodeUtils.findNodeByXpath(networkShadow,
\r
65 NodeHelper.AddNamespaceToPattern(
\r
66 "//{0}node[{0}node-id/text()='nodeId_19']/{0}termination-points", ns));
\r
69 Assert.assertEquals(2, tpList.getCompositesByName("termination-point").size());
\r
73 * Test method for methods creating immutable and mutable nodes:
\r
74 * {@link NodeFactory#createMutableCompositeNode(QName, CompositeNode, List, ModifyAction, CompositeNode)},
\r
75 * {@link NodeFactory#createMutableSimpleNode(QName, CompositeNode, Object, ModifyAction, SimpleNode)}
\r
76 * @throws Exception
\r
79 public void testMutableNodes() throws Exception {
\r
81 // <top xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
\r
82 // <interface xc:operation="delete">
\r
83 // <name>Ethernet0/0</name>
\r
87 // <name>Ethernet0/1</name>
\r
94 List<Node<?>> value = new ArrayList<Node<?>>();
\r
95 value.add(NodeFactory.createImmutableSimpleNode(new QName(qName, "name"), null, "Ethernet0/0"));
\r
96 value.add(NodeFactory.createImmutableSimpleNode(new QName(qName, "mtu"), null, 1500));
\r
98 MutableCompositeNode ifNode = NodeFactory.createMutableCompositeNode(
\r
99 new QName(qName, "interface"), null, value, ModifyAction.DELETE, null);
\r
101 NodeHelper.assignParentToChildren(ifNode);
\r
103 value = new ArrayList<Node<?>>();
\r
104 value.add(NodeFactory.createImmutableSimpleNode(new QName(qName, "name"), null, "Ethernet1/0"));
\r
105 value.add(NodeFactory.createMutableSimpleNode(new QName(qName, "mtu"), null, 1501, ModifyAction.REMOVE, null));
\r
107 CompositeNode ifNode2 = NodeFactory.createImmutableCompositeNode(new QName(qName, "interface"), null, value);
\r
108 NodeHelper.assignParentToChildren(ifNode2);
\r
110 value = new ArrayList<Node<?>>();
\r
112 value.add(ifNode2);
\r
114 CompositeNode topNode = NodeFactory.createImmutableCompositeNode(new QName(qName, "top"), null, value);
\r
115 NodeHelper.assignParentToChildren(topNode);
\r
116 value = new ArrayList<Node<?>>();
\r
117 value.add(topNode);
\r
119 CompositeNode root = NodeFactory.createImmutableCompositeNode(new QName(qName, "config"), null, value);
\r
120 Document shadowConfig = NodeUtils.buildShadowDomTree(root);
\r
121 NodeHelper.compareXmlTree(shadowConfig, "./mutableNodesConfig.xml", getClass());
\r
123 Assert.assertEquals(1, root.getChildren().size());
\r
124 Assert.assertEquals(1, ifNode.getSimpleNodesByName("name").size());
\r
125 Assert.assertEquals(1, ifNode.getSimpleNodesByName("mtu").size());
\r
126 Assert.assertEquals(2, topNode.getCompositesByName("interface").size());
\r
127 NodeModification interfaceMod = topNode.getCompositesByName("interface").get(0);
\r
128 Assert.assertEquals(ModifyAction.DELETE, interfaceMod.getModificationAction());
\r
132 * test of {@link NodeFactory#copyDeepAsMutable(CompositeNode, Map)}
\r
133 * @throws Exception
\r
136 public void testCopyDeepAsMutable() throws Exception {
\r
137 Map<Node<?>, Node<?>> mutableToOrig = new HashMap<>();
\r
138 CompositeNode mutableNetwork = NodeFactory.copyDeepAsMutable(network, mutableToOrig);
\r
140 Document mutableNetworkShadow = NodeUtils.buildShadowDomTree(mutableNetwork);
\r
142 NodeHelper.compareXmlTree(mutableNetworkShadow, "./config02-shadow.xml", getClass());
\r
144 CompositeNode immutableNetwork = NodeFactory.copyDeepAsImmutable(mutableNetwork, null);
\r
145 Assert.assertEquals(network, immutableNetwork);
\r
150 * test of {@link NodeFactory#copyDeepAsImmutable(CompositeNode, Map)}
\r
151 * @throws Exception
\r
154 public void testCopyDeepAsImmutable() throws Exception {
\r
155 Map<Node<?>, Node<?>> mutableToOrig = new HashMap<>();
\r
156 CompositeNode immutableNetwork = NodeFactory.copyDeepAsImmutable(network, mutableToOrig);
\r
158 Document mutableNetworkShadow = NodeUtils.buildShadowDomTree(immutableNetwork);
\r
159 NodeHelper.compareXmlTree(mutableNetworkShadow, "./config02-shadow.xml", getClass());
\r
161 Assert.assertEquals(network, immutableNetwork);
\r