/*
* Copyright (c) 2016 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.groupbasedpolicy.renderer.vpp.event;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
public class DtoChangeEventTest {
private final static TopologyKey TOPO_KEY = new TopologyKey(new TopologyId("topo1"));
private final static NodeKey NODE_KEY = new NodeKey(new NodeId("node1"));
private final static InstanceIdentifier<Node> NODE_IID = InstanceIdentifier.builder(NetworkTopology.class)
.child(Topology.class, TOPO_KEY)
.child(Node.class, NODE_KEY)
.build();
private static DummyDtoEvent eventOriginal =
new DummyDtoEvent(NODE_IID, null, new NodeBuilder().setKey(NODE_KEY).build());
@Rule
public ExpectedException thrown = ExpectedException.none();
private static class DummyDtoEvent extends DtoChangeEvent<Node> {
public DummyDtoEvent(InstanceIdentifier<Node> iid, Node before, Node after) {
super(iid, before, after);
}
}
@Test
public void testDummyDtoEvent() {
Node node = new NodeBuilder().setKey(NODE_KEY).build();
DummyDtoEvent event = new DummyDtoEvent(NODE_IID, null, node);
Assert.assertTrue(eventOriginal.equals(event));
Assert.assertEquals(eventOriginal.hashCode(), event.hashCode());
Assert.assertEquals(eventOriginal.toString(), event.toString());
eventOriginal = new DummyDtoEvent(NODE_IID, new NodeBuilder().setKey(NODE_KEY).build(), null);
Assert.assertFalse(eventOriginal.equals(event));
Assert.assertNotEquals(eventOriginal.hashCode(), event.hashCode());
Assert.assertNotEquals(eventOriginal.toString(), event.toString());
}
@Test
public void testConstructor_nodeCreated() {
Node node = new NodeBuilder().setKey(NODE_KEY).build();
DummyDtoEvent event = new DummyDtoEvent(NODE_IID, null, node);
Assert.assertNotNull(event.getIid());
Assert.assertTrue(event.getAfter().isPresent());
Assert.assertFalse(event.getBefore().isPresent());
Assert.assertEquals(DtoChangeEvent.DtoModificationType.CREATED, event.getDtoModificationType());
Assert.assertTrue(event.isDtoCreated());
Assert.assertFalse(event.isDtoDeleted());
Assert.assertFalse(event.isDtoUpdated());
}
@Test
public void testConstructor_nodeDeleted() {
Node node = new NodeBuilder().setKey(NODE_KEY).build();
DummyDtoEvent event = new DummyDtoEvent(NODE_IID, node, null);
Assert.assertNotNull(event.getIid());
Assert.assertFalse(event.getAfter().isPresent());
Assert.assertTrue(event.getBefore().isPresent());
Assert.assertEquals(DtoChangeEvent.DtoModificationType.DELETED, event.getDtoModificationType());
Assert.assertFalse(event.isDtoCreated());
Assert.assertTrue(event.isDtoDeleted());
Assert.assertFalse(event.isDtoUpdated());
}
@Test
public void testConstructor_nodeUpdated() {
Node node = new NodeBuilder().setKey(NODE_KEY).build();
DummyDtoEvent event = new DummyDtoEvent(NODE_IID, node, node);
Assert.assertNotNull(event.getIid());
Assert.assertTrue(event.getAfter().isPresent());
Assert.assertTrue(event.getBefore().isPresent());
Assert.assertEquals(DtoChangeEvent.DtoModificationType.UPDATED, event.getDtoModificationType());
Assert.assertFalse(event.isDtoCreated());
Assert.assertFalse(event.isDtoDeleted());
Assert.assertTrue(event.isDtoUpdated());
}
@Test
public void testConstructor_nullNodes_Exception() {
thrown.expect(IllegalArgumentException.class);
new DummyDtoEvent(NODE_IID, null, null);
}
@Test
public void testConstructor_nullIid_Exception() {
Node node = new NodeBuilder().setKey(NODE_KEY).build();
thrown.expect(NullPointerException.class);
new DummyDtoEvent(null, node, node);
}
}