b422a0bf51833f9725f487a499534a8e8803ac6e
[yangtools.git] / third-party / triemap / src / test / java / org / opendaylight / yangtools / triemap / TestHashCollisions.java
1 package org.opendaylight.yangtools.triemap;
2
3
4 import org.junit.Test;
5
6 public class TestHashCollisions {
7     @Test
8     public void testHashCollisions () {
9         final TrieMap<Object, Object> bt = new TrieMap<> ();
10
11         insertStrings (bt);
12         insertChars (bt);
13         insertInts (bt);
14         insertBytes (bt);
15
16         removeStrings (bt);
17         removeChars (bt);
18         removeInts (bt);
19         removeBytes (bt);
20
21         insertStrings (bt);
22         insertInts (bt);
23         insertBytes (bt);
24         insertChars (bt);
25
26         removeBytes (bt);
27         removeStrings (bt);
28         removeChars (bt);
29         removeInts (bt);
30
31         insertStrings (bt);
32         insertInts (bt);
33         insertBytes (bt);
34         insertChars (bt);
35
36         removeStrings (bt);
37         removeChars (bt);
38         removeInts (bt);
39         removeBytes (bt);
40
41         insertStrings (bt);
42         insertInts (bt);
43         insertBytes (bt);
44         insertChars (bt);
45
46         removeChars (bt);
47         removeInts (bt);
48         removeBytes (bt);
49         removeStrings (bt);
50
51         insertStrings (bt);
52         insertInts (bt);
53         insertBytes (bt);
54         insertChars (bt);
55
56         removeInts (bt);
57         removeBytes (bt);
58         removeStrings (bt);
59         removeChars (bt);
60
61         System.out.println (bt);
62     }
63
64     private static void insertChars (final TrieMap<Object, Object> bt) {
65         TestHelper.assertEquals (null, bt.put ('a', 'a'));
66         TestHelper.assertEquals (null, bt.put ('b', 'b'));
67         TestHelper.assertEquals (null, bt.put ('c', 'c'));
68         TestHelper.assertEquals (null, bt.put ('d', 'd'));
69         TestHelper.assertEquals (null, bt.put ('e', 'e'));
70
71         TestHelper.assertEquals ('a', bt.put ('a', 'a'));
72         TestHelper.assertEquals ('b', bt.put ('b', 'b'));
73         TestHelper.assertEquals ('c', bt.put ('c', 'c'));
74         TestHelper.assertEquals ('d', bt.put ('d', 'd'));
75         TestHelper.assertEquals ('e', bt.put ('e', 'e'));
76     }
77
78     private static void insertStrings (final TrieMap<Object, Object> bt) {
79         TestHelper.assertEquals (null, bt.put ("a", "a"));
80         TestHelper.assertEquals (null, bt.put ("b", "b"));
81         TestHelper.assertEquals (null, bt.put ("c", "c"));
82         TestHelper.assertEquals (null, bt.put ("d", "d"));
83         TestHelper.assertEquals (null, bt.put ("e", "e"));
84
85         TestHelper.assertEquals ("a", bt.put ("a", "a"));
86         TestHelper.assertEquals ("b", bt.put ("b", "b"));
87         TestHelper.assertEquals ("c", bt.put ("c", "c"));
88         TestHelper.assertEquals ("d", bt.put ("d", "d"));
89         TestHelper.assertEquals ("e", bt.put ("e", "e"));
90     }
91
92     private static void insertBytes (final TrieMap<Object, Object> bt) {
93         for (byte i = 0; i < 128 && i >= 0; i++) {
94             final Byte bigB = Byte.valueOf (i);
95             TestHelper.assertEquals (null, bt.put (bigB, bigB));
96             TestHelper.assertEquals (bigB, bt.put (bigB, bigB));
97         }
98     }
99
100     private static void insertInts (final TrieMap<Object, Object> bt) {
101         for (int i = 0; i < 128; i++) {
102             final Integer bigI = Integer.valueOf (i);
103             TestHelper.assertEquals (null, bt.put (bigI, bigI));
104             TestHelper.assertEquals (bigI, bt.put (bigI, bigI));
105         }
106     }
107
108     private static void removeChars (final TrieMap<Object, Object> bt) {
109         TestHelper.assertTrue (null != bt.lookup ('a'));
110         TestHelper.assertTrue (null != bt.lookup ('b'));
111         TestHelper.assertTrue (null != bt.lookup ('c'));
112         TestHelper.assertTrue (null != bt.lookup ('d'));
113         TestHelper.assertTrue (null != bt.lookup ('e'));
114
115         TestHelper.assertTrue (null != bt.remove ('a'));
116         TestHelper.assertTrue (null != bt.remove ('b'));
117         TestHelper.assertTrue (null != bt.remove ('c'));
118         TestHelper.assertTrue (null != bt.remove ('d'));
119         TestHelper.assertTrue (null != bt.remove ('e'));
120
121         TestHelper.assertFalse (null != bt.remove ('a'));
122         TestHelper.assertFalse (null != bt.remove ('b'));
123         TestHelper.assertFalse (null != bt.remove ('c'));
124         TestHelper.assertFalse (null != bt.remove ('d'));
125         TestHelper.assertFalse (null != bt.remove ('e'));
126
127         TestHelper.assertTrue (null == bt.lookup ('a'));
128         TestHelper.assertTrue (null == bt.lookup ('b'));
129         TestHelper.assertTrue (null == bt.lookup ('c'));
130         TestHelper.assertTrue (null == bt.lookup ('d'));
131         TestHelper.assertTrue (null == bt.lookup ('e'));
132     }
133
134     private static void removeStrings (final TrieMap<Object, Object> bt) {
135         TestHelper.assertTrue (null != bt.lookup ("a"));
136         TestHelper.assertTrue (null != bt.lookup ("b"));
137         TestHelper.assertTrue (null != bt.lookup ("c"));
138         TestHelper.assertTrue (null != bt.lookup ("d"));
139         TestHelper.assertTrue (null != bt.lookup ("e"));
140
141         TestHelper.assertTrue (null != bt.remove ("a"));
142         TestHelper.assertTrue (null != bt.remove ("b"));
143         TestHelper.assertTrue (null != bt.remove ("c"));
144         TestHelper.assertTrue (null != bt.remove ("d"));
145         TestHelper.assertTrue (null != bt.remove ("e"));
146
147         TestHelper.assertFalse (null != bt.remove ("a"));
148         TestHelper.assertFalse (null != bt.remove ("b"));
149         TestHelper.assertFalse (null != bt.remove ("c"));
150         TestHelper.assertFalse (null != bt.remove ("d"));
151         TestHelper.assertFalse (null != bt.remove ("e"));
152
153         TestHelper.assertTrue (null == bt.lookup ("a"));
154         TestHelper.assertTrue (null == bt.lookup ("b"));
155         TestHelper.assertTrue (null == bt.lookup ("c"));
156         TestHelper.assertTrue (null == bt.lookup ("d"));
157         TestHelper.assertTrue (null == bt.lookup ("e"));
158     }
159
160     private static void removeInts (final TrieMap<Object, Object> bt) {
161         for (int i = 0; i < 128; i++) {
162             final Integer bigI = Integer.valueOf (i);
163             TestHelper.assertTrue (null != bt.lookup (bigI));
164             TestHelper.assertTrue (null != bt.remove (bigI));
165             TestHelper.assertFalse (null != bt.remove (bigI));
166             TestHelper.assertTrue (null == bt.lookup (bigI));
167         }
168     }
169
170     private static void removeBytes (final TrieMap<Object, Object> bt) {
171         for (byte i = 0; i < 128 && i >= 0; i++) {
172             final Byte bigB = Byte.valueOf (i);
173             TestHelper.assertTrue (null != bt.lookup (bigB));
174             TestHelper.assertTrue (null != bt.remove (bigB));
175             TestHelper.assertFalse (null != bt.remove (bigB));
176             TestHelper.assertTrue (null == bt.lookup (bigB));
177         }
178     }
179 }