Merge "Serialization/Deserialization and a host of other fixes"
[controller.git] / opendaylight / md-sal / sal-protocolbuffer-encoding / src / test / java / org / opendaylight / controller / cluster / datastore / util / InstanceIdentifierUtilsTest.java
1 package org.opendaylight.controller.cluster.datastore.util;
2
3 import org.junit.Assert;
4 import org.junit.Test;
5 import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages;
6 import org.opendaylight.yangtools.yang.common.QName;
7 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
8
9 import java.util.ArrayList;
10 import java.util.Arrays;
11 import java.util.HashSet;
12 import java.util.List;
13
14 public class InstanceIdentifierUtilsTest {
15
16     private static QName TEST_QNAME = QName.create("(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test?revision=2014-03-13)test");
17     private static QName NODE_WITH_VALUE_QNAME = QName.create("(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test?revision=2014-03-13)value");
18     private static QName NODE_WITH_PREDICATES_QNAME = QName.create("(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test?revision=2014-03-13)pred");
19     private static QName NAME_QNAME = QName.create("(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test?revision=2014-03-13)name");
20
21     @Test
22     public void testSerializationOfNodeIdentifier(){
23         YangInstanceIdentifier.PathArgument p1 =
24             new YangInstanceIdentifier.NodeIdentifier(TEST_QNAME);
25
26         List<YangInstanceIdentifier.PathArgument> arguments = new ArrayList<>();
27
28         arguments.add(p1);
29
30         YangInstanceIdentifier expected = YangInstanceIdentifier.create(arguments);
31
32         NormalizedNodeMessages.InstanceIdentifier instanceIdentifier =
33             InstanceIdentifierUtils.toSerializable(expected);
34
35         YangInstanceIdentifier actual =
36             InstanceIdentifierUtils.fromSerializable(instanceIdentifier);
37
38
39         Assert.assertEquals(expected.getLastPathArgument(),
40             actual.getLastPathArgument());
41
42
43     }
44
45     @Test
46     public void testSerializationOfNodeWithValue(){
47
48         withValue((short) 1);
49         withValue((long) 2);
50         withValue(3);
51         withValue(true);
52
53     }
54
55     private void withValue(Object value){
56         YangInstanceIdentifier.PathArgument p1 =
57             new YangInstanceIdentifier.NodeIdentifier(TEST_QNAME);
58
59         YangInstanceIdentifier.PathArgument p2 =
60             new YangInstanceIdentifier.NodeWithValue(NODE_WITH_VALUE_QNAME, value);
61
62
63         List<YangInstanceIdentifier.PathArgument> arguments = new ArrayList<>();
64
65         arguments.add(p1);
66         arguments.add(p2);
67
68         YangInstanceIdentifier expected = YangInstanceIdentifier.create(arguments);
69
70         NormalizedNodeMessages.InstanceIdentifier instanceIdentifier =
71             InstanceIdentifierUtils.toSerializable(expected);
72
73         YangInstanceIdentifier actual =
74             InstanceIdentifierUtils.fromSerializable(instanceIdentifier);
75
76
77         Assert.assertEquals(expected.getLastPathArgument(),
78             actual.getLastPathArgument());
79     }
80
81
82     @Test
83     public void testSerializationOfNodeIdentifierWithPredicates(){
84
85         withPredicates((short) 1);
86         withPredicates((long) 2);
87         withPredicates(3);
88         withPredicates(true);
89
90     }
91
92     private void withPredicates(Object value){
93         YangInstanceIdentifier.PathArgument p1 =
94             new YangInstanceIdentifier.NodeIdentifier(TEST_QNAME);
95
96         YangInstanceIdentifier.PathArgument p2 =
97             new YangInstanceIdentifier.NodeIdentifierWithPredicates(NODE_WITH_PREDICATES_QNAME, NAME_QNAME, value);
98
99
100         List<YangInstanceIdentifier.PathArgument> arguments = new ArrayList<>();
101
102         arguments.add(p1);
103         arguments.add(p2);
104
105         YangInstanceIdentifier expected = YangInstanceIdentifier.create(arguments);
106
107         NormalizedNodeMessages.InstanceIdentifier instanceIdentifier =
108             InstanceIdentifierUtils.toSerializable(expected);
109
110         YangInstanceIdentifier actual =
111             InstanceIdentifierUtils.fromSerializable(instanceIdentifier);
112
113
114         Assert.assertEquals(expected.getLastPathArgument(),
115             actual.getLastPathArgument());
116     }
117
118     @Test
119     public void testAugmentationIdentifier(){
120         YangInstanceIdentifier.PathArgument p1 =
121             new YangInstanceIdentifier.AugmentationIdentifier(new HashSet(Arrays.asList(TEST_QNAME)));
122
123         List<YangInstanceIdentifier.PathArgument> arguments = new ArrayList<>();
124
125         arguments.add(p1);
126
127         YangInstanceIdentifier expected = YangInstanceIdentifier.create(arguments);
128
129         NormalizedNodeMessages.InstanceIdentifier instanceIdentifier =
130             InstanceIdentifierUtils.toSerializable(expected);
131
132         YangInstanceIdentifier actual =
133             InstanceIdentifierUtils.fromSerializable(instanceIdentifier);
134
135
136         Assert.assertEquals(expected.getLastPathArgument(),
137             actual.getLastPathArgument());
138
139     }
140
141 }