View Javadoc

1   // Copyright (C) 2008 - 2009 Philip Aston
2   // All rights reserved.
3   //
4   // This file is part of The Grinder software distribution. Refer to
5   // the file LICENSE which is part of The Grinder distribution for
6   // licensing details. The Grinder distribution is available on the
7   // Internet at http://grinder.sourceforge.net/
8   //
9   // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
10  // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
11  // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
12  // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
13  // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
14  // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
15  // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
16  // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
18  // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
19  // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
20  // OF THE POSSIBILITY OF SUCH DAMAGE.
21  
22  package net.grinder.util;
23  
24  import java.util.HashMap;
25  import java.util.Map;
26  
27  import junit.framework.TestCase;
28  import net.grinder.util.AllocateLowestNumber.IteratorCallback;
29  
30  
31  /**
32   * Unit tests for {@link AllocateLowestNumberImplementation}.
33   *
34   * @author Philip Aston
35   */
36  public class TestAllocateLowestNumberImplementation extends TestCase {
37  
38    public void testAllocateLowestNumber() throws Exception {
39      final AllocateLowestNumber set = new AllocateLowestNumberImplementation();
40  
41      final Integer object1 = new Integer(121);
42      final Integer object2 = new Integer(1);
43      final Integer object3 = new Integer(3);
44      final Integer object4 = new Integer(31);
45  
46      assertEquals(0, set.add(object1));
47      assertEquals(0, set.add(object1));
48      assertEquals(1, set.add(object2));
49      assertEquals(2, set.add(object3));
50  
51      set.remove(object2);
52      assertEquals(1, set.add(object4));
53  
54      final Map<Object, Integer> expectation = new HashMap<Object, Integer>() {{
55        put(object1, 0);
56        put(object4, 1);
57        put(object3, 2);
58      }};
59  
60      set.forEach(new IteratorCallback() {
61        public void objectAndNumber(Object object, int number) {
62          assertEquals(expectation.remove(object), new Integer(number));
63        }
64      });
65  
66      assertEquals(0, expectation.size());
67  
68      set.remove(object1);
69      set.remove(object4);
70      set.remove(object4);
71      assertEquals(0, set.add(object1));
72    }
73  }