Migrate to tech.pantheon.TrieMap
[yangtools.git] / third-party / triemap / src / test / java / org / opendaylight / yangtools / triemap / TestHashCollisions.java
1 /*
2  * (C) Copyright 2016 Pantheon Technologies, s.r.o. and others.
3  *
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
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16 package org.opendaylight.yangtools.triemap;
17
18 import static org.junit.Assert.assertEquals;
19 import static org.junit.Assert.assertNotNull;
20 import static org.junit.Assert.assertNull;
21
22 import org.junit.Test;
23
24 @Deprecated
25 public class TestHashCollisions {
26     @Test
27     public void testHashCollisions() {
28         final TrieMap<Object, Object> bt = TrieMap.create();
29
30         insertStrings(bt);
31         insertChars(bt);
32         insertInts(bt);
33         insertBytes(bt);
34
35         removeStrings(bt);
36         removeChars(bt);
37         removeInts(bt);
38         removeBytes(bt);
39
40         insertStrings(bt);
41         insertInts(bt);
42         insertBytes(bt);
43         insertChars(bt);
44
45         removeBytes(bt);
46         removeStrings(bt);
47         removeChars(bt);
48         removeInts(bt);
49
50         insertStrings(bt);
51         insertInts(bt);
52         insertBytes(bt);
53         insertChars(bt);
54
55         removeStrings(bt);
56         removeChars(bt);
57         removeInts(bt);
58         removeBytes(bt);
59
60         insertStrings(bt);
61         insertInts(bt);
62         insertBytes(bt);
63         insertChars(bt);
64
65         removeChars(bt);
66         removeInts(bt);
67         removeBytes(bt);
68         removeStrings(bt);
69
70         insertStrings(bt);
71         insertInts(bt);
72         insertBytes(bt);
73         insertChars(bt);
74
75         removeInts(bt);
76         removeBytes(bt);
77         removeStrings(bt);
78         removeChars(bt);
79     }
80
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'));
87
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'));
93     }
94
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"));
101
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"));
107     }
108
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));
114         }
115     }
116
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));
122         }
123     }
124
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'));
131
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'));
137
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'));
143
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'));
149     }
150
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"));
157
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"));
163
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"));
169
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"));
175     }
176
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));
184         }
185     }
186
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));
194         }
195     }
196 }