06beb1be705feecfdd490d9d120b23b8f92f1e6b
[yangtools.git] / third-party / triemap / src / test / java / org / opendaylight / yangtools / triemap / TestMapIterator.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 java.util.HashSet;
19 import java.util.Iterator;
20 import java.util.Map;
21 import java.util.Map.Entry;
22 import java.util.Random;
23 import java.util.Set;
24 import org.junit.Test;
25
26 public class TestMapIterator {
27     @Test
28     public void testMapIterator () {
29         for (int i = 0; i < 60 * 1000; i+= 400 + new Random ().nextInt (400)) {
30             System.out.println (i);
31             final Map<Integer, Integer> bt = new TrieMap <> ();
32             for (int j = 0; j < i; j++) {
33                 TestHelper.assertEquals (null, bt.put (Integer.valueOf (j), Integer.valueOf (j)));
34             }
35             int count = 0;
36             final Set<Integer> set = new HashSet<> ();
37             for (final Map.Entry<Integer, Integer> e : bt.entrySet ()) {
38                 set.add (e.getKey ());
39                 count++;
40             }
41             for (final Integer j : set) {
42                 TestHelper.assertTrue (bt.containsKey (j));
43             }
44             for (final Integer j : bt.keySet ()) {
45                 TestHelper.assertTrue (set.contains (j));
46             }
47
48             TestHelper.assertEquals (i, count);
49             TestHelper.assertEquals (i, bt.size ());
50
51             for (Entry<Integer, Integer> e : bt.entrySet ()) {
52                 TestHelper.assertTrue (e.getValue () == bt.get (e.getKey ()));
53                 e.setValue (e.getValue () + 1);
54                 TestHelper.assertTrue (e.getValue () == e.getKey () + 1);
55                 TestHelper.assertTrue (e.getValue () == bt.get (e.getKey ()));
56                 e.setValue (e.getValue () - 1);
57             }
58
59             for (final Iterator<Integer> iter = bt.keySet ().iterator (); iter.hasNext ();) {
60                 final Integer k = iter.next ();
61                 TestHelper.assertTrue (bt.containsKey (k));
62                 iter.remove ();
63                 TestHelper.assertFalse (bt.containsKey (k));
64             }
65
66             TestHelper.assertEquals (0, bt.size ());
67             TestHelper.assertTrue (bt.isEmpty ());
68         }
69     }
70 }