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

Comparing jsr166/src/test/tck/CountDownLatchTest.java (file contents):
Revision 1.7 by dl, Sat Jan 10 01:41:59 2004 UTC vs.
Revision 1.19 by jsr166, Fri May 27 19:40:19 2011 UTC

# Line 1 | Line 1
1   /*
2   * Written by Doug Lea with assistance from members of JCP JSR-166
3   * Expert Group and released to the public domain, as explained at
4 < * http://creativecommons.org/licenses/publicdomain
5 < * Other contributors include Andrew Wright, Jeffrey Hayes,
6 < * Pat Fisher, Mike Judd.
4 > * http://creativecommons.org/publicdomain/zero/1.0/
5 > * Other contributors include Andrew Wright, Jeffrey Hayes,
6 > * Pat Fisher, Mike Judd.
7   */
8  
9   import junit.framework.*;
10   import java.util.*;
11   import java.util.concurrent.*;
12 + import static java.util.concurrent.TimeUnit.MILLISECONDS;
13  
14   public class CountDownLatchTest extends JSR166TestCase {
15      public static void main(String[] args) {
16 <        junit.textui.TestRunner.run (suite());  
16 >        junit.textui.TestRunner.run(suite());
17      }
18      public static Test suite() {
19 <        return new TestSuite(CountDownLatchTest.class);
19 >        return new TestSuite(CountDownLatchTest.class);
20      }
21  
22      /**
# Line 25 | Line 26 | public class CountDownLatchTest extends
26          try {
27              new CountDownLatch(-1);
28              shouldThrow();
29 <        } catch(IllegalArgumentException success){}
29 >        } catch (IllegalArgumentException success) {}
30      }
31  
32      /**
33       * getCount returns initial count and decreases after countDown
34       */
35      public void testGetCount() {
36 <        final CountDownLatch l = new CountDownLatch(2);
37 <        assertEquals(2, l.getCount());
38 <        l.countDown();
39 <        assertEquals(1, l.getCount());
36 >        final CountDownLatch l = new CountDownLatch(2);
37 >        assertEquals(2, l.getCount());
38 >        l.countDown();
39 >        assertEquals(1, l.getCount());
40      }
41  
42      /**
43       * countDown decrements count when positive and has no effect when zero
44       */
45      public void testCountDown() {
46 <        final CountDownLatch l = new CountDownLatch(1);
47 <        assertEquals(1, l.getCount());
48 <        l.countDown();
49 <        assertEquals(0, l.getCount());
50 <        l.countDown();
51 <        assertEquals(0, l.getCount());
46 >        final CountDownLatch l = new CountDownLatch(1);
47 >        assertEquals(1, l.getCount());
48 >        l.countDown();
49 >        assertEquals(0, l.getCount());
50 >        l.countDown();
51 >        assertEquals(0, l.getCount());
52      }
53  
54      /**
55       * await returns after countDown to zero, but not before
56       */
57 <    public void testAwait() {
58 <        final CountDownLatch l = new CountDownLatch(2);
57 >    public void testAwait() throws InterruptedException {
58 >        final CountDownLatch l = new CountDownLatch(2);
59 >
60 >        Thread t = new Thread(new CheckedRunnable() {
61 >            public void realRun() throws InterruptedException {
62 >                assertTrue(l.getCount() > 0);
63 >                l.await();
64 >                assertEquals(0, l.getCount());
65 >            }});
66  
67 <        Thread t = new Thread(new Runnable() {
68 <                public void run() {
69 <                    try {
70 <                        threadAssertTrue(l.getCount() > 0);
71 <                        l.await();
72 <                        threadAssertTrue(l.getCount() == 0);
73 <                    } catch(InterruptedException e){
74 <                        threadUnexpectedException();
67 <                    }
68 <                }
69 <            });
70 <        t.start();
71 <        try {
72 <            assertEquals(l.getCount(), 2);
73 <            Thread.sleep(SHORT_DELAY_MS);
74 <            l.countDown();
75 <            assertEquals(l.getCount(), 1);
76 <            l.countDown();
77 <            assertEquals(l.getCount(), 0);
78 <            t.join();
79 <        } catch (InterruptedException e){
80 <            unexpectedException();
81 <        }
67 >        t.start();
68 >        assertEquals(l.getCount(), 2);
69 >        delay(SHORT_DELAY_MS);
70 >        l.countDown();
71 >        assertEquals(l.getCount(), 1);
72 >        l.countDown();
73 >        assertEquals(l.getCount(), 0);
74 >        t.join();
75      }
83    
76  
77      /**
78       * timed await returns after countDown to zero
79       */
80 <    public void testTimedAwait() {
81 <        final CountDownLatch l = new CountDownLatch(2);
80 >    public void testTimedAwait() throws InterruptedException {
81 >        final CountDownLatch l = new CountDownLatch(2);
82  
83 <        Thread t = new Thread(new Runnable() {
84 <                public void run() {
85 <                    try {
86 <                        threadAssertTrue(l.getCount() > 0);
87 <                        threadAssertTrue(l.await(SMALL_DELAY_MS, TimeUnit.MILLISECONDS));
88 <                    } catch(InterruptedException e){
89 <                        threadUnexpectedException();
90 <                    }
91 <                }
92 <            });
93 <        t.start();
94 <        try {
95 <            assertEquals(l.getCount(), 2);
96 <            Thread.sleep(SHORT_DELAY_MS);
105 <            l.countDown();
106 <            assertEquals(l.getCount(), 1);
107 <            l.countDown();
108 <            assertEquals(l.getCount(), 0);
109 <            t.join();
110 <        } catch (InterruptedException e){
111 <            unexpectedException();
112 <        }
83 >        Thread t = new Thread(new CheckedRunnable() {
84 >            public void realRun() throws InterruptedException {
85 >                assertTrue(l.getCount() > 0);
86 >                assertTrue(l.await(SMALL_DELAY_MS, MILLISECONDS));
87 >            }});
88 >
89 >        t.start();
90 >        assertEquals(l.getCount(), 2);
91 >        delay(SHORT_DELAY_MS);
92 >        l.countDown();
93 >        assertEquals(l.getCount(), 1);
94 >        l.countDown();
95 >        assertEquals(l.getCount(), 0);
96 >        t.join();
97      }
98 <    
98 >
99      /**
100       * await throws IE if interrupted before counted down
101       */
102 <    public void testAwait_InterruptedException() {
102 >    public void testAwait_InterruptedException() throws InterruptedException {
103          final CountDownLatch l = new CountDownLatch(1);
104 <        Thread t = new Thread(new Runnable() {
105 <                public void run() {
106 <                    try {
107 <                        threadAssertTrue(l.getCount() > 0);
108 <                        l.await();
109 <                        threadShouldThrow();
110 <                    } catch(InterruptedException success){}
111 <                }
112 <            });
113 <        t.start();
130 <        try {
131 <            assertEquals(l.getCount(), 1);
132 <            t.interrupt();
133 <            t.join();
134 <        } catch (InterruptedException e){
135 <            unexpectedException();
136 <        }
104 >        Thread t = new Thread(new CheckedInterruptedRunnable() {
105 >            public void realRun() throws InterruptedException {
106 >                assertTrue(l.getCount() > 0);
107 >                l.await();
108 >            }});
109 >
110 >        t.start();
111 >        assertEquals(l.getCount(), 1);
112 >        t.interrupt();
113 >        t.join();
114      }
115  
116      /**
117       * timed await throws IE if interrupted before counted down
118       */
119 <    public void testTimedAwait_InterruptedException() {
119 >    public void testTimedAwait_InterruptedException() throws InterruptedException {
120          final CountDownLatch l = new CountDownLatch(1);
121 <        Thread t = new Thread(new Runnable() {
122 <                public void run() {
123 <                    try {
124 <                        threadAssertTrue(l.getCount() > 0);
125 <                        l.await(MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
126 <                        threadShouldThrow();                        
150 <                    } catch(InterruptedException success){}
151 <                }
152 <            });
121 >        Thread t = new Thread(new CheckedInterruptedRunnable() {
122 >            public void realRun() throws InterruptedException {
123 >                assertTrue(l.getCount() > 0);
124 >                l.await(MEDIUM_DELAY_MS, MILLISECONDS);
125 >            }});
126 >
127          t.start();
128 <        try {
129 <            Thread.sleep(SHORT_DELAY_MS);
130 <            assertEquals(l.getCount(), 1);
131 <            t.interrupt();
158 <            t.join();
159 <        } catch (InterruptedException e){
160 <            unexpectedException();
161 <        }
128 >        delay(SHORT_DELAY_MS);
129 >        assertEquals(l.getCount(), 1);
130 >        t.interrupt();
131 >        t.join();
132      }
133  
134      /**
135       * timed await times out if not counted down before timeout
136       */
137 <    public void testAwaitTimeout() {
137 >    public void testAwaitTimeout() throws InterruptedException {
138          final CountDownLatch l = new CountDownLatch(1);
139 <        Thread t = new Thread(new Runnable() {
140 <                public void run() {
141 <                    try {
142 <                        threadAssertTrue(l.getCount() > 0);
143 <                        threadAssertFalse(l.await(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));
144 <                        threadAssertTrue(l.getCount() > 0);
145 <                    } catch(InterruptedException ie){
176 <                        threadUnexpectedException();
177 <                    }
178 <                }
179 <            });
139 >        Thread t = new Thread(new CheckedRunnable() {
140 >            public void realRun() throws InterruptedException {
141 >                assertTrue(l.getCount() > 0);
142 >                assertFalse(l.await(SHORT_DELAY_MS, MILLISECONDS));
143 >                assertTrue(l.getCount() > 0);
144 >            }});
145 >
146          t.start();
147 <        try {
148 <            assertEquals(l.getCount(), 1);
183 <            t.join();
184 <        } catch (InterruptedException e){
185 <            unexpectedException();
186 <        }
147 >        assertEquals(l.getCount(), 1);
148 >        t.join();
149      }
150  
151      /**
# Line 191 | Line 153 | public class CountDownLatchTest extends
153       */
154      public void testToString() {
155          CountDownLatch s = new CountDownLatch(2);
156 <        String us = s.toString();
195 <        assertTrue(us.indexOf("Count = 2") >= 0);
156 >        assertTrue(s.toString().contains("Count = 2"));
157          s.countDown();
158 <        String s1 = s.toString();
198 <        assertTrue(s1.indexOf("Count = 1") >= 0);
158 >        assertTrue(s.toString().contains("Count = 1"));
159          s.countDown();
160 <        String s2 = s.toString();
201 <        assertTrue(s2.indexOf("Count = 0") >= 0);
160 >        assertTrue(s.toString().contains("Count = 0"));
161      }
162  
163   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines