2 * Copyright (c) 2020 PANTHEON.tech, s.r.o. and others. All rights reserved.
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
8 package org.opendaylight.yangtools.yang.data.impl.schema;
10 import static org.junit.Assert.assertArrayEquals;
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertFalse;
13 import static org.junit.Assert.assertTrue;
15 import org.junit.Test;
16 import org.opendaylight.yangtools.yang.common.QName;
17 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
18 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
19 import org.opendaylight.yangtools.yang.data.api.schema.SystemMapNode;
20 import org.opendaylight.yangtools.yang.data.api.schema.UserMapNode;
22 public class OrderingEqualityTest {
23 private static final QName FOO = QName.create("foo", "foo");
24 private static final QName BAR = QName.create("foo", "bar");
27 public void testUserMap() {
28 final UserMapNode firstMap = Builders.orderedMapBuilder()
29 .withNodeIdentifier(new NodeIdentifier(FOO))
30 .withChild(Builders.mapEntryBuilder()
31 .withNodeIdentifier(NodeIdentifierWithPredicates.of(FOO, BAR, "two"))
32 .withChild(ImmutableNodes.leafNode(BAR, "two"))
34 .withChild(Builders.mapEntryBuilder()
35 .withNodeIdentifier(NodeIdentifierWithPredicates.of(FOO, BAR, "one"))
36 .withChild(ImmutableNodes.leafNode(BAR, "one"))
40 final UserMapNode secondMap = Builders.orderedMapBuilder()
41 .withNodeIdentifier(new NodeIdentifier(FOO))
42 .withChild(Builders.mapEntryBuilder()
43 .withNodeIdentifier(NodeIdentifierWithPredicates.of(FOO, BAR, "one"))
44 .withChild(ImmutableNodes.leafNode(BAR, "one"))
46 .withChild(Builders.mapEntryBuilder()
47 .withNodeIdentifier(NodeIdentifierWithPredicates.of(FOO, BAR, "two"))
48 .withChild(ImmutableNodes.leafNode(BAR, "two"))
52 assertEquals(firstMap.asMap(), secondMap.asMap());
53 assertFalse(firstMap.equals(secondMap));
54 assertFalse(secondMap.equals(firstMap));
56 final UserMapNode thirdMap = Builders.orderedMapBuilder()
57 .withNodeIdentifier(new NodeIdentifier(FOO))
58 .withChild(Builders.mapEntryBuilder()
59 .withNodeIdentifier(NodeIdentifierWithPredicates.of(FOO, BAR, "one"))
60 .withChild(ImmutableNodes.leafNode(BAR, "one"))
62 .withChild(Builders.mapEntryBuilder()
63 .withNodeIdentifier(NodeIdentifierWithPredicates.of(FOO, BAR, "two"))
64 .withChild(ImmutableNodes.leafNode(BAR, "two"))
68 assertEquals(secondMap.asMap(), thirdMap.asMap());
69 assertFalse(firstMap.equals(thirdMap));
70 assertTrue(secondMap.equals(thirdMap));
71 assertArrayEquals(secondMap.body().toArray(), thirdMap.body().toArray());
72 assertEquals(secondMap.hashCode(), thirdMap.hashCode());
74 // Although this map looks as secondMap, it is not equal
75 final SystemMapNode systemMap = Builders.mapBuilder()
76 .withNodeIdentifier(new NodeIdentifier(FOO))
77 .withChild(Builders.mapEntryBuilder()
78 .withNodeIdentifier(NodeIdentifierWithPredicates.of(FOO, BAR, "one"))
79 .withChild(ImmutableNodes.leafNode(BAR, "one"))
81 .withChild(Builders.mapEntryBuilder()
82 .withNodeIdentifier(NodeIdentifierWithPredicates.of(FOO, BAR, "two"))
83 .withChild(ImmutableNodes.leafNode(BAR, "two"))
87 assertEquals(secondMap.asMap(), systemMap.asMap());
88 assertFalse(firstMap.equals(systemMap));
89 assertFalse(secondMap.equals(systemMap));
93 public void testSystemMap() {
94 final SystemMapNode firstMap = Builders.mapBuilder()
95 .withNodeIdentifier(new NodeIdentifier(FOO))
96 .withChild(Builders.mapEntryBuilder()
97 .withNodeIdentifier(NodeIdentifierWithPredicates.of(FOO, BAR, "one"))
98 .withChild(ImmutableNodes.leafNode(BAR, "one"))
100 .withChild(Builders.mapEntryBuilder()
101 .withNodeIdentifier(NodeIdentifierWithPredicates.of(FOO, BAR, "two"))
102 .withChild(ImmutableNodes.leafNode(BAR, "two"))
105 final SystemMapNode secondMap = Builders.mapBuilder()
106 .withNodeIdentifier(new NodeIdentifier(FOO))
107 .withChild(Builders.mapEntryBuilder()
108 .withNodeIdentifier(NodeIdentifierWithPredicates.of(FOO, BAR, "two"))
109 .withChild(ImmutableNodes.leafNode(BAR, "two"))
111 .withChild(Builders.mapEntryBuilder()
112 .withNodeIdentifier(NodeIdentifierWithPredicates.of(FOO, BAR, "one"))
113 .withChild(ImmutableNodes.leafNode(BAR, "one"))
117 assertEquals(firstMap.asMap(), secondMap.asMap());
118 // Order does not matter
119 assertTrue(firstMap.equals(secondMap));
120 assertTrue(secondMap.equals(firstMap));
121 assertEquals(firstMap.hashCode(), secondMap.hashCode());