2 * Copyright (c) 2022 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.nodes;
10 import static org.junit.Assert.assertNotEquals;
11 import static org.junit.jupiter.api.Assertions.assertEquals;
12 import static org.mockito.Mockito.doReturn;
13 import static org.mockito.Mockito.mock;
15 import java.util.List;
16 import org.junit.Test;
17 import org.junit.runner.RunWith;
18 import org.mockito.junit.MockitoJUnitRunner;
19 import org.opendaylight.yangtools.yang.common.QName;
20 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
21 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue;
22 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
23 import org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode;
24 import org.opendaylight.yangtools.yang.data.api.schema.UserLeafSetNode;
25 import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
26 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
28 @RunWith(MockitoJUnitRunner.StrictStubs.class)
29 public class YT1417Test {
30 public static final QName FOO = QName.create("foo", "foo");
31 public static final QName BAR = QName.create("foo", "bar");
34 public void testContainerNodeEquality() {
35 final var mock = mock(ContainerNode.class);
36 doReturn(new NodeIdentifier(FOO)).when(mock).getIdentifier();
37 doReturn(1).when(mock).size();
38 doReturn(ImmutableNodes.leafNode(BAR, "abc")).when(mock).childByArg(new NodeIdentifier(BAR));
40 assertEquals(Builders.containerBuilder()
41 .withNodeIdentifier(new NodeIdentifier(FOO))
42 .withChild(ImmutableNodes.leafNode(BAR, "abc"))
45 // Mismatched identifier
46 assertNotEquals(Builders.containerBuilder()
47 .withNodeIdentifier(new NodeIdentifier(BAR))
48 .withChild(ImmutableNodes.leafNode(BAR, "abc"))
51 // Mismatched child size
52 assertNotEquals(Builders.containerBuilder()
53 .withNodeIdentifier(new NodeIdentifier(FOO))
54 .withChild(ImmutableNodes.leafNode(FOO, "abc"))
55 .withChild(ImmutableNodes.leafNode(BAR, "abc"))
59 assertNotEquals(Builders.containerBuilder()
60 .withNodeIdentifier(new NodeIdentifier(FOO))
61 .withChild(ImmutableNodes.leafNode(FOO, "abc"))
66 public void testSystemLeafSetNodeEquality() {
67 final var mock = mock(SystemLeafSetNode.class);
68 doReturn(new NodeIdentifier(FOO)).when(mock).getIdentifier();
69 doReturn(1).when(mock).size();
70 doReturn(Builders.leafSetEntryBuilder()
71 .withNodeIdentifier(new NodeWithValue<>(FOO, "abc"))
73 .build()).when(mock).childByArg(new NodeWithValue<>(FOO, "abc"));
75 assertEquals(Builders.leafSetBuilder()
76 .withNodeIdentifier(new NodeIdentifier(FOO))
77 .withChild(Builders.leafSetEntryBuilder()
78 .withNodeIdentifier(new NodeWithValue<>(FOO, "abc"))
83 // Mismatched identifier
84 assertNotEquals(Builders.leafSetBuilder()
85 .withNodeIdentifier(new NodeIdentifier(BAR))
86 .withChild(Builders.leafSetEntryBuilder()
87 .withNodeIdentifier(new NodeWithValue<>(BAR, "abc"))
92 // Mismatched child size
93 assertNotEquals(Builders.leafSetBuilder()
94 .withNodeIdentifier(new NodeIdentifier(FOO))
95 .withChild(Builders.leafSetEntryBuilder()
96 .withNodeIdentifier(new NodeWithValue<>(FOO, "abc"))
99 .withChild(Builders.leafSetEntryBuilder()
100 .withNodeIdentifier(new NodeWithValue<>(FOO, "def"))
106 assertNotEquals(Builders.leafSetBuilder()
107 .withNodeIdentifier(new NodeIdentifier(FOO))
108 .withChild(Builders.leafSetEntryBuilder()
109 .withNodeIdentifier(new NodeWithValue<>(FOO, "def"))
116 public void testUserLeafSetNodeEquality() {
117 final var mock = mock(UserLeafSetNode.class);
118 doReturn(new NodeIdentifier(FOO)).when(mock).getIdentifier();
120 Builders.leafSetEntryBuilder()
121 .withNodeIdentifier(new NodeWithValue<>(FOO, "abc"))
124 Builders.leafSetEntryBuilder()
125 .withNodeIdentifier(new NodeWithValue<>(FOO, "def"))
127 .build())).when(mock).body();
129 assertEquals(Builders.orderedLeafSetBuilder()
130 .withNodeIdentifier(new NodeIdentifier(FOO))
131 .withChild(Builders.leafSetEntryBuilder()
132 .withNodeIdentifier(new NodeWithValue<>(FOO, "abc"))
135 .withChild(Builders.leafSetEntryBuilder()
136 .withNodeIdentifier(new NodeWithValue<>(FOO, "def"))
141 // Mismatched identifier
142 assertNotEquals(Builders.orderedLeafSetBuilder()
143 .withNodeIdentifier(new NodeIdentifier(BAR))
144 .withChild(Builders.leafSetEntryBuilder()
145 .withNodeIdentifier(new NodeWithValue<>(BAR, "abc"))
148 .withChild(Builders.leafSetEntryBuilder()
149 .withNodeIdentifier(new NodeWithValue<>(BAR, "def"))
154 // Mismatched child order
155 assertNotEquals(Builders.orderedLeafSetBuilder()
156 .withNodeIdentifier(new NodeIdentifier(FOO))
157 .withChild(Builders.leafSetEntryBuilder()
158 .withNodeIdentifier(new NodeWithValue<>(FOO, "def"))
161 .withChild(Builders.leafSetEntryBuilder()
162 .withNodeIdentifier(new NodeWithValue<>(FOO, "abc"))