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 }