ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/jtreg/util/Collections/CheckedIdentityMap.java
(Generate patch)

Comparing jsr166/src/test/jtreg/util/Collections/CheckedIdentityMap.java (file contents):
Revision 1.1 by jsr166, Tue Sep 1 01:24:16 2009 UTC vs.
Revision 1.4 by jsr166, Mon Jan 8 03:12:03 2018 UTC

# Line 1 | Line 1
1   /*
2 < * Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
2 > * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
3   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4   *
5   * This code is free software; you can redistribute it and/or modify it
# Line 16 | Line 16
16   * 2 along with this work; if not, write to the Free Software Foundation,
17   * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18   *
19 < * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
20 < * CA 95054 USA or visit www.sun.com if you need additional information or
21 < * have any questions.
19 > * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 > * or visit www.oracle.com if you need additional information or have any
21 > * questions.
22   */
23  
24   /*
25   * @test
26   * @bug 6585904
27 + * @run testng CheckedIdentityMap
28   * @summary Checked collections with underlying maps with identity comparisons
29   */
30  
31 < import java.util.*;
32 < import static java.util.Collections.*;
31 > import org.testng.annotations.Test;
32 >
33 > import java.util.IdentityHashMap;
34 > import java.util.Map;
35 >
36 > import static java.util.Collections.checkedMap;
37 > import static org.testng.Assert.assertEquals;
38 > import static org.testng.Assert.assertNotEquals;
39  
40   public class CheckedIdentityMap {
41 <    void test(String[] args) throws Throwable {
41 >
42 >    @Test
43 >    public void testHashCode() {
44          Map<Integer, Integer> m1 = checkedMap(
45              new IdentityHashMap<Integer, Integer>(),
46              Integer.class, Integer.class);
47          Map<Integer, Integer> m2 = checkedMap(
48              new IdentityHashMap<Integer, Integer>(),
49              Integer.class, Integer.class);
50 +        // NB: these are unique instances. Compare vs. Integer.valueOf(1)
51          m1.put(new Integer(1), new Integer(1));
52          m2.put(new Integer(1), new Integer(1));
53  
54          Map.Entry<Integer, Integer> e1 = m1.entrySet().iterator().next();
55          Map.Entry<Integer, Integer> e2 = m2.entrySet().iterator().next();
56 <        check(! e1.equals(e2));
57 <        check(e1.hashCode() == hashCode(e1));
58 <        check(e2.hashCode() == hashCode(e2));
56 >
57 >        assertNotEquals(e1, e2);
58 >        assertEquals(e1.hashCode(), hashCode(e1));
59 >        assertEquals(e2.hashCode(), hashCode(e2));
60      }
61  
62 <    int hashCode(Map.Entry<?,?> e) {
62 >    static int hashCode(Map.Entry<?,?> e) {
63          return (System.identityHashCode(e.getKey()) ^
64                  System.identityHashCode(e.getValue()));
65      }
55
56    //--------------------- Infrastructure ---------------------------
57    volatile int passed = 0, failed = 0;
58    void pass() {passed++;}
59    void fail() {failed++; Thread.dumpStack();}
60    void fail(String msg) {System.err.println(msg); fail();}
61    void unexpected(Throwable t) {failed++; t.printStackTrace();}
62    void check(boolean cond) {if (cond) pass(); else fail();}
63    void equal(Object x, Object y) {
64        if (x == null ? y == null : x.equals(y)) pass();
65        else fail(x + " not equal to " + y);}
66    public static void main(String[] args) throws Throwable {
67        new CheckedIdentityMap().instanceMain(args);}
68    void instanceMain(String[] args) throws Throwable {
69        try {test(args);} catch (Throwable t) {unexpected(t);}
70        System.out.printf("%nPassed = %d, failed = %d%n%n", passed, failed);
71        if (failed > 0) throw new AssertionError("Some tests failed");}
72    abstract class F {abstract void f() throws Throwable;}
73    void THROWS(Class<? extends Throwable> k, F... fs) {
74        for (F f : fs)
75            try {f.f(); fail("Expected " + k.getName() + " not thrown");}
76            catch (Throwable t) {
77                if (k.isAssignableFrom(t.getClass())) pass();
78                else unexpected(t);}}
79    Thread checkedThread(final Runnable r) {
80        return new Thread() {public void run() {
81            try {r.run();} catch (Throwable t) {unexpected(t);}}};}
66   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines