ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/PhaserTest.java
(Generate patch)

Comparing jsr166/src/test/tck/PhaserTest.java (file contents):
Revision 1.20 by jsr166, Thu Oct 21 23:28:13 2010 UTC vs.
Revision 1.24 by dl, Mon Nov 29 15:47:29 2010 UTC

# Line 25 | Line 25 | public class PhaserTest extends JSR166Te
25          return new TestSuite(PhaserTest.class);
26      }
27  
28 +    private static final int maxParties = 65535;
29 +
30      /** Checks state of phaser. */
31      protected void assertState(Phaser phaser,
32                                 int phase, int parties, int unarrived) {
# Line 52 | Line 54 | public class PhaserTest extends JSR166Te
54       * Empty constructor builds a new Phaser with no parent, no registered
55       * parties and initial phase number of 0
56       */
57 <    public void testConstructor1() {
57 >    public void testConstructorDefaultValues() {
58          Phaser phaser = new Phaser();
59          assertNull(phaser.getParent());
60 +        assertEquals(0, phaser.getRegisteredParties());
61          assertEquals(0, phaser.getArrivedParties());
62 +        assertEquals(0, phaser.getUnarrivedParties());
63          assertEquals(0, phaser.getPhase());
64      }
65  
66      /**
67 <     * A negative party number for the constructor throws illegal argument
68 <     * exception
67 >     * Constructing with a negative number of parties throws
68 >     * IllegalArgumentException
69       */
70 <    public void testConstructor2() {
70 >    public void testConstructorNegativeParties() {
71          try {
72              new Phaser(-1);
73              shouldThrow();
# Line 71 | Line 75 | public class PhaserTest extends JSR166Te
75      }
76  
77      /**
78 <     * The parent being input into the constructor should equal the original
79 <     * parent when being returned
78 >     * Constructing with a negative number of parties throws
79 >     * IllegalArgumentException
80       */
81 <    public void testConstructor3() {
82 <        Phaser parent = new Phaser();
83 <        assertEquals(parent, new Phaser(parent).getParent());
81 >    public void testConstructorNegativeParties2() {
82 >        try {
83 >            new Phaser(new Phaser(), -1);
84 >            shouldThrow();
85 >        } catch (IllegalArgumentException success) {}
86      }
87  
88      /**
89 <     * A negative party number for the constructor throws illegal argument
90 <     * exception
89 >     * Constructing with a number of parties > 65535 throws
90 >     * IllegalArgumentException
91       */
92 <    public void testConstructor4() {
92 >    public void testConstructorPartiesExceedsLimit() {
93 >        new Phaser(maxParties);
94          try {
95 <            new Phaser(new Phaser(), -1);
95 >            new Phaser(maxParties + 1);
96              shouldThrow();
97          } catch (IllegalArgumentException success) {}
98 +
99 +        new Phaser(new Phaser(), maxParties);
100 +        try {
101 +            new Phaser(new Phaser(), maxParties + 1);
102 +            shouldThrow();
103 +        } catch (IllegalArgumentException success) {}
104 +    }
105 +
106 +    /**
107 +     * The parent provided to the constructor should be returned from
108 +     * a later call to getParent
109 +     */
110 +    public void testConstructor3() {
111 +        Phaser parent = new Phaser();
112 +        assertSame(parent, new Phaser(parent).getParent());
113 +        assertNull(new Phaser(null).getParent());
114      }
115  
116      /**
# Line 96 | Line 119 | public class PhaserTest extends JSR166Te
119       */
120      public void testConstructor5() {
121          Phaser parent = new Phaser();
122 <        assertEquals(parent, new Phaser(parent, 0).getParent());
122 >        assertSame(parent, new Phaser(parent, 0).getParent());
123 >        assertNull(new Phaser(null, 0).getParent());
124      }
125  
126      /**
127 <     * register() will increment the number of unarrived parties by one and not
128 <     * affect its arrived parties
127 >     * register() will increment the number of unarrived parties by
128 >     * one and not affect its arrived parties
129       */
130      public void testRegister1() {
131          Phaser phaser = new Phaser();
# Line 115 | Line 139 | public class PhaserTest extends JSR166Te
139       */
140      public void testRegister2() {
141          Phaser phaser = new Phaser(0);
118        int maxParties = (1 << 16) - 1;
142          assertState(phaser, 0, 0, 0);
143          assertEquals(0, phaser.bulkRegister(maxParties - 10));
144          assertState(phaser, 0, maxParties - 10, maxParties - 10);
# Line 128 | Line 151 | public class PhaserTest extends JSR166Te
151              phaser.register();
152              shouldThrow();
153          } catch (IllegalStateException success) {}
154 +
155 +        try {
156 +            phaser.bulkRegister(Integer.MAX_VALUE);
157 +            shouldThrow();
158 +        } catch (IllegalStateException success) {}
159      }
160  
161      /**
# Line 230 | Line 258 | public class PhaserTest extends JSR166Te
258          }
259          assertEquals(0, phaser.arriveAndDeregister());
260          assertTerminated(phaser);
261 +        assertEquals(1, phaser.getPhase() + Integer.MIN_VALUE);
262      }
263  
264      /**
# Line 261 | Line 290 | public class PhaserTest extends JSR166Te
290          Phaser phaser = new Phaser(1);
291          phaser.forceTermination();
292          assertTerminated(phaser, 1, 1);
293 +        assertEquals(0, phaser.getPhase() + Integer.MIN_VALUE);
294          assertTrue(phaser.arrive() < 0);
295          assertTrue(phaser.register() < 0);
296          assertTrue(phaser.arriveAndDeregister() < 0);
# Line 301 | Line 331 | public class PhaserTest extends JSR166Te
331          Phaser parent = new Phaser();
332          Phaser child = new Phaser(parent);
333          assertState(child, 0, 0, 0);
334 <        assertState(parent, 0, 1, 1);
334 >        assertState(parent, 0, 0, 0);
335          assertEquals(0, child.register());
336          assertState(child, 0, 1, 1);
337          assertState(parent, 0, 1, 1);
# Line 334 | Line 364 | public class PhaserTest extends JSR166Te
364          Phaser root = new Phaser();
365          Phaser parent = new Phaser(root);
366          Phaser child = new Phaser(parent);
367 <        assertState(root, 0, 1, 1);
368 <        assertState(parent, 0, 1, 1);
367 >        assertState(root, 0, 0, 0);
368 >        assertState(parent, 0, 0, 0);
369          assertState(child, 0, 0, 0);
370          assertEquals(0, child.register());
371          assertState(root, 0, 1, 1);
# Line 345 | Line 375 | public class PhaserTest extends JSR166Te
375          assertTerminated(child);
376          assertTerminated(parent);
377          assertTerminated(root);
378 +        assertEquals(1, root.getPhase() + Integer.MIN_VALUE);
379      }
380  
381      /**
# Line 363 | Line 394 | public class PhaserTest extends JSR166Te
394          assertState(phaser, 1, 1, 1);
395          assertEquals(1, phaser.arriveAndDeregister());
396          assertTerminated(phaser);
397 +        assertEquals(2, phaser.getPhase() + Integer.MIN_VALUE);
398          awaitTermination(t, SHORT_DELAY_MS);
399      }
400  
# Line 566 | Line 598 | public class PhaserTest extends JSR166Te
598                      assertTrue(phaser.awaitAdvance(0) < 0);
599                      assertTrue(phaser.isTerminated());
600                      assertTrue(phaser.getPhase() < 0);
601 +                    assertEquals(0, phaser.getPhase() + Integer.MIN_VALUE);
602                      assertEquals(3, phaser.getRegisteredParties());
603                  }};
604              threads.add(newStartedThread(r));
605          }
606          threadsStarted.await();
607          phaser.forceTermination();
608 +        assertEquals(0, phaser.getPhase() + Integer.MIN_VALUE);
609          for (Thread thread : threads)
610              awaitTermination(thread, SMALL_DELAY_MS);
611          assertTrue(phaser.isTerminated());

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines