--- jsr166/src/test/tck/PhaserTest.java 2010/11/08 20:02:57 1.22 +++ jsr166/src/test/tck/PhaserTest.java 2010/12/03 02:09:40 1.27 @@ -38,16 +38,19 @@ public class PhaserTest extends JSR166Te } /** Checks state of terminated phaser. */ - protected void assertTerminated(Phaser phaser, int parties, int unarrived) { + protected void assertTerminated(Phaser phaser, + int maxPhase, int parties, int unarrived) { assertTrue(phaser.isTerminated()); - assertTrue(phaser.getPhase() < 0); + int expectedPhase = maxPhase + Integer.MIN_VALUE; + assertEquals(expectedPhase, phaser.getPhase()); assertEquals(parties, phaser.getRegisteredParties()); - assertEquals(unarrived, phaser.getUnarrivedParties()); - assertEquals(parties - unarrived, phaser.getArrivedParties()); + assertEquals(expectedPhase, phaser.register()); + assertEquals(expectedPhase, phaser.arrive()); + assertEquals(expectedPhase, phaser.arriveAndDeregister()); } - protected void assertTerminated(Phaser phaser) { - assertTerminated(phaser, 0, 0); + protected void assertTerminated(Phaser phaser, int maxPhase) { + assertTerminated(phaser, maxPhase, 0, 0); } /** @@ -257,7 +260,7 @@ public class PhaserTest extends JSR166Te assertState(phaser, 0, 1, 1); } assertEquals(0, phaser.arriveAndDeregister()); - assertTerminated(phaser); + assertTerminated(phaser, 1); } /** @@ -288,7 +291,8 @@ public class PhaserTest extends JSR166Te public void testArrive3() { Phaser phaser = new Phaser(1); phaser.forceTermination(); - assertTerminated(phaser, 1, 1); + assertTerminated(phaser, 0, 1, 1); + assertEquals(0, phaser.getPhase() + Integer.MIN_VALUE); assertTrue(phaser.arrive() < 0); assertTrue(phaser.register() < 0); assertTrue(phaser.arriveAndDeregister() < 0); @@ -329,13 +333,13 @@ public class PhaserTest extends JSR166Te Phaser parent = new Phaser(); Phaser child = new Phaser(parent); assertState(child, 0, 0, 0); - assertState(parent, 0, 1, 1); + assertState(parent, 0, 0, 0); assertEquals(0, child.register()); assertState(child, 0, 1, 1); assertState(parent, 0, 1, 1); assertEquals(0, child.arriveAndDeregister()); - assertTerminated(child); - assertTerminated(parent); + assertTerminated(child, 1); + assertTerminated(parent, 1); } /** @@ -362,17 +366,17 @@ public class PhaserTest extends JSR166Te Phaser root = new Phaser(); Phaser parent = new Phaser(root); Phaser child = new Phaser(parent); - assertState(root, 0, 1, 1); - assertState(parent, 0, 1, 1); + assertState(root, 0, 0, 0); + assertState(parent, 0, 0, 0); assertState(child, 0, 0, 0); assertEquals(0, child.register()); assertState(root, 0, 1, 1); assertState(parent, 0, 1, 1); assertState(child, 0, 1, 1); assertEquals(0, child.arriveAndDeregister()); - assertTerminated(child); - assertTerminated(parent); - assertTerminated(root); + assertTerminated(child, 1); + assertTerminated(parent, 1); + assertTerminated(root, 1); } /** @@ -390,7 +394,7 @@ public class PhaserTest extends JSR166Te assertEquals(1, phaser.arriveAndDeregister()); assertState(phaser, 1, 1, 1); assertEquals(1, phaser.arriveAndDeregister()); - assertTerminated(phaser); + assertTerminated(phaser, 2); awaitTermination(t, SHORT_DELAY_MS); } @@ -594,16 +598,17 @@ public class PhaserTest extends JSR166Te assertTrue(phaser.awaitAdvance(0) < 0); assertTrue(phaser.isTerminated()); assertTrue(phaser.getPhase() < 0); + assertEquals(0, phaser.getPhase() + Integer.MIN_VALUE); assertEquals(3, phaser.getRegisteredParties()); }}; threads.add(newStartedThread(r)); } threadsStarted.await(); phaser.forceTermination(); + assertTrue(phaser.isTerminated()); + assertEquals(0, phaser.getPhase() + Integer.MIN_VALUE); for (Thread thread : threads) awaitTermination(thread, SMALL_DELAY_MS); - assertTrue(phaser.isTerminated()); - assertTrue(phaser.getPhase() < 0); assertEquals(3, phaser.getRegisteredParties()); }