--- jsr166/src/test/tck/Collection8Test.java 2016/10/31 20:08:40 1.7 +++ jsr166/src/test/tck/Collection8Test.java 2016/11/05 16:10:38 1.12 @@ -49,9 +49,27 @@ public class Collection8Test extends JSR impl); } + Object bomb() { + return new Object() { + public boolean equals(Object x) { throw new AssertionError(); } + public int hashCode() { throw new AssertionError(); } + }; + } + /** Checks properties of empty collections. */ public void testEmptyMeansEmpty() { Collection c = impl.emptyCollection(); + emptyMeansEmpty(c); + + if (c instanceof java.io.Serializable) + emptyMeansEmpty(serialClone(c)); + + Collection clone = cloneableClone(c); + if (clone != null) + emptyMeansEmpty(clone); + } + + void emptyMeansEmpty(Collection c) { assertTrue(c.isEmpty()); assertEquals(0, c.size()); assertEquals("[]", c.toString()); @@ -81,18 +99,25 @@ public class Collection8Test extends JSR c.iterator().forEachRemaining(alwaysThrows); c.spliterator().forEachRemaining(alwaysThrows); assertFalse(c.spliterator().tryAdvance(alwaysThrows)); - if (Queue.class.isAssignableFrom(impl.klazz())) { + if (c.spliterator().hasCharacteristics(Spliterator.SIZED)) + assertEquals(0, c.spliterator().estimateSize()); + assertFalse(c.contains(bomb())); + assertFalse(c.remove(bomb())); + if (c instanceof Queue) { Queue q = (Queue) c; assertNull(q.peek()); assertNull(q.poll()); } - if (Deque.class.isAssignableFrom(impl.klazz())) { + if (c instanceof Deque) { Deque d = (Deque) c; assertNull(d.peekFirst()); assertNull(d.peekLast()); assertNull(d.pollFirst()); assertNull(d.pollLast()); assertIteratorExhausted(d.descendingIterator()); + d.descendingIterator().forEachRemaining(alwaysThrows); + assertFalse(d.removeFirstOccurrence(bomb())); + assertFalse(d.removeLastOccurrence(bomb())); } } @@ -182,6 +207,7 @@ public class Collection8Test extends JSR } }; try { + assertFalse(survivors.contains(null)); try { boolean modified = c.removeIf(randomPredicate); if (!modified) { @@ -203,7 +229,7 @@ public class Collection8Test extends JSR System.err.printf("n=%d%n", n); System.err.printf("accepts=%s%n", accepts); System.err.printf("rejects=%s%n", rejects); - System.err.println(survivors); + System.err.printf("survivors=%s%n", survivors); System.err.printf("threw=%s%n", threwAt.get()); throw ex; }