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