--- jsr166/src/test/tck/ArrayDequeTest.java 2016/10/21 03:24:00 1.49 +++ jsr166/src/test/tck/ArrayDequeTest.java 2016/10/22 05:45:56 1.50 @@ -1019,15 +1019,16 @@ public class ArrayDequeTest extends JSR1 /** * Handle capacities near Integer.MAX_VALUE. - * ant -Dvmoptions='-Xms22g -Xmx22g' -Djsr166.testImplementationDetails=true -Djsr166.expensiveTests=true -Djsr166.tckTestClass=ArrayDequeTest -Djsr166.methodFilter=testHuge tck + * ant -Dvmoptions='-Xms28g -Xmx28g' -Djsr166.testImplementationDetails=true -Djsr166.expensiveTests=true -Djsr166.tckTestClass=ArrayDequeTest -Djsr166.methodFilter=testHuge tck */ public void testHuge() { if (! (testImplementationDetails && expensiveTests - && Runtime.getRuntime().maxMemory() > 21_000_000_000L)) + && Runtime.getRuntime().maxMemory() > 24L * (1 << 30))) return; ArrayDeque q; + Integer e = 42; final int maxSize = Integer.MAX_VALUE - 8; assertThrows(OutOfMemoryError.class, @@ -1035,21 +1036,31 @@ public class ArrayDequeTest extends JSR1 { q = new ArrayDeque<>(maxSize); + assertEquals(0, q.size()); + assertTrue(q.isEmpty()); q = null; } { q = new ArrayDeque(); - assertTrue(q.addAll(Collections.nCopies(maxSize - 2, (Integer) 42))); - assertEquals((Integer) 42, q.peekFirst()); - assertEquals((Integer) 42, q.peekLast()); + assertTrue(q.addAll(Collections.nCopies(maxSize - 2, e))); + assertEquals(e, q.peekFirst()); + assertEquals(e, q.peekLast()); assertEquals(maxSize - 2, q.size()); q.addFirst((Integer) 0); q.addLast((Integer) 1); assertEquals((Integer) 0, q.peekFirst()); assertEquals((Integer) 1, q.peekLast()); assertEquals(maxSize, q.size()); - q = null; + + ArrayDeque qq = q; + ArrayDeque smallish = new ArrayDeque( + Collections.nCopies(Integer.MAX_VALUE - maxSize + 1, e)); + assertThrows( + IllegalStateException.class, + () -> qq.addAll(qq), + () -> qq.addAll(smallish), + () -> smallish.addAll(qq)); } }