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
diff --git a/opendaylight/md-sal/sal-protocolbuffer-encoding/src/test/java/org/opendaylight/controller/cluster/datastore/util/InstanceIdentifierUtilsTest.java b/opendaylight/md-sal/sal-protocolbuffer-encoding/src/test/java/org/opendaylight/controller/cluster/datastore/util/InstanceIdentifierUtilsTest.java
new file mode 100644 (file)
index 0000000..bb246fb
--- /dev/null
@@ -0,0 +1,141 @@
+package org.opendaylight.controller.cluster.datastore.util;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages;
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+
+public class InstanceIdentifierUtilsTest {
+
+    private static QName TEST_QNAME = QName.create("(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test?revision=2014-03-13)test");
+    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");
+    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");
+    private static QName NAME_QNAME = QName.create("(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test?revision=2014-03-13)name");
+
+    @Test
+    public void testSerializationOfNodeIdentifier(){
+        YangInstanceIdentifier.PathArgument p1 =
+            new YangInstanceIdentifier.NodeIdentifier(TEST_QNAME);
+
+        List<YangInstanceIdentifier.PathArgument> arguments = new ArrayList<>();
+
+        arguments.add(p1);
+
+        YangInstanceIdentifier expected = YangInstanceIdentifier.create(arguments);
+
+        NormalizedNodeMessages.InstanceIdentifier instanceIdentifier =
+            InstanceIdentifierUtils.toSerializable(expected);
+
+        YangInstanceIdentifier actual =
+            InstanceIdentifierUtils.fromSerializable(instanceIdentifier);
+
+
+        Assert.assertEquals(expected.getLastPathArgument(),
+            actual.getLastPathArgument());
+
+
+    }
+
+    @Test
+    public void testSerializationOfNodeWithValue(){
+
+        withValue((short) 1);
+        withValue((long) 2);
+        withValue(3);
+        withValue(true);
+
+    }
+
+    private void withValue(Object value){
+        YangInstanceIdentifier.PathArgument p1 =
+            new YangInstanceIdentifier.NodeIdentifier(TEST_QNAME);
+
+        YangInstanceIdentifier.PathArgument p2 =
+            new YangInstanceIdentifier.NodeWithValue(NODE_WITH_VALUE_QNAME, value);
+
+
+        List<YangInstanceIdentifier.PathArgument> arguments = new ArrayList<>();
+
+        arguments.add(p1);
+        arguments.add(p2);
+
+        YangInstanceIdentifier expected = YangInstanceIdentifier.create(arguments);
+
+        NormalizedNodeMessages.InstanceIdentifier instanceIdentifier =
+            InstanceIdentifierUtils.toSerializable(expected);
+
+        YangInstanceIdentifier actual =
+            InstanceIdentifierUtils.fromSerializable(instanceIdentifier);
+
+
+        Assert.assertEquals(expected.getLastPathArgument(),
+            actual.getLastPathArgument());
+    }
+
+
+    @Test
+    public void testSerializationOfNodeIdentifierWithPredicates(){
+
+        withPredicates((short) 1);
+        withPredicates((long) 2);
+        withPredicates(3);
+        withPredicates(true);
+
+    }
+
+    private void withPredicates(Object value){
+        YangInstanceIdentifier.PathArgument p1 =
+            new YangInstanceIdentifier.NodeIdentifier(TEST_QNAME);
+
+        YangInstanceIdentifier.PathArgument p2 =
+            new YangInstanceIdentifier.NodeIdentifierWithPredicates(NODE_WITH_PREDICATES_QNAME, NAME_QNAME, value);
+
+
+        List<YangInstanceIdentifier.PathArgument> arguments = new ArrayList<>();
+
+        arguments.add(p1);
+        arguments.add(p2);
+
+        YangInstanceIdentifier expected = YangInstanceIdentifier.create(arguments);
+
+        NormalizedNodeMessages.InstanceIdentifier instanceIdentifier =
+            InstanceIdentifierUtils.toSerializable(expected);
+
+        YangInstanceIdentifier actual =
+            InstanceIdentifierUtils.fromSerializable(instanceIdentifier);
+
+
+        Assert.assertEquals(expected.getLastPathArgument(),
+            actual.getLastPathArgument());
+    }
+
+    @Test
+    public void testAugmentationIdentifier(){
+        YangInstanceIdentifier.PathArgument p1 =
+            new YangInstanceIdentifier.AugmentationIdentifier(new HashSet(Arrays.asList(TEST_QNAME)));
+
+        List<YangInstanceIdentifier.PathArgument> arguments = new ArrayList<>();
+
+        arguments.add(p1);
+
+        YangInstanceIdentifier expected = YangInstanceIdentifier.create(arguments);
+
+        NormalizedNodeMessages.InstanceIdentifier instanceIdentifier =
+            InstanceIdentifierUtils.toSerializable(expected);
+
+        YangInstanceIdentifier actual =
+            InstanceIdentifierUtils.fromSerializable(instanceIdentifier);
+
+
+        Assert.assertEquals(expected.getLastPathArgument(),
+            actual.getLastPathArgument());
+
+    }
+
+}