View Javadoc

1   // Copyright (C) 2004 - 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 junit.framework.TestCase;
25  
26  
27  /**
28   * Unit test case for {@link WeakValueHashMap}.
29   *
30   * @author Philip Aston
31   */
32  public class TestWeakValueHashMap extends TestCase {
33  
34    public void testWeakValueHashMap() throws Exception {
35  
36      final WeakValueHashMap<Object, Object> map =
37        new WeakValueHashMap<Object, Object>();
38  
39      Object k1 = new Object();
40      Object v1 = new Object();
41      Object k2 = new Object();
42      Object v2 = new Object();
43      Object k3 = new Object();
44      Object v3 = new Object();
45  
46      assertNull(map.get(k1));
47  
48      map.put(k1, v1);
49      assertEquals(v1, map.get(k1));
50      assertNull(map.get(v2));
51  
52      map.put(k2, v2);
53      assertEquals(v1, map.get(k1));
54      assertEquals(v2, map.get(k2));
55  
56      map.put(k1, v2);
57      assertEquals(v2, map.get(k1));
58      assertEquals(v2, map.get(k2));
59  
60      map.put(k1, v1);
61  
62      v2 = null;
63      Runtime.getRuntime().gc();
64  
65      assertEquals(v1, map.get(k1));
66      assertNull(map.get(k2));
67  
68      final Object removedV1 = map.remove(k1);
69      assertEquals(v1, removedV1);
70      assertNull(map.get(k1));
71  
72      final Object removedV2 = map.remove(k2);
73      assertNull(removedV2);
74  
75      final Object removedV3 = map.remove(k3);
76      assertNull(removedV3);
77  
78      map.put(k3, v3);
79      assertEquals(v3, map.get(k3));
80  
81      map.put(k1, v1);
82      assertEquals(v1, map.get(k1));
83  
84      map.clear();
85  
86      assertNull(map.get(k1));
87      assertNull(map.get(k2));
88      assertNull(map.get(k3));
89    }
90  }