2 * (C) Copyright 2016 Pantheon Technologies, s.r.o. and others.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org.opendaylight.yangtools.triemap;
18 import static org.junit.Assert.assertEquals;
19 import static org.junit.Assert.assertNotNull;
20 import static org.junit.Assert.assertNull;
22 import org.junit.Test;
24 public class TestHashCollisions {
26 public void testHashCollisions () {
27 final TrieMap<Object, Object> bt = new TrieMap<>();
80 private static void insertChars (final TrieMap<Object, Object> bt) {
81 assertNull(bt.put('a', 'a'));
82 assertNull(bt.put('b', 'b'));
83 assertNull(bt.put('c', 'c'));
84 assertNull(bt.put('d', 'd'));
85 assertNull(bt.put('e', 'e'));
87 assertEquals('a', bt.put('a', 'a'));
88 assertEquals('b', bt.put('b', 'b'));
89 assertEquals('c', bt.put('c', 'c'));
90 assertEquals('d', bt.put('d', 'd'));
91 assertEquals('e', bt.put('e', 'e'));
94 private static void insertStrings (final TrieMap<Object, Object> bt) {
95 assertNull(bt.put("a", "a"));
96 assertNull(bt.put("b", "b"));
97 assertNull(bt.put("c", "c"));
98 assertNull(bt.put("d", "d"));
99 assertNull(bt.put("e", "e"));
101 assertEquals("a", bt.put("a", "a"));
102 assertEquals("b", bt.put("b", "b"));
103 assertEquals("c", bt.put("c", "c"));
104 assertEquals("d", bt.put("d", "d"));
105 assertEquals("e", bt.put("e", "e"));
108 private static void insertBytes (final TrieMap<Object, Object> bt) {
109 for (byte i = 0; i < 128 && i >= 0; i++) {
110 final Byte bigB = Byte.valueOf(i);
111 assertNull(bt.put(bigB, bigB));
112 assertEquals(bigB, bt.put(bigB, bigB));
116 private static void insertInts (final TrieMap<Object, Object> bt) {
117 for (int i = 0; i < 128; i++) {
118 final Integer bigI = Integer.valueOf(i);
119 assertNull(bt.put(bigI, bigI));
120 assertEquals(bigI, bt.put(bigI, bigI));
124 private static void removeChars (final TrieMap<Object, Object> bt) {
125 assertNotNull(bt.lookup('a'));
126 assertNotNull(bt.lookup('b'));
127 assertNotNull(bt.lookup('c'));
128 assertNotNull(bt.lookup('d'));
129 assertNotNull(bt.lookup('e'));
131 assertNotNull(bt.remove('a'));
132 assertNotNull(bt.remove('b'));
133 assertNotNull(bt.remove('c'));
134 assertNotNull(bt.remove('d'));
135 assertNotNull(bt.remove('e'));
137 assertNull(bt.remove('a'));
138 assertNull(bt.remove('b'));
139 assertNull(bt.remove('c'));
140 assertNull(bt.remove('d'));
141 assertNull(bt.remove('e'));
143 assertNull(bt.lookup('a'));
144 assertNull(bt.lookup('b'));
145 assertNull(bt.lookup('c'));
146 assertNull(bt.lookup('d'));
147 assertNull(bt.lookup('e'));
150 private static void removeStrings (final TrieMap<Object, Object> bt) {
151 assertNotNull(bt.lookup("a"));
152 assertNotNull(bt.lookup("b"));
153 assertNotNull(bt.lookup("c"));
154 assertNotNull(bt.lookup("d"));
155 assertNotNull(bt.lookup("e"));
157 assertNotNull(bt.remove("a"));
158 assertNotNull(bt.remove("b"));
159 assertNotNull(bt.remove("c"));
160 assertNotNull(bt.remove("d"));
161 assertNotNull(bt.remove("e"));
163 assertNull(bt.remove("a"));
164 assertNull(bt.remove("b"));
165 assertNull(bt.remove("c"));
166 assertNull(bt.remove("d"));
167 assertNull(bt.remove("e"));
169 assertNull(bt.lookup("a"));
170 assertNull(bt.lookup("b"));
171 assertNull(bt.lookup("c"));
172 assertNull(bt.lookup("d"));
173 assertNull(bt.lookup("e"));
176 private static void removeInts (final TrieMap<Object, Object> bt) {
177 for (int i = 0; i < 128; i++) {
178 final Integer bigI = Integer.valueOf (i);
179 assertNotNull(bt.lookup(bigI));
180 assertNotNull(bt.remove(bigI));
181 assertNull(bt.remove(bigI));
182 assertNull(bt.lookup(bigI));
186 private static void removeBytes (final TrieMap<Object, Object> bt) {
187 for (byte i = 0; i < 128 && i >= 0; i++) {
188 final Byte bigB = Byte.valueOf (i);
189 assertNotNull(bt.lookup(bigB));
190 assertNotNull(bt.remove(bigB));
191 assertNull(bt.remove(bigB));
192 assertNull(bt.lookup(bigB));