ebf2c0bf5881d3732189f1153d67bf21ab6010a9
[yangtools.git] / yang / yang-data-impl / src / test / java / org / opendaylight / yangtools / yang / data / impl / schema / test / NormalizedNodeUtilsTest.java
1 package org.opendaylight.yangtools.yang.data.impl.schema.test;
2
3 import static org.junit.Assert.assertNotNull;
4 import static org.junit.Assert.assertTrue;
5 import static org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.mapEntry;
6 import static org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.mapEntryBuilder;
7 import static org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.mapNodeBuilder;
8
9 import org.junit.Test;
10 import org.opendaylight.yangtools.yang.common.QName;
11 import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier;
12 import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.NodeIdentifier;
13 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
14 import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeUtils;
15 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
16
17 import com.google.common.base.Optional;
18
19 /**
20  *
21  * Schema structure of document is
22  *
23  * <pre>
24  * container root { 
25  *      list list-a {
26  *              key leaf-a;
27  *              leaf leaf-a;
28  *              choice choice-a {
29  *                      case one {
30  *                              leaf one;
31  *                      }
32  *                      case two-three {
33  *                              leaf two;
34  *                              leaf three;
35  *                      }
36  *              }
37  *              list list-b {
38  *                      key leaf-b;
39  *                      leaf leaf-b;
40  *              }
41  *      }
42  * }
43  * </pre>
44  *
45  */
46 public class NormalizedNodeUtilsTest {
47
48     private static final QName ROOT_QNAME = QName.create("urn:opendalight:controller:sal:dom:store:test", "2014-03-13",
49             "root");
50     private static final QName LIST_A_QNAME = QName.create(ROOT_QNAME, "list-a");
51     private static final QName LIST_B_QNAME = QName.create(ROOT_QNAME, "list-b");
52     private static final QName LEAF_A_QNAME = QName.create(ROOT_QNAME, "leaf-a");
53     private static final QName LEAF_B_QNAME = QName.create(ROOT_QNAME, "leaf-b");
54     private static final String FOO = "foo";
55     private static final String BAR = "bar";
56     private static final String ONE = "one";
57     private static final String TWO = "two";
58
59     private static final InstanceIdentifier LIST_A_FOO_PATH = InstanceIdentifier.builder()
60                 //.node(ROOT_QNAME)
61                 .node(LIST_A_QNAME)
62                 .nodeWithKey(LIST_A_QNAME, LEAF_A_QNAME, FOO)
63                 .build();
64     private static final InstanceIdentifier LIST_B_TWO_PATH = InstanceIdentifier.builder()
65                 //.node(ROOT_QNAME)
66                 .node(LIST_A_QNAME)
67                 .nodeWithKey(LIST_A_QNAME, LEAF_A_QNAME, BAR)
68                 .node(LIST_B_QNAME)
69                 .nodeWithKey(LIST_B_QNAME,LEAF_B_QNAME,TWO)
70                 .build();
71
72     /**
73      * Returns a test document
74      *
75      * <pre>
76      * root
77      *     list-a
78      *          leaf-a "foo"
79      *     list-a
80      *          leaf-a "bar"
81      *          list-b
82      *                  leaf-b "one"
83      *          list-b
84      *                  leaf-b "two"
85      *
86      * </pre>
87      *
88      * @return
89      */
90     public NormalizedNode<?, ?> createDocumentOne() {
91         return ImmutableContainerNodeBuilder
92                 .create()
93                 .withNodeIdentifier(new NodeIdentifier(ROOT_QNAME))
94                 .withChild(
95                         mapNodeBuilder(LIST_A_QNAME)
96                                 .withChild(mapEntry(LIST_A_QNAME, LEAF_A_QNAME, FOO))
97                                 .withChild(
98                                         mapEntryBuilder(LIST_A_QNAME, LEAF_A_QNAME, BAR).withChild(
99                                                 mapNodeBuilder(LIST_B_QNAME)
100                                                         .withChild(mapEntry(LIST_B_QNAME, LEAF_B_QNAME, ONE))
101                                                         .withChild(mapEntry(LIST_B_QNAME, LEAF_B_QNAME, TWO)).build())
102                                                 .build()).build()).build();
103
104     }
105
106     @Test
107     public void findNodeTest() {
108         NormalizedNode<?, ?> tree = createDocumentOne();
109         assertNotNull(tree);
110
111         Optional<NormalizedNode<?, ?>> listFooResult = NormalizedNodeUtils.findNode(tree, LIST_A_FOO_PATH);
112         assertTrue(listFooResult.isPresent());
113
114         Optional<NormalizedNode<?, ?>> listTwoResult = NormalizedNodeUtils.findNode(tree, LIST_B_TWO_PATH);
115         assertTrue(listTwoResult.isPresent());
116     }
117
118 }