2df397a9ed9058fbcfcdfbf7dd2148ccdeca9864
[controller.git] / opendaylight / sal / yang-prototype / yang / yang-data-impl / src / test / java / org / opendaylight / controller / yang / data / impl / NodeModificationBuilderImplTest.java
1 /*\r
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
3  *\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
7  */\r
8 package org.opendaylight.controller.yang.data.impl;\r
9 \r
10 import java.net.URI;\r
11 import java.util.Date;\r
12 \r
13 import junit.framework.Assert;\r
14 \r
15 import org.junit.Before;\r
16 import org.junit.Test;\r
17 import org.opendaylight.controller.yang.common.QName;\r
18 import org.opendaylight.controller.yang.data.api.CompositeNode;\r
19 import org.opendaylight.controller.yang.data.api.MutableCompositeNode;\r
20 import org.opendaylight.controller.yang.data.api.MutableSimpleNode;\r
21 import org.opendaylight.controller.yang.data.api.SimpleNode;\r
22 import org.opendaylight.controller.yang.model.api.SchemaContext;\r
23 import org.w3c.dom.Document;\r
24 \r
25 /**\r
26  * @author michal.rehak\r
27  * \r
28  */\r
29 public class NodeModificationBuilderImplTest {\r
30 \r
31     private SchemaContext schemaCtx;\r
32     private QName qName;\r
33     private CompositeNode network;\r
34     private NodeModificationBuilderImpl nodeModificationBuilder;\r
35 \r
36     /**\r
37      * prepare schemaContext\r
38      * @throws Exception \r
39      */\r
40     @Before\r
41     public void setUp() throws Exception {\r
42         schemaCtx = NodeHelper.loadSchemaContext();\r
43 \r
44         qName = new QName(\r
45                 new URI("urn:opendaylight:controller:network"), \r
46                 new Date(1369000800000L), "topos");\r
47         network = NodeHelper.buildTestConfigTree(qName);\r
48         \r
49         nodeModificationBuilder = new NodeModificationBuilderImpl(network, schemaCtx);\r
50     }\r
51 \r
52     /**\r
53      * Test method for\r
54      * {@link org.opendaylight.controller.yang.data.impl.NodeModificationBuilderImpl#buildDiffTree()}\r
55      * .\r
56      * @throws Exception \r
57      */\r
58     @Test\r
59     public void testBuildDiffTree() throws Exception {\r
60         Document networkShadow = NodeUtils.buildShadowDomTree(network);\r
61         SimpleNode<String> needle = NodeUtils.findNodeByXpath(networkShadow, \r
62                 "//node[node-id='nodeId_19']//termination-point[2]/tp-id");\r
63         \r
64         @SuppressWarnings("unchecked")\r
65         MutableSimpleNode<String> mutableNeedle = (MutableSimpleNode<String>) \r
66                 nodeModificationBuilder.getMutableEquivalent(needle);\r
67         \r
68         mutableNeedle.setValue("tpId_18x");\r
69         nodeModificationBuilder.replaceNode(mutableNeedle);\r
70         CompositeNode diffTree = nodeModificationBuilder.buildDiffTree();\r
71         \r
72         Document diffShadow = NodeUtils.buildShadowDomTree(diffTree);\r
73         NodeHelper.dumpDoc(diffShadow, System.out);\r
74     }\r
75 \r
76     /**\r
77      * Test method for\r
78      * {@link org.opendaylight.controller.yang.data.impl.NodeModificationBuilderImpl#getMutableEquivalent(org.opendaylight.controller.yang.data.api.Node)}\r
79      * .\r
80      */\r
81     @Test\r
82     public void testGetMutableEquivalent() {\r
83         MutableCompositeNode rootMutable = (MutableCompositeNode) \r
84                 nodeModificationBuilder.getMutableEquivalent(network);\r
85         \r
86         CompositeNode topologies = network.getCompositesByName("topologies").iterator().next();\r
87         CompositeNode topologiesMutable = rootMutable.getCompositesByName("topologies").iterator().next();\r
88         \r
89         Assert.assertSame(topologiesMutable, nodeModificationBuilder.getMutableEquivalent(topologies));\r
90     }\r
91 \r
92 }\r