2 * Copyright (c) 2013 Cisco Systems, Inc. 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.nodes;
10 import static org.junit.Assert.assertFalse;
11 import static org.junit.Assert.assertTrue;
13 import org.junit.Test;
14 import org.opendaylight.yangtools.yang.common.QName;
15 import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
16 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
18 public class AbstractImmutableNormalizedValueAttrNodeTest {
19 // FIXME: Record once we have JDK17
20 private static final class TestValue {
21 private final int value;
23 TestValue(final int value) {
28 public int hashCode() {
33 public boolean equals(final Object obj) {
34 return obj == this || obj instanceof TestValue && value == ((TestValue) obj).value;
38 private static final QName ROOT_QNAME = QName.create("urn:test", "2014-03-13", "root");
39 private static final QName LEAF_QNAME = QName.create(ROOT_QNAME, "my-leaf");
40 private static final QName SAME_LEAF_QNAME = QName.create(ROOT_QNAME, "my-leaf");
41 private static final QName OTHER_LEAF_QNAME = QName.create(ROOT_QNAME, "my-other-leaf");
44 // This test is based on using different references; we're testing equals()
45 @SuppressWarnings({"RedundantStringConstructorCall", "EqualsWithItself"})
46 public void equalsByteTest() {
47 byte[] value = "test".getBytes();
48 byte[] equalValue = "test".getBytes();
50 LeafNode<byte[]> leafNode = ImmutableNodes.leafNode(LEAF_QNAME, value);
51 LeafNode<byte[]> equalLeafNode = ImmutableNodes.leafNode(SAME_LEAF_QNAME, equalValue);
53 assertTrue(leafNode.equals(leafNode));
54 assertTrue(leafNode.equals(equalLeafNode));
55 assertTrue(equalLeafNode.equals(leafNode));
57 TestValue[] value2 = new TestValue[] { new TestValue(1), new TestValue(2) };
58 TestValue[] equalValue2 = new TestValue[] { new TestValue(1), new TestValue(2) };
60 LeafNode<TestValue[]> leafNode2 = ImmutableNodes.leafNode(LEAF_QNAME, value2);
61 LeafNode<TestValue[]> equalLeafNode2 = ImmutableNodes.leafNode(SAME_LEAF_QNAME, equalValue2);
63 assertTrue(leafNode2.equals(leafNode2));
64 assertTrue(leafNode2.equals(equalLeafNode2));
65 assertTrue(equalLeafNode2.equals(leafNode2));
67 byte[][] value3 = new byte[][] { "test".getBytes(), "test2".getBytes() };
68 byte[][] equalValue3 = new byte[][] { "test".getBytes(), "test2".getBytes() };
70 LeafNode<byte[][]> leafNode3 = ImmutableNodes.leafNode(LEAF_QNAME,
72 LeafNode<byte[][]> equalLeafNode3 = ImmutableNodes.leafNode(SAME_LEAF_QNAME, equalValue3);
74 assertTrue(leafNode3.equals(leafNode3));
75 assertTrue(leafNode3.equals(equalLeafNode3));
76 assertTrue(equalLeafNode3.equals(leafNode3));
78 TestValue[][] value4 = new TestValue[][] {
79 new TestValue[] { new TestValue(1), new TestValue(2) },
80 new TestValue[] { new TestValue(3), new TestValue(4) },
82 TestValue[][] equalValue4 = new TestValue[][] {
83 new TestValue[] { new TestValue(1), new TestValue(2) },
84 new TestValue[] { new TestValue(3), new TestValue(4) },
87 LeafNode<TestValue[][]> leafNode4 = ImmutableNodes.leafNode(LEAF_QNAME,value4);
88 LeafNode<TestValue[][]> equalLeafNode4 = ImmutableNodes.leafNode(SAME_LEAF_QNAME, equalValue4);
90 assertTrue(leafNode4.equals(leafNode4));
91 assertTrue(leafNode4.equals(equalLeafNode4));
92 assertTrue(equalLeafNode4.equals(leafNode4));
94 TestValue value6 = new TestValue(1);
95 TestValue equalValue6 = new TestValue(1);
97 LeafNode<TestValue> leafNode6 = ImmutableNodes.leafNode(LEAF_QNAME, value6);
98 LeafNode<TestValue> equalLeafNode6 = ImmutableNodes.leafNode(SAME_LEAF_QNAME, equalValue6);
100 assertTrue(leafNode6.equals(leafNode6));
101 assertTrue(leafNode6.equals(equalLeafNode6));
102 assertTrue(equalLeafNode6.equals(leafNode6));
104 String value5 = "test";
105 String equalValue5 = new String("test");
107 LeafNode<String> leafNode5 = ImmutableNodes.leafNode(LEAF_QNAME, value5);
108 LeafNode<String> equalLeafNode5 = ImmutableNodes.leafNode(SAME_LEAF_QNAME, equalValue5);
110 assertTrue(leafNode5.equals(leafNode5));
111 assertTrue(leafNode5.equals(equalLeafNode5));
112 assertTrue(equalLeafNode5.equals(leafNode5));
116 // We're testing equals()
117 @SuppressWarnings({"ObjectEqualsNull", "EqualsBetweenInconvertibleTypes"})
118 public void notEqualByteTest() {
120 byte[] value = "test".getBytes();
121 byte[] equalValue = "test".getBytes();
123 LeafNode<byte[]> leafNode = ImmutableNodes.leafNode(LEAF_QNAME, value);
124 LeafNode<byte[]> otherLeafNode = ImmutableNodes.leafNode(OTHER_LEAF_QNAME, equalValue);
126 assertFalse(leafNode.equals(null));
127 assertFalse(leafNode.equals(new Object()));
128 assertFalse(leafNode.equals(otherLeafNode));
129 assertFalse(otherLeafNode.equals(leafNode));
131 byte[] value1 = "test".getBytes();
132 byte[] otherValue1 = "test1".getBytes();
134 LeafNode<byte[]> leafNode1 = ImmutableNodes.leafNode(LEAF_QNAME, value1);
135 LeafNode<byte[]> otherLeafNode1 = ImmutableNodes.leafNode(SAME_LEAF_QNAME, otherValue1);
137 assertFalse(leafNode1.equals(otherLeafNode1));
138 assertFalse(otherLeafNode1.equals(leafNode1));
140 TestValue[] value2 = new TestValue[] { new TestValue(1), new TestValue(1) };
141 TestValue[] otherValue2 = new TestValue[] { new TestValue(1), new TestValue(2) };
143 LeafNode<TestValue[]> leafNode2 = ImmutableNodes.leafNode(LEAF_QNAME, value2);
144 LeafNode<TestValue[]> otherLeafNode2 = ImmutableNodes.leafNode(SAME_LEAF_QNAME, otherValue2);
146 assertFalse(leafNode2.equals(otherLeafNode2));
147 assertFalse(otherLeafNode2.equals(leafNode2));
149 byte[][] value3 = new byte[][] { "test".getBytes(), "test2".getBytes() };
150 byte[][] otherValue3 = new byte[][] { "test".getBytes(), "test3".getBytes() };
152 LeafNode<byte[][]> leafNode3 = ImmutableNodes.leafNode(LEAF_QNAME, value3);
153 LeafNode<byte[][]> otherLeafNode3 = ImmutableNodes.leafNode(SAME_LEAF_QNAME, otherValue3);
155 assertFalse(leafNode3.equals(otherLeafNode3));
156 assertFalse(otherLeafNode3.equals(leafNode3));
158 TestValue[][] value4 = new TestValue[][] {
159 new TestValue[] { new TestValue(1), new TestValue(2) },
160 new TestValue[] { new TestValue(3), new TestValue(4) },
162 TestValue[][] otherValue4 = new TestValue[][] {
163 new TestValue[] { new TestValue(1), new TestValue(2) },
164 new TestValue[] { new TestValue(3), new TestValue(5) },
167 LeafNode<TestValue[][]> leafNode4 = ImmutableNodes.leafNode(LEAF_QNAME, value4);
168 LeafNode<TestValue[][]> otherLeafNode4 = ImmutableNodes.leafNode(SAME_LEAF_QNAME, otherValue4);
170 assertFalse(leafNode4.equals(otherLeafNode4));
171 assertFalse(otherLeafNode4.equals(leafNode4));
173 TestValue value6 = new TestValue(1);
174 TestValue otherValue6 = new TestValue(2);
176 LeafNode<TestValue> leafNode6 = ImmutableNodes.leafNode(LEAF_QNAME, value6);
177 LeafNode<TestValue> otherLeafNode6 = ImmutableNodes.leafNode(SAME_LEAF_QNAME, otherValue6);
179 assertFalse(leafNode6.equals(otherLeafNode6));
180 assertFalse(otherLeafNode6.equals(leafNode6));
182 String value5 = "test";
183 String otherValue5 = "test2";
185 LeafNode<String> leafNode5 = ImmutableNodes.leafNode(LEAF_QNAME, value5);
186 LeafNode<String> otherLeafNode5 = ImmutableNodes.leafNode(SAME_LEAF_QNAME, otherValue5);
188 assertFalse(leafNode5.equals(otherLeafNode5));
189 assertFalse(otherLeafNode5.equals(leafNode5));
190 assertFalse(leafNode5.equals(leafNode));
191 assertFalse(leafNode5.equals(leafNode1));
192 assertFalse(leafNode5.equals(leafNode2));
193 assertFalse(leafNode5.equals(leafNode3));
194 assertFalse(leafNode5.equals(leafNode4));
195 assertFalse(leafNode5.equals(leafNode6));
196 assertFalse(leafNode.equals(leafNode5));
197 assertFalse(leafNode1.equals(leafNode5));
198 assertFalse(leafNode2.equals(leafNode5));
199 assertFalse(leafNode3.equals(leafNode5));
200 assertFalse(leafNode4.equals(leafNode5));
201 assertFalse(leafNode6.equals(leafNode5));
203 byte[] byteValue = new byte[] { 1, 1 };
205 LeafNode<byte[]> byteLeafNode = ImmutableNodes.leafNode(SAME_LEAF_QNAME, byteValue);
206 assertFalse(byteLeafNode.equals(leafNode2));
207 assertFalse(leafNode2.equals(byteLeafNode));
211 // We're testing equals()
212 @SuppressWarnings({"EqualsWithItself", "EqualsBetweenInconvertibleTypes"})
213 public void equalsOtherTypesTest() {
215 char[] valueChar = "test".toCharArray();
216 char[] equalValueChar = "test".toCharArray();
218 LeafNode<char[]> leafNodeChar = ImmutableNodes.leafNode(LEAF_QNAME, valueChar);
219 LeafNode<char[]> equalLeafNodeChar = ImmutableNodes.leafNode(SAME_LEAF_QNAME, equalValueChar);
221 assertTrue(leafNodeChar.equals(leafNodeChar));
222 assertTrue(leafNodeChar.equals(equalLeafNodeChar));
223 assertTrue(equalLeafNodeChar.equals(leafNodeChar));
225 boolean[] value = new boolean[] { true, false };
226 boolean[] equalValue = new boolean[] { true, false };
228 LeafNode<boolean[]> leafNode = ImmutableNodes.leafNode(LEAF_QNAME, value);
229 LeafNode<boolean[]> equalLeafNode = ImmutableNodes.leafNode(SAME_LEAF_QNAME, equalValue);
231 assertTrue(leafNode.equals(leafNode));
232 assertTrue(leafNode.equals(equalLeafNode));
233 assertTrue(equalLeafNode.equals(leafNode));
235 int[] value2 = new int[] { 1, 2 };
236 int[] equalValue2 = new int[] { 1, 2 };
238 LeafNode<int[]> leafNode2 = ImmutableNodes.leafNode(LEAF_QNAME, value2);
239 LeafNode<int[]> equalLeafNode2 = ImmutableNodes.leafNode(SAME_LEAF_QNAME, equalValue2);
241 assertTrue(leafNode2.equals(leafNode2));
242 assertTrue(leafNode2.equals(equalLeafNode2));
243 assertTrue(equalLeafNode2.equals(leafNode2));
245 short[] value3 = new short[] { 1, 2 };
246 short[] equalValue3 = new short[] { 1, 2 };
248 LeafNode<short[]> leafNode3 = ImmutableNodes.leafNode(LEAF_QNAME, value3);
249 LeafNode<short[]> equalLeafNode3 = ImmutableNodes.leafNode(SAME_LEAF_QNAME, equalValue3);
251 assertTrue(leafNode3.equals(leafNode3));
252 assertTrue(leafNode3.equals(equalLeafNode3));
253 assertTrue(equalLeafNode3.equals(leafNode3));
255 long[] value4 = new long[] { 1, 2 };
256 long[] equalValue4 = new long[] { 1, 2 };
258 LeafNode<long[]> leafNode4 = ImmutableNodes.leafNode(LEAF_QNAME, value4);
259 LeafNode<long[]> equalLeafNode4 = ImmutableNodes.leafNode(SAME_LEAF_QNAME, equalValue4);
261 assertTrue(leafNode4.equals(leafNode4));
262 assertTrue(leafNode4.equals(equalLeafNode4));
263 assertTrue(equalLeafNode4.equals(leafNode4));
265 double[] value6 = new double[] { 1, 2 };
266 double[] equalValue6 = new double[] { 1, 2 };
268 LeafNode<double[]> leafNode6 = ImmutableNodes.leafNode(LEAF_QNAME, value6);
269 LeafNode<double[]> equalLeafNode6 = ImmutableNodes.leafNode(SAME_LEAF_QNAME, equalValue6);
271 assertTrue(leafNode6.equals(leafNode6));
272 assertTrue(leafNode6.equals(equalLeafNode6));
273 assertTrue(equalLeafNode6.equals(leafNode6));
275 float[] value5 = new float[] { 1, 2 };
276 float[] equalValue5 = new float[] { 1, 2 };
278 LeafNode<float[]> leafNode5 = ImmutableNodes.leafNode(LEAF_QNAME, value5);
279 LeafNode<float[]> equalLeafNode5 = ImmutableNodes.leafNode(SAME_LEAF_QNAME, equalValue5);
281 assertTrue(leafNode5.equals(leafNode5));
282 assertTrue(leafNode5.equals(equalLeafNode5));
283 assertTrue(equalLeafNode5.equals(leafNode5));
285 assertFalse(leafNode.equals(leafNode5));
286 assertFalse(leafNode2.equals(leafNode5));
287 assertFalse(leafNode3.equals(leafNode5));
288 assertFalse(leafNode4.equals(leafNode5));
289 assertFalse(leafNodeChar.equals(leafNode5));
290 assertFalse(leafNode6.equals(leafNode5));
292 assertFalse(leafNode5.equals(leafNode));
293 assertFalse(leafNode5.equals(leafNode2));
294 assertFalse(leafNode5.equals(leafNode3));
295 assertFalse(leafNode5.equals(leafNode4));
296 assertFalse(leafNode5.equals(leafNodeChar));
297 assertFalse(leafNode5.equals(leafNode6));