--- jsr166/src/test/tck/SynchronousQueueTest.java 2011/07/15 18:49:31 1.39 +++ jsr166/src/test/tck/SynchronousQueueTest.java 2015/01/17 22:55:06 1.46 @@ -6,19 +6,20 @@ * Pat Fisher, Mike Judd. */ -import junit.framework.*; -import java.util.Arrays; +import static java.util.concurrent.TimeUnit.MILLISECONDS; + import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Iterator; import java.util.NoSuchElementException; -import java.util.Queue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.CountDownLatch; import java.util.concurrent.Executors; import java.util.concurrent.ExecutorService; import java.util.concurrent.SynchronousQueue; -import static java.util.concurrent.TimeUnit.MILLISECONDS; + +import junit.framework.Test; public class SynchronousQueueTest extends JSR166TestCase { @@ -166,7 +167,7 @@ public class SynchronousQueueTest extend }}); await(pleaseTake); - assertEquals(q.remainingCapacity(), 0); + assertEquals(0, q.remainingCapacity()); try { assertSame(one, q.take()); } catch (InterruptedException e) { threadUnexpectedException(e); } @@ -174,7 +175,7 @@ public class SynchronousQueueTest extend assertThreadStaysAlive(t); t.interrupt(); awaitTermination(t); - assertEquals(q.remainingCapacity(), 0); + assertEquals(0, q.remainingCapacity()); } /** @@ -389,18 +390,29 @@ public class SynchronousQueueTest extend public void testToArray(boolean fair) { final SynchronousQueue q = new SynchronousQueue(fair); Object[] o = q.toArray(); - assertEquals(o.length, 0); + assertEquals(0, o.length); } /** - * toArray(a) is nulled at position 0 + * toArray(Integer array) returns its argument with the first + * element (if present) nulled out */ public void testToArray2() { testToArray2(false); } public void testToArray2_fair() { testToArray2(true); } public void testToArray2(boolean fair) { - final SynchronousQueue q = new SynchronousQueue(fair); - Integer[] ints = new Integer[1]; - assertNull(ints[0]); + final SynchronousQueue q + = new SynchronousQueue(fair); + Integer[] a; + + a = new Integer[0]; + assertSame(a, q.toArray(a)); + + a = new Integer[3]; + Arrays.fill(a, 42); + assertSame(a, q.toArray(a)); + assertNull(a[0]); + for (int i = 1; i < a.length; i++) + assertEquals(42, (int) a[i]); } /** @@ -411,7 +423,7 @@ public class SynchronousQueueTest extend public void testToArray_null(boolean fair) { final SynchronousQueue q = new SynchronousQueue(fair); try { - Object o[] = q.toArray(null); + Object[] o = q.toArray(null); shouldThrow(); } catch (NullPointerException success) {} } @@ -422,13 +434,7 @@ public class SynchronousQueueTest extend public void testIterator() { testIterator(false); } public void testIterator_fair() { testIterator(true); } public void testIterator(boolean fair) { - final SynchronousQueue q = new SynchronousQueue(fair); - Iterator it = q.iterator(); - assertFalse(it.hasNext()); - try { - Object x = it.next(); - shouldThrow(); - } catch (NoSuchElementException success) {} + assertIteratorExhausted(new SynchronousQueue(fair).iterator()); } /** @@ -512,14 +518,22 @@ public class SynchronousQueueTest extend /** * a deserialized serialized queue is usable */ - public void testSerialization() { testSerialization(false); } - public void testSerialization_fair() { testSerialization(true); } - public void testSerialization(boolean fair) { - final SynchronousQueue x = new SynchronousQueue(fair); - final SynchronousQueue y = serialClone(x); - assertTrue(x != y); - assertTrue(x.isEmpty()); - assertTrue(y.isEmpty()); + public void testSerialization() { + final SynchronousQueue x = new SynchronousQueue(); + final SynchronousQueue y = new SynchronousQueue(false); + final SynchronousQueue z = new SynchronousQueue(true); + assertSerialEquals(x, y); + assertNotSerialEquals(x, z); + SynchronousQueue[] qs = { x, y, z }; + for (SynchronousQueue q : qs) { + SynchronousQueue clone = serialClone(q); + assertNotSame(q, clone); + assertSerialEquals(q, clone); + assertTrue(clone.isEmpty()); + assertEquals(0, clone.size()); + assertEquals(0, clone.remainingCapacity()); + assertFalse(clone.offer(zero)); + } } /** @@ -531,8 +545,8 @@ public class SynchronousQueueTest extend final SynchronousQueue q = new SynchronousQueue(fair); ArrayList l = new ArrayList(); q.drainTo(l); - assertEquals(q.size(), 0); - assertEquals(l.size(), 0); + assertEquals(0, q.size()); + assertEquals(0, l.size()); } /** @@ -587,4 +601,13 @@ public class SynchronousQueueTest extend awaitTermination(t2); } + /** + * remove(null), contains(null) always return false + */ + public void testNeverContainsNull() { + Collection q = new SynchronousQueue(); + assertFalse(q.contains(null)); + assertFalse(q.remove(null)); + } + }