X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-clustering-commons%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fnode%2Futils%2Fserialization%2FValueSerializerTest.java;h=f5eecf33d90aa0df9afe164c3d72fc3663c2b14d;hp=af7a385cbbe0876000eb6d8a457ef4e5312f8fa3;hb=0717c782e9621409f9623f43ba9f6173e4382a44;hpb=9cd4e7995210f8381892004373acc71c8b3ae7af diff --git a/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/ValueSerializerTest.java b/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/ValueSerializerTest.java index af7a385cbb..f5eecf33d9 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/ValueSerializerTest.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/ValueSerializerTest.java @@ -1,23 +1,24 @@ package org.opendaylight.controller.cluster.datastore.node.utils.serialization; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.mock; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; +import com.google.protobuf.ByteString; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.util.Arrays; +import java.util.Set; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; +import org.mockito.Mockito; import org.opendaylight.controller.cluster.datastore.util.TestModel; 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.math.BigDecimal; -import java.math.BigInteger; -import java.util.Set; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.mock; - public class ValueSerializerTest{ @Rule @@ -27,14 +28,15 @@ public class ValueSerializerTest{ public void testSerializeShort(){ short v1 = 5; NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder(); - ValueSerializer.serialize(builder, mock(NormalizedNodeSerializationContext.class), v1); + ValueSerializer.serialize(builder, mock(QNameSerializationContext.class), v1); assertEquals(ValueType.SHORT_TYPE.ordinal(), builder.getIntValueType()); assertEquals("5", builder.getValue()); - NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = NormalizedNodeMessages.PathArgumentAttribute.newBuilder(); + NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = + NormalizedNodeMessages.PathArgumentAttribute.newBuilder(); - ValueSerializer.serialize(builder1, mock(NormalizedNodeSerializationContext.class), v1); + ValueSerializer.serialize(builder1, mock(QNameSerializationContext.class), v1); assertEquals(ValueType.SHORT_TYPE.ordinal(), builder1.getType()); assertEquals("5", builder.getValue()); @@ -49,16 +51,15 @@ public class ValueSerializerTest{ NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder(); - ValueSerializer.serialize(builder, mock( - NormalizedNodeSerializationContext.class), expected); + ValueSerializer.serialize(builder, mock(QNameSerializationContext.class), expected); assertEquals(ValueType.INT_TYPE.ordinal(), builder.getIntValueType()); assertEquals("243", builder.getValue()); - NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = NormalizedNodeMessages.PathArgumentAttribute.newBuilder(); + NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = + NormalizedNodeMessages.PathArgumentAttribute.newBuilder(); - ValueSerializer.serialize(builder1, mock( - NormalizedNodeSerializationContext.class), expected); + ValueSerializer.serialize(builder1, mock(QNameSerializationContext.class), expected); assertEquals(ValueType.INT_TYPE.ordinal(), builder1.getType()); assertEquals("243", builder1.getValue()); @@ -71,16 +72,14 @@ public class ValueSerializerTest{ public void testSerializeLong(){ long v1 = 5; NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder(); - ValueSerializer.serialize(builder, mock( - NormalizedNodeSerializationContext.class), v1); + ValueSerializer.serialize(builder, mock(QNameSerializationContext.class), v1); assertEquals(ValueType.LONG_TYPE.ordinal(), builder.getIntValueType()); assertEquals("5", builder.getValue()); NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = NormalizedNodeMessages.PathArgumentAttribute.newBuilder(); - ValueSerializer.serialize(builder1, mock( - NormalizedNodeSerializationContext.class), v1); + ValueSerializer.serialize(builder1, mock(QNameSerializationContext.class), v1); assertEquals(ValueType.LONG_TYPE.ordinal(), builder1.getType()); assertEquals("5", builder1.getValue()); @@ -91,16 +90,14 @@ public class ValueSerializerTest{ public void testSerializeByte(){ byte v1 = 5; NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder(); - ValueSerializer.serialize(builder, mock( - NormalizedNodeSerializationContext.class), v1); + ValueSerializer.serialize(builder, mock(QNameSerializationContext.class), v1); assertEquals(ValueType.BYTE_TYPE.ordinal(), builder.getIntValueType()); assertEquals("5", builder.getValue()); NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = NormalizedNodeMessages.PathArgumentAttribute.newBuilder(); - ValueSerializer.serialize(builder1, mock( - NormalizedNodeSerializationContext.class), v1); + ValueSerializer.serialize(builder1, mock(QNameSerializationContext.class), v1); assertEquals(ValueType.BYTE_TYPE.ordinal(), builder1.getType()); assertEquals("5", builder1.getValue()); @@ -110,8 +107,7 @@ public class ValueSerializerTest{ @Test public void testSerializeBits(){ NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder(); - ValueSerializer.serialize(builder, mock( - NormalizedNodeSerializationContext.class), + ValueSerializer.serialize(builder, mock(QNameSerializationContext.class), ImmutableSet.of("foo", "bar")); assertEquals(ValueType.BITS_TYPE.ordinal(), builder.getIntValueType()); @@ -120,12 +116,12 @@ public class ValueSerializerTest{ NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = NormalizedNodeMessages.PathArgumentAttribute.newBuilder(); - ValueSerializer.serialize(builder1, mock( - NormalizedNodeSerializationContext.class), + ValueSerializer.serialize(builder1, mock(QNameSerializationContext.class), ImmutableSet.of("foo", "bar")); assertEquals(ValueType.BITS_TYPE.ordinal(), builder1.getType()); - assertEquals("[foo, bar]", builder1.getValue()); + assertTrue( "foo not in bits", builder1.getBitsValueList().contains("foo")); + assertTrue( "bar not in bits", builder1.getBitsValueList().contains("bar")); } @@ -134,8 +130,7 @@ public class ValueSerializerTest{ expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Expected value type to be Bits but was :"); NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder(); - ValueSerializer.serialize(builder, mock( - NormalizedNodeSerializationContext.class), + ValueSerializer.serialize(builder, mock(QNameSerializationContext.class), ImmutableSet.of(1, 2)); } @@ -143,16 +138,14 @@ public class ValueSerializerTest{ @Test public void testSerializeEmptyString(){ NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder(); - ValueSerializer.serialize(builder, mock( - NormalizedNodeSerializationContext.class),""); + ValueSerializer.serialize(builder, mock(QNameSerializationContext.class),""); assertEquals(ValueType.STRING_TYPE.ordinal(), builder.getIntValueType()); assertEquals("", builder.getValue()); NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = NormalizedNodeMessages.PathArgumentAttribute.newBuilder(); - ValueSerializer.serialize(builder1, mock( - NormalizedNodeSerializationContext.class),""); + ValueSerializer.serialize(builder1, mock(QNameSerializationContext.class),""); assertEquals(ValueType.STRING_TYPE.ordinal(), builder1.getType()); assertEquals("", builder1.getValue()); @@ -162,16 +155,15 @@ public class ValueSerializerTest{ @Test public void testSerializeString(){ NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder(); - ValueSerializer.serialize(builder, mock( - NormalizedNodeSerializationContext.class),"foo"); + ValueSerializer.serialize(builder, mock(QNameSerializationContext.class),"foo"); assertEquals(ValueType.STRING_TYPE.ordinal(), builder.getIntValueType()); assertEquals("foo", builder.getValue()); - NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = NormalizedNodeMessages.PathArgumentAttribute.newBuilder(); + NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = + NormalizedNodeMessages.PathArgumentAttribute.newBuilder(); - ValueSerializer.serialize(builder1, mock( - NormalizedNodeSerializationContext.class),"foo"); + ValueSerializer.serialize(builder1, mock(QNameSerializationContext.class),"foo"); assertEquals(ValueType.STRING_TYPE.ordinal(), builder1.getType()); assertEquals("foo", builder1.getValue()); @@ -183,15 +175,14 @@ public class ValueSerializerTest{ public void testSerializeBoolean(){ boolean v1 = true; NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder(); - ValueSerializer.serialize(builder, mock( - NormalizedNodeSerializationContext.class), v1); + ValueSerializer.serialize(builder, mock(QNameSerializationContext.class), v1); assertEquals(ValueType.BOOL_TYPE.ordinal(), builder.getIntValueType()); assertEquals("true", builder.getValue()); - NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = NormalizedNodeMessages.PathArgumentAttribute.newBuilder(); - ValueSerializer.serialize(builder1, mock( - NormalizedNodeSerializationContext.class), v1); + NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = + NormalizedNodeMessages.PathArgumentAttribute.newBuilder(); + ValueSerializer.serialize(builder1, mock(QNameSerializationContext.class), v1); assertEquals(ValueType.BOOL_TYPE.ordinal(), builder1.getType()); assertEquals("true", builder1.getValue()); @@ -201,16 +192,14 @@ public class ValueSerializerTest{ public void testSerializeQName(){ QName v1 = TestModel.TEST_QNAME; NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder(); - ValueSerializer.serialize(builder, mock( - NormalizedNodeSerializationContext.class), v1); + ValueSerializer.serialize(builder, mock(QNameSerializationContext.class), v1); assertEquals(ValueType.QNAME_TYPE.ordinal(), builder.getIntValueType()); assertEquals("(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test?revision=2014-03-13)test", builder.getValue()); NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = NormalizedNodeMessages.PathArgumentAttribute.newBuilder(); - ValueSerializer.serialize(builder1, mock( - NormalizedNodeSerializationContext.class), v1); + ValueSerializer.serialize(builder1, mock(QNameSerializationContext.class), v1); assertEquals(ValueType.QNAME_TYPE.ordinal(), builder1.getType()); assertEquals("(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test?revision=2014-03-13)test", builder1.getValue()); @@ -222,32 +211,45 @@ public class ValueSerializerTest{ YangInstanceIdentifier v1 = TestModel.TEST_PATH; NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder(); - ValueSerializer.serialize(builder, mock( - NormalizedNodeSerializationContext.class), v1); - + QNameSerializationContext mockContext = mock(QNameSerializationContext.class); + ValueSerializer.serialize(builder, mockContext, v1); assertEquals(ValueType.YANG_IDENTIFIER_TYPE.ordinal(), builder.getIntValueType()); NormalizedNodeMessages.InstanceIdentifier serializedYangInstanceIdentifier = builder.getInstanceIdentifierValue(); assertEquals(1, serializedYangInstanceIdentifier.getArgumentsCount()); - assertEquals(TestModel.TEST_QNAME.toString(), serializedYangInstanceIdentifier.getArguments(0).getNodeType().getValue()); + Mockito.verify(mockContext).addLocalName(TestModel.TEST_QNAME.getLocalName()); + Mockito.verify(mockContext).addNamespace(TestModel.TEST_QNAME.getNamespace()); + + NormalizedNodeMessages.PathArgumentAttribute.Builder argumentBuilder + = NormalizedNodeMessages.PathArgumentAttribute.newBuilder(); + + mockContext = mock(QNameSerializationContext.class); + + ValueSerializer.serialize(argumentBuilder, mockContext, v1); + + serializedYangInstanceIdentifier = + argumentBuilder.getInstanceIdentifierValue(); + + assertEquals(1, serializedYangInstanceIdentifier.getArgumentsCount()); + Mockito.verify(mockContext).addLocalName(TestModel.TEST_QNAME.getLocalName()); + Mockito.verify(mockContext).addNamespace(TestModel.TEST_QNAME.getNamespace()); + } @Test public void testSerializeBigInteger(){ BigInteger v1 = new BigInteger("1000000000000000000000000"); NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder(); - ValueSerializer.serialize(builder, mock( - NormalizedNodeSerializationContext.class), v1); + ValueSerializer.serialize(builder, mock(QNameSerializationContext.class), v1); assertEquals(ValueType.BIG_INTEGER_TYPE.ordinal(), builder.getIntValueType()); assertEquals("1000000000000000000000000", builder.getValue()); NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = NormalizedNodeMessages.PathArgumentAttribute.newBuilder(); - ValueSerializer.serialize(builder1, mock( - NormalizedNodeSerializationContext.class), v1); + ValueSerializer.serialize(builder1, mock(QNameSerializationContext.class), v1); assertEquals(ValueType.BIG_INTEGER_TYPE.ordinal(), builder1.getType()); assertEquals("1000000000000000000000000", builder1.getValue()); @@ -258,21 +260,56 @@ public class ValueSerializerTest{ public void testSerializeBigDecimal(){ BigDecimal v1 = new BigDecimal("1000000000000000000000000.51616"); NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder(); - ValueSerializer.serialize(builder, mock( - NormalizedNodeSerializationContext.class), v1); + ValueSerializer.serialize(builder, mock(QNameSerializationContext.class), v1); assertEquals(ValueType.BIG_DECIMAL_TYPE.ordinal(), builder.getIntValueType()); assertEquals("1000000000000000000000000.51616", builder.getValue()); NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = NormalizedNodeMessages.PathArgumentAttribute.newBuilder(); - ValueSerializer.serialize(builder1, mock( - NormalizedNodeSerializationContext.class), v1); + ValueSerializer.serialize(builder1, mock(QNameSerializationContext.class), v1); assertEquals(ValueType.BIG_DECIMAL_TYPE.ordinal(), builder1.getType()); assertEquals("1000000000000000000000000.51616", builder1.getValue()); } + @Test + public void testSerializeBinary(){ + NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder(); + byte[] bytes = new byte[] {1,2,3,4}; + ValueSerializer.serialize(builder, mock(QNameSerializationContext.class),bytes); + + assertEquals(ValueType.BINARY_TYPE.ordinal(), builder.getIntValueType()); + assertEquals(ByteString.copyFrom(bytes), builder.getBytesValue()); + + NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = NormalizedNodeMessages.PathArgumentAttribute.newBuilder(); + + ValueSerializer.serialize(builder1, mock(QNameSerializationContext.class),bytes); + + assertEquals(ValueType.BINARY_TYPE.ordinal(), builder1.getType()); + assertEquals(ByteString.copyFrom(bytes), builder1.getBytesValue()); + + } + + @Test + public void testSerializeNull(){ + NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder(); + Object none = null; + ValueSerializer.serialize(builder, mock(QNameSerializationContext.class),none); + + assertEquals(ValueType.NULL_TYPE.ordinal(), builder.getIntValueType()); + assertEquals("", builder.getValue()); + + NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = NormalizedNodeMessages.PathArgumentAttribute.newBuilder(); + + ValueSerializer.serialize(builder1, mock(QNameSerializationContext.class),none); + + assertEquals(ValueType.NULL_TYPE.ordinal(), builder1.getType()); + assertEquals("", builder.getValue()); + + } + + @Test public void testDeSerializeShort(){ NormalizedNodeMessages.Node.Builder nodeBuilder = NormalizedNodeMessages.Node.newBuilder(); @@ -280,7 +317,7 @@ public class ValueSerializerTest{ nodeBuilder.setValue("25"); Object o = ValueSerializer - .deSerialize(mock(NormalizedNodeDeSerializationContext.class), + .deSerialize(mock(QNameDeSerializationContext.class), nodeBuilder.build()); assertTrue(o instanceof Short); @@ -294,7 +331,7 @@ public class ValueSerializerTest{ nodeBuilder.setValue("25"); Object o = ValueSerializer - .deSerialize(mock(NormalizedNodeDeSerializationContext.class), + .deSerialize(mock(QNameDeSerializationContext.class), nodeBuilder.build()); assertTrue(o instanceof Byte); @@ -309,7 +346,7 @@ public class ValueSerializerTest{ nodeBuilder.setValue("25"); Object o = ValueSerializer - .deSerialize(mock(NormalizedNodeDeSerializationContext.class), + .deSerialize(mock(QNameDeSerializationContext.class), nodeBuilder.build()); assertTrue(o instanceof Integer); @@ -324,7 +361,7 @@ public class ValueSerializerTest{ nodeBuilder.setValue("25"); Object o = ValueSerializer - .deSerialize(mock(NormalizedNodeDeSerializationContext.class), + .deSerialize(mock(QNameDeSerializationContext.class), nodeBuilder.build()); assertTrue(o instanceof Long); @@ -339,7 +376,7 @@ public class ValueSerializerTest{ nodeBuilder.setValue("false"); Object o = ValueSerializer - .deSerialize(mock(NormalizedNodeDeSerializationContext.class), + .deSerialize(mock(QNameDeSerializationContext.class), nodeBuilder.build()); assertTrue(o instanceof Boolean); @@ -354,7 +391,7 @@ public class ValueSerializerTest{ nodeBuilder.setValue(TestModel.TEST_QNAME.toString()); Object o = ValueSerializer - .deSerialize(mock(NormalizedNodeDeSerializationContext.class), + .deSerialize(mock(QNameDeSerializationContext.class), nodeBuilder.build()); assertTrue(o instanceof QName); @@ -369,12 +406,26 @@ public class ValueSerializerTest{ nodeBuilder.addAllBitsValue(ImmutableList.of("foo", "bar")); Object o = ValueSerializer - .deSerialize(mock(NormalizedNodeDeSerializationContext.class), + .deSerialize(mock(QNameDeSerializationContext.class), nodeBuilder.build()); assertTrue(o instanceof Set); - assertTrue(((Set)o).contains("foo")); - assertTrue(((Set) o).contains("bar")); + assertTrue(((Set)o).contains("foo")); + assertTrue(((Set) o).contains("bar")); + + NormalizedNodeMessages.PathArgumentAttribute.Builder argumentBuilder + = NormalizedNodeMessages.PathArgumentAttribute.newBuilder(); + + argumentBuilder.setType(ValueType.BITS_TYPE.ordinal()); + argumentBuilder.addAllBitsValue(ImmutableList.of("foo", "bar")); + + o = ValueSerializer + .deSerialize(mock(QNameDeSerializationContext.class), + argumentBuilder.build()); + + assertTrue(o instanceof Set); + assertTrue(((Set)o).contains("foo")); + assertTrue(((Set) o).contains("bar")); } @@ -384,7 +435,6 @@ public class ValueSerializerTest{ NormalizedNodeMessages.InstanceIdentifier.Builder idBuilder = NormalizedNodeMessages.InstanceIdentifier.newBuilder(); NormalizedNodeMessages.PathArgument.Builder pathBuilder = NormalizedNodeMessages.PathArgument.newBuilder(); - pathBuilder.setValue(TestModel.TEST_QNAME.toString()); pathBuilder.setIntType(PathArgumentType.NODE_IDENTIFIER.ordinal()); idBuilder.addArguments(pathBuilder); @@ -392,13 +442,29 @@ public class ValueSerializerTest{ nodeBuilder.setIntValueType(ValueType.YANG_IDENTIFIER_TYPE.ordinal()); nodeBuilder.setInstanceIdentifierValue(idBuilder); - Object o = ValueSerializer - .deSerialize(mock(NormalizedNodeDeSerializationContext.class), - nodeBuilder.build()); + QNameDeSerializationContext mockContext = mock(QNameDeSerializationContext.class); + Mockito.doReturn(TestModel.TEST_QNAME.getNamespace().toString()).when(mockContext). + getNamespace(Mockito.anyInt()); + Mockito.doReturn(TestModel.TEST_QNAME.getLocalName()).when(mockContext). + getLocalName(Mockito.anyInt()); + Mockito.doReturn(TestModel.TEST_QNAME.getFormattedRevision()).when(mockContext). + getRevision(Mockito.anyInt()); + + Object o = ValueSerializer.deSerialize(mockContext, nodeBuilder.build()); assertTrue(o instanceof YangInstanceIdentifier); assertEquals(TestModel.TEST_PATH, o); + NormalizedNodeMessages.PathArgumentAttribute.Builder argumentBuilder = + NormalizedNodeMessages.PathArgumentAttribute.newBuilder(); + + argumentBuilder.setType(ValueType.YANG_IDENTIFIER_TYPE.ordinal()); + argumentBuilder.setInstanceIdentifierValue(idBuilder); + + o = ValueSerializer.deSerialize(mockContext, argumentBuilder.build()); + + assertTrue(o instanceof YangInstanceIdentifier); + assertEquals(TestModel.TEST_PATH, o); } @Test @@ -407,8 +473,7 @@ public class ValueSerializerTest{ nodeBuilder.setIntValueType(ValueType.STRING_TYPE.ordinal()); nodeBuilder.setValue("25"); - Object o = ValueSerializer - .deSerialize(mock(NormalizedNodeDeSerializationContext.class), + Object o = ValueSerializer.deSerialize(mock(QNameDeSerializationContext.class), nodeBuilder.build()); assertTrue(o instanceof String); @@ -423,7 +488,7 @@ public class ValueSerializerTest{ nodeBuilder.setValue("25"); Object o = ValueSerializer - .deSerialize(mock(NormalizedNodeDeSerializationContext.class), + .deSerialize(mock(QNameDeSerializationContext.class), nodeBuilder.build()); assertTrue(o instanceof BigInteger); @@ -438,7 +503,7 @@ public class ValueSerializerTest{ nodeBuilder.setValue("25"); Object o = ValueSerializer - .deSerialize(mock(NormalizedNodeDeSerializationContext.class), + .deSerialize(mock(QNameDeSerializationContext.class), nodeBuilder.build()); assertTrue(o instanceof BigDecimal); @@ -446,4 +511,57 @@ public class ValueSerializerTest{ } + + @Test + public void testDeSerializeBinaryType(){ + NormalizedNodeMessages.Node.Builder nodeBuilder = NormalizedNodeMessages.Node.newBuilder(); + nodeBuilder.setIntValueType(ValueType.BINARY_TYPE.ordinal()); + byte[] bytes = new byte[] {1,2,3,4}; + nodeBuilder.setBytesValue(ByteString.copyFrom(bytes)); + + Object o = ValueSerializer.deSerialize(mock(QNameDeSerializationContext.class),nodeBuilder.build()); + + assertTrue("not a byte array", o instanceof byte[]); + assertTrue("bytes value does not match" , Arrays.equals(bytes, (byte[]) o)); + + NormalizedNodeMessages.PathArgumentAttribute.Builder argumentBuilder = + NormalizedNodeMessages.PathArgumentAttribute.newBuilder(); + argumentBuilder.setType(ValueType.BINARY_TYPE.ordinal()); + argumentBuilder.setBytesValue(ByteString.copyFrom(bytes)); + + o = ValueSerializer.deSerialize(mock(QNameDeSerializationContext.class), argumentBuilder.build()); + + assertTrue("not a byte array", o instanceof byte[]); + assertTrue("bytes value does not match" ,Arrays.equals(bytes, (byte[]) o)); + + + } + + @Test + public void testDeSerializeNullType(){ + NormalizedNodeMessages.Node.Builder nodeBuilder = NormalizedNodeMessages.Node.newBuilder(); + nodeBuilder.setIntValueType(ValueType.NULL_TYPE.ordinal()); + nodeBuilder.setValue(""); + + Object o = ValueSerializer + .deSerialize(mock(QNameDeSerializationContext.class), + nodeBuilder.build()); + + assertEquals(null, o); + + NormalizedNodeMessages.PathArgumentAttribute.Builder argumentBuilder + = NormalizedNodeMessages.PathArgumentAttribute.newBuilder(); + + argumentBuilder.setType(ValueType.NULL_TYPE.ordinal()); + argumentBuilder.setValue(""); + + o = ValueSerializer + .deSerialize(mock(QNameDeSerializationContext.class), + argumentBuilder.build()); + + assertEquals(null, o); + + } + + }