--- jsr166/src/test/tck/ConcurrentSkipListSetTest.java 2015/05/23 00:53:08 1.40 +++ jsr166/src/test/tck/ConcurrentSkipListSetTest.java 2018/01/07 22:59:18 1.49 @@ -35,13 +35,12 @@ public class ConcurrentSkipListSetTest e /** * Returns a new set of given size containing consecutive - * Integers 0 ... n. + * Integers 0 ... n - 1. */ - private ConcurrentSkipListSet populatedSet(int n) { - ConcurrentSkipListSet q = - new ConcurrentSkipListSet(); + private static ConcurrentSkipListSet populatedSet(int n) { + ConcurrentSkipListSet q = new ConcurrentSkipListSet<>(); assertTrue(q.isEmpty()); - for (int i = n-1; i >= 0; i -= 2) + for (int i = n - 1; i >= 0; i -= 2) assertTrue(q.add(new Integer(i))); for (int i = (n & 1); i < n; i += 2) assertTrue(q.add(new Integer(i))); @@ -53,7 +52,7 @@ public class ConcurrentSkipListSetTest e /** * Returns a new set of first 5 ints. */ - private ConcurrentSkipListSet set5() { + private static ConcurrentSkipListSet set5() { ConcurrentSkipListSet q = new ConcurrentSkipListSet(); assertTrue(q.isEmpty()); q.add(one); @@ -199,7 +198,14 @@ public class ConcurrentSkipListSetTest e q.add(new Object()); q.add(new Object()); shouldThrow(); - } catch (ClassCastException success) {} + } catch (ClassCastException success) { + assertTrue(q.size() < 2); + for (int i = 0, size = q.size(); i < size; i++) + assertSame(Object.class, q.pollFirst().getClass()); + assertNull(q.pollFirst()); + assertTrue(q.isEmpty()); + assertEquals(0, q.size()); + } } /** @@ -286,14 +292,14 @@ public class ConcurrentSkipListSetTest e assertTrue(q.contains(i)); assertTrue(q.remove(i)); assertFalse(q.contains(i)); - assertTrue(q.contains(i-1)); + assertTrue(q.contains(i - 1)); } for (int i = 0; i < SIZE; i += 2) { assertTrue(q.contains(i)); assertTrue(q.remove(i)); assertFalse(q.contains(i)); - assertFalse(q.remove(i+1)); - assertFalse(q.contains(i+1)); + assertFalse(q.remove(i + 1)); + assertFalse(q.contains(i + 1)); } assertTrue(q.isEmpty()); } @@ -519,7 +525,25 @@ public class ConcurrentSkipListSetTest e } /** - * A deserialized serialized set has same elements + * A cloned set equals original + */ + public void testClone() { + ConcurrentSkipListSet x = populatedSet(SIZE); + ConcurrentSkipListSet y = x.clone(); + + assertNotSame(x, y); + assertEquals(x.size(), y.size()); + assertEquals(x, y); + assertEquals(y, x); + while (!x.isEmpty()) { + assertFalse(y.isEmpty()); + assertEquals(x.pollFirst(), y.pollFirst()); + } + assertTrue(y.isEmpty()); + } + + /** + * A deserialized/reserialized set equals original */ public void testSerialization() throws Exception { NavigableSet x = populatedSet(SIZE); @@ -691,7 +715,8 @@ public class ConcurrentSkipListSetTest e } static NavigableSet newSet(Class cl) throws Exception { - NavigableSet result = (NavigableSet) cl.newInstance(); + NavigableSet result = + (NavigableSet) cl.getConstructor().newInstance(); assertEquals(0, result.size()); assertFalse(result.iterator().hasNext()); return result; @@ -974,7 +999,7 @@ public class ConcurrentSkipListSetTest e } static boolean eq(Integer i, int j) { - return i == null ? j == -1 : i == j; + return (i == null) ? j == -1 : i == j; } }