/* * * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * */ 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 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 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 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 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()); } }