Add general-entity yang to common
[mdsal.git] / dom / mdsal-dom-api / src / test / java / org / opendaylight / mdsal / dom / api / clustering / DOMEntityTest.java
1 /*
2  * Copyright (c) 2015 Brocade Communications Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.mdsal.dom.api.clustering;
9
10 import static org.opendaylight.mdsal.dom.api.clustering.DOMEntity.ENTITY;
11 import static org.junit.Assert.*;
12 import java.util.List;
13 import java.util.Map.Entry;
14 import org.junit.Test;
15 import org.opendaylight.yangtools.yang.common.QName;
16 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
17 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
18 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
19
20 /**
21  * @author Thomas Pantelis
22  */
23 public class DOMEntityTest {
24     static String ENTITY_TYPE1 = "type1";
25     static String ENTITY_TYPE2 = "type2";
26     static final YangInstanceIdentifier ID1 = YangInstanceIdentifier.of(QName.create("test", "2015-11-24", "one"));
27     static final YangInstanceIdentifier ID2 = YangInstanceIdentifier.of(QName.create("test", "2015-11-24", "two"));
28
29     @Test
30     public void testHashCode() {
31         DOMEntity entity1 = new DOMEntity(ENTITY_TYPE1, ID1);
32
33         assertEquals("hashCode", entity1.hashCode(), new DOMEntity(ENTITY_TYPE1, ID1).hashCode());
34         assertNotEquals("hashCode", entity1.hashCode(), new DOMEntity(ENTITY_TYPE2, ID2).hashCode());
35     }
36
37     @Test
38     public void testEquals() {
39         DOMEntity entity1 = new DOMEntity(ENTITY_TYPE1, ID1);
40
41         assertEquals("Same", true, entity1.equals(entity1));
42         assertEquals("Same", true, entity1.equals(new DOMEntity(ENTITY_TYPE1, ID1)));
43         assertEquals("Different entity type", false, entity1.equals(new DOMEntity(ENTITY_TYPE2, ID1)));
44         assertEquals("Different entity ID", false, entity1.equals(new DOMEntity(ENTITY_TYPE1, ID2)));
45         assertEquals("Different Object", false, entity1.equals(new Object()));
46         assertEquals("Equals null", false, entity1.equals(null));
47     }
48
49     @Test
50     public void testEntityNameConstructor() {
51         DOMEntity entity = new DOMEntity(ENTITY_TYPE1, "foo");
52
53         List<PathArgument> pathArgs = entity.getIdentifier().getPathArguments();
54         assertEquals("pathArgs size", 2, pathArgs.size());
55         assertEquals("First PathArgument node type", ENTITY, pathArgs.get(0).getNodeType());
56         assertEquals("Second PathArgument node type", ENTITY, pathArgs.get(1).getNodeType());
57         Entry<QName, Object> key = ((NodeIdentifierWithPredicates) pathArgs.get(1)).getKeyValues().entrySet().iterator().next();
58         assertEquals("Key node type", QName.create(ENTITY, "name"), key.getKey());
59         assertEquals("Key value", "foo", key.getValue());
60     }
61 }