--- jsr166/src/test/jtreg/util/Collections/CheckedIdentityMap.java 2010/09/05 21:32:19 1.2 +++ jsr166/src/test/jtreg/util/Collections/CheckedIdentityMap.java 2015/09/15 05:31:14 1.3 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,59 +24,42 @@ /* * @test * @bug 6585904 + * @run testng CheckedIdentityMap * @summary Checked collections with underlying maps with identity comparisons */ import java.util.*; import static java.util.Collections.*; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNotEquals; + +import org.testng.annotations.Test; + public class CheckedIdentityMap { - void test(String[] args) throws Throwable { + + @Test + public void testHashCode() { Map m1 = checkedMap( new IdentityHashMap(), Integer.class, Integer.class); Map m2 = checkedMap( new IdentityHashMap(), Integer.class, Integer.class); + // NB: these are unique instances. Compare vs. Integer.valueOf(1) m1.put(new Integer(1), new Integer(1)); m2.put(new Integer(1), new Integer(1)); Map.Entry e1 = m1.entrySet().iterator().next(); Map.Entry e2 = m2.entrySet().iterator().next(); - check(! e1.equals(e2)); - check(e1.hashCode() == hashCode(e1)); - check(e2.hashCode() == hashCode(e2)); + + assertNotEquals(e1, e2); + assertEquals(e1.hashCode(), hashCode(e1)); + assertEquals(e2.hashCode(), hashCode(e2)); } - int hashCode(Map.Entry e) { + static int hashCode(Map.Entry e) { return (System.identityHashCode(e.getKey()) ^ System.identityHashCode(e.getValue())); } - - //--------------------- Infrastructure --------------------------- - volatile int passed = 0, failed = 0; - void pass() {passed++;} - void fail() {failed++; Thread.dumpStack();} - void fail(String msg) {System.err.println(msg); fail();} - void unexpected(Throwable t) {failed++; t.printStackTrace();} - void check(boolean cond) {if (cond) pass(); else fail();} - void equal(Object x, Object y) { - if (x == null ? y == null : x.equals(y)) pass(); - else fail(x + " not equal to " + y);} - public static void main(String[] args) throws Throwable { - new CheckedIdentityMap().instanceMain(args);} - void instanceMain(String[] args) throws Throwable { - try {test(args);} catch (Throwable t) {unexpected(t);} - System.out.printf("%nPassed = %d, failed = %d%n%n", passed, failed); - if (failed > 0) throw new AssertionError("Some tests failed");} - abstract class F {abstract void f() throws Throwable;} - void THROWS(Class k, F... fs) { - for (F f : fs) - try {f.f(); fail("Expected " + k.getName() + " not thrown");} - catch (Throwable t) { - if (k.isAssignableFrom(t.getClass())) pass(); - else unexpected(t);}} - Thread checkedThread(final Runnable r) { - return new Thread() {public void run() { - try {r.run();} catch (Throwable t) {unexpected(t);}}};} }