Enforce InstanceIdentifier creation
[mdsal.git] / binding / mdsal-binding-api / src / test / java / org / opendaylight / mdsal / binding / api / DataTreeIdentifierTest.java
1 /*
2  * Copyright (c) 2016 Cisco 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.binding.api;
9
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertFalse;
12 import static org.junit.Assert.assertNotEquals;
13 import static org.junit.Assert.assertTrue;
14
15 import org.junit.Test;
16 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
17 import org.opendaylight.yangtools.yang.binding.ChildOf;
18 import org.opendaylight.yangtools.yang.binding.DataObject;
19 import org.opendaylight.yangtools.yang.binding.DataRoot;
20 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
21
22 public class DataTreeIdentifierTest {
23
24     private static final DataTreeIdentifier<TestDataObject1> TEST_IDENTIFIER1 = DataTreeIdentifier.create(
25             LogicalDatastoreType.OPERATIONAL, InstanceIdentifier.create(TestDataObject1.class));
26     private static final DataTreeIdentifier<TestDataObject2> TEST_IDENTIFIER2 = DataTreeIdentifier.create(
27             LogicalDatastoreType.OPERATIONAL, InstanceIdentifier.create(TestDataObject2.class));
28
29     @Test
30     public void basicTest() throws Exception {
31         assertEquals(LogicalDatastoreType.OPERATIONAL, TEST_IDENTIFIER1.getDatastoreType());
32         assertEquals(InstanceIdentifier.create(TestDataObject1.class), TEST_IDENTIFIER1.getRootIdentifier());
33     }
34
35     @Test
36     public void containsTest() {
37         assertTrue("Contains", TEST_IDENTIFIER1.contains(DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL,
38                 InstanceIdentifier.create(TestDataObject1.class))));
39         assertFalse("Not Contains", TEST_IDENTIFIER1.contains(TEST_IDENTIFIER2));
40     }
41
42     @Test
43     public void hashCodeTest() {
44         assertEquals("hashCode", TEST_IDENTIFIER1.hashCode(), DataTreeIdentifier.create(
45                 LogicalDatastoreType.OPERATIONAL, InstanceIdentifier.create(TestDataObject1.class)).hashCode());
46         assertNotEquals("hashCode", TEST_IDENTIFIER1.hashCode(), TEST_IDENTIFIER2.hashCode());
47     }
48
49     @Test
50     public void equalsTest() {
51         assertTrue("Equals", TEST_IDENTIFIER1.equals(TEST_IDENTIFIER1));
52         assertTrue("Equals", TEST_IDENTIFIER1.equals(DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL,
53                 InstanceIdentifier.create(TestDataObject1.class))));
54         assertFalse("Different", TEST_IDENTIFIER1.equals(DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION,
55                 InstanceIdentifier.create(TestDataObject1.class))));
56         assertFalse("Different", TEST_IDENTIFIER1.equals(TEST_IDENTIFIER2));
57         assertFalse("Equals null", TEST_IDENTIFIER1.equals(null));
58         assertFalse("Different object", TEST_IDENTIFIER1.equals(new Object()));
59     }
60
61     private interface TestDataObject1 extends ChildOf<DataRoot> {
62         @Override
63         default Class<? extends DataObject> implementedInterface() {
64             return TestDataObject1.class;
65         }
66     }
67
68     private interface TestDataObject2 extends ChildOf<DataRoot> {
69         @Override
70         default Class<? extends DataObject> implementedInterface() {
71             return TestDataObject2.class;
72         }
73     }
74 }