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;
25 public class TestHashCollisions {
27 public void testHashCollisions() {
28 final TrieMap<Object, Object> bt = TrieMap.create();
81 private static void insertChars(final TrieMap<Object, Object> bt) {
82 assertNull(bt.put('a', 'a'));
83 assertNull(bt.put('b', 'b'));
84 assertNull(bt.put('c', 'c'));
85 assertNull(bt.put('d', 'd'));
86 assertNull(bt.put('e', 'e'));
88 assertEquals('a', bt.put('a', 'a'));
89 assertEquals('b', bt.put('b', 'b'));
90 assertEquals('c', bt.put('c', 'c'));
91 assertEquals('d', bt.put('d', 'd'));
92 assertEquals('e', bt.put('e', 'e'));
95 private static void insertStrings(final TrieMap<Object, Object> bt) {
96 assertNull(bt.put("a", "a"));
97 assertNull(bt.put("b", "b"));
98 assertNull(bt.put("c", "c"));
99 assertNull(bt.put("d", "d"));
100 assertNull(bt.put("e", "e"));
102 assertEquals("a", bt.put("a", "a"));
103 assertEquals("b", bt.put("b", "b"));
104 assertEquals("c", bt.put("c", "c"));
105 assertEquals("d", bt.put("d", "d"));
106 assertEquals("e", bt.put("e", "e"));
109 private static void insertBytes(final TrieMap<Object, Object> bt) {
110 for (byte i = 0; i < 128 && i >= 0; i++) {
111 final Byte bigB = Byte.valueOf(i);
112 assertNull(bt.put(bigB, bigB));
113 assertEquals(bigB, bt.put(bigB, bigB));
117 private static void insertInts(final TrieMap<Object, Object> bt) {
118 for (int i = 0; i < 128; i++) {
119 final Integer bigI = Integer.valueOf(i);
120 assertNull(bt.put(bigI, bigI));
121 assertEquals(bigI, bt.put(bigI, bigI));
125 private static void removeChars(final TrieMap<Object, Object> bt) {
126 assertNotNull(bt.get('a'));
127 assertNotNull(bt.get('b'));
128 assertNotNull(bt.get('c'));
129 assertNotNull(bt.get('d'));
130 assertNotNull(bt.get('e'));
132 assertNotNull(bt.remove('a'));
133 assertNotNull(bt.remove('b'));
134 assertNotNull(bt.remove('c'));
135 assertNotNull(bt.remove('d'));
136 assertNotNull(bt.remove('e'));
138 assertNull(bt.remove('a'));
139 assertNull(bt.remove('b'));
140 assertNull(bt.remove('c'));
141 assertNull(bt.remove('d'));
142 assertNull(bt.remove('e'));
144 assertNull(bt.get('a'));
145 assertNull(bt.get('b'));
146 assertNull(bt.get('c'));
147 assertNull(bt.get('d'));
148 assertNull(bt.get('e'));
151 private static void removeStrings(final TrieMap<Object, Object> bt) {
152 assertNotNull(bt.get("a"));
153 assertNotNull(bt.get("b"));
154 assertNotNull(bt.get("c"));
155 assertNotNull(bt.get("d"));
156 assertNotNull(bt.get("e"));
158 assertNotNull(bt.remove("a"));
159 assertNotNull(bt.remove("b"));
160 assertNotNull(bt.remove("c"));
161 assertNotNull(bt.remove("d"));
162 assertNotNull(bt.remove("e"));
164 assertNull(bt.remove("a"));
165 assertNull(bt.remove("b"));
166 assertNull(bt.remove("c"));
167 assertNull(bt.remove("d"));
168 assertNull(bt.remove("e"));
170 assertNull(bt.get("a"));
171 assertNull(bt.get("b"));
172 assertNull(bt.get("c"));
173 assertNull(bt.get("d"));
174 assertNull(bt.get("e"));
177 private static void removeInts(final TrieMap<Object, Object> bt) {
178 for (int i = 0; i < 128; i++) {
179 final Integer bigI = Integer.valueOf(i);
180 assertNotNull(bt.get(bigI));
181 assertNotNull(bt.remove(bigI));
182 assertNull(bt.remove(bigI));
183 assertNull(bt.get(bigI));
187 private static void removeBytes(final TrieMap<Object, Object> bt) {
188 for (byte i = 0; i < 128 && i >= 0; i++) {
189 final Byte bigB = Byte.valueOf(i);
190 assertNotNull(bt.get(bigB));
191 assertNotNull(bt.remove(bigB));
192 assertNull(bt.remove(bigB));
193 assertNull(bt.get(bigB));