1   /************************************************************
2   *                     Copyright                            *
3   * Portions of this software are Copyright (c) 1993 - 2002, *
4   * Chad Z. Hower (Kudzu) and the Indy Pit Crew              *
5   *  - http://www.nevrona.com/Indy/                          *
6   ************************************************************/
7   package org.indy;
8   
9   import junit.framework.TestCase;
10  
11  
12  /***
13   * DOCUMENT ME!
14   *
15   * @version $Revision$
16   * @author $author$
17   */
18  public class TestIndyThread extends TestCase {
19    private volatile boolean runFired;
20    private volatile boolean beforeRunFired;
21    private volatile boolean afterRunFired;
22    private volatile boolean cleanupFired;
23    private volatile boolean beforeExecuteFired;
24    private volatile boolean afterExecuteFired;
25  
26    /***
27     * Creates a new TestIndyThread object.
28     *
29     * @param s DOCUMENT ME!
30     */
31    public TestIndyThread(String s) {
32      super(s);
33    }
34  
35    /***
36     * DOCUMENT ME!
37     */
38    protected void setUp() {
39      runFired = false;
40      beforeRunFired = false;
41      afterRunFired = false;
42      cleanupFired = false;
43      beforeExecuteFired = false;
44      afterExecuteFired = false;
45    }
46  
47    /***
48     * DOCUMENT ME!
49     */
50    protected void tearDown() {
51    }
52  
53    /***
54     * DOCUMENT ME!
55     */
56    public void testStart() {
57      IndyThread testStartThread = new TestRunThread();
58      testStartThread.start();
59  
60      try {
61        testStartThread.join();
62      }
63       catch (InterruptedException ex) {
64      }
65  
66  
67      //All methods should have fired at least once
68      assertEquals("Check run() called", true, runFired);
69      assertEquals("Check beforeRun() called", true, beforeRunFired);
70      assertEquals("Check afterRun() called", true, afterRunFired);
71      assertEquals("Check cleanup() called", true, cleanupFired);
72      assertEquals("Check afterExecute() called", true, afterExecuteFired);
73      assertEquals("Check beforeExecute() called", true, beforeExecuteFired);
74    }
75  
76    /***
77     * DOCUMENT ME!
78     */
79    public void testExceptionBeforeExecute() {
80      IndyThread thread = new TestRunThread() {
81        protected void beforeExecute() {
82          throw new RuntimeException("Exception from Before Execute");
83        }
84      };
85  
86      thread.start();
87  
88      try {
89        thread.join();
90      }
91       catch (InterruptedException ex) {
92      }
93  
94  
95      //After execute SHOULD fire
96      assertTrue("Check afterExecute() called", afterExecuteFired);
97  
98  
99      //Nothing else should
100     assertTrue("Check run() NOT Called", !runFired);
101     assertTrue("Check beforeRun() NOT called", !beforeRunFired);
102     assertTrue("Check afterRun() NOT called", !afterRunFired);
103     assertTrue("Check cleanup() NOT called", !cleanupFired);
104   }
105 
106   /***
107    * DOCUMENT ME!
108    */
109   public void testExceptionBeforeRun() {
110     IndyThread thread = new TestRunThread() {
111       protected void beforeRun() {
112         throw new RuntimeException("Exception from Before Run");
113       }
114     };
115 
116     thread.start();
117 
118     try {
119       thread.join();
120     }
121      catch (InterruptedException ex) {
122     }
123 
124 
125     //These SHOULD fire
126     assertTrue("Check afterExecute() called", afterExecuteFired);
127     assertTrue("Check cleanup() called", cleanupFired);
128 
129 
130     //Nothing else should
131     assertTrue("Check run() NOT Called", !runFired);
132     assertTrue("Check afterRun() NOT called", !afterRunFired);
133   }
134 
135   /***
136    * DOCUMENT ME!
137    */
138   public void testExceptionRun() {
139     IndyThread thread = new TestRunThread() {
140       public void run() {
141         super.run();
142         throw new RuntimeException("Exception from Run");
143       }
144     };
145 
146     thread.start();
147 
148     try {
149       thread.join();
150     }
151      catch (InterruptedException ex) {
152     }
153 
154 
155     //All methods SHOULD fire
156     assertTrue("Check afterExecute() called", afterExecuteFired);
157     assertTrue("Check cleanup() called", cleanupFired);
158     assertTrue("Check run() called", runFired);
159     assertTrue("Check beforeRun() called", beforeRunFired);
160     assertTrue("Check afterRun() called", afterRunFired);
161   }
162 
163   /***
164    * DOCUMENT ME!
165    */
166   public void testExceptionCleanup() {
167     IndyThread thread = new TestRunThread() {
168       protected void cleanup() {
169         super.cleanup();
170         throw new RuntimeException("Exception from Cleanup");
171       }
172     };
173 
174     thread.start();
175 
176     try {
177       thread.join();
178     }
179      catch (InterruptedException ex) {
180     }
181 
182 
183     //All methods SHOULD fire
184     assertTrue("Check afterExecute() called", afterExecuteFired);
185     assertTrue("Check cleanup() called", cleanupFired);
186     assertTrue("Check run() called", runFired);
187     assertTrue("Check beforeRun() called", beforeRunFired);
188     assertTrue("Check afterRun() called", afterRunFired);
189   }
190 
191   /***
192    * DOCUMENT ME!
193    */
194   public void testPriority() {
195     IndyThread thread = new TestRunThread() {
196       public void run() {
197         runFired = true;
198       }
199     };
200 
201     thread.start();
202 
203     thread.setPriority(IndyThread.Priority.MIN);
204     assertEquals("Thread priority min", IndyThread.Priority.MIN, 
205                  thread.getPriority());
206 
207     thread.setPriority(IndyThread.Priority.NORMAL);
208     assertEquals("Thread priority min", IndyThread.Priority.NORMAL, 
209                  thread.getPriority());
210 
211     thread.setPriority(IndyThread.Priority.MAX);
212     assertEquals("Thread priority min", IndyThread.Priority.MAX, 
213                  thread.getPriority());
214 
215     thread.stop();
216 
217     try {
218       thread.join();
219     }
220      catch (InterruptedException ex) {
221     }
222   }
223 
224   private class TestRunThread extends IndyThread {
225     public void run() {
226       System.err.println("Run()");
227       runFired = true;
228       stop();
229     }
230 
231     protected void afterRun() {
232       System.err.println("afterRun()");
233       afterRunFired = true;
234     }
235 
236     protected void beforeRun() {
237       System.err.println("beforeRun()");
238       beforeRunFired = true;
239     }
240 
241     protected void cleanup() {
242       System.err.println("cleanup()");
243       cleanupFired = true;
244     }
245 
246     protected void afterExecute() {
247       System.err.println("afterExecute()");
248       afterExecuteFired = true;
249     }
250 
251     protected void beforeExecute() {
252       System.err.println("beforeExecute()");
253       beforeExecuteFired = true;
254     }
255   }
256 }
This page was automatically generated by Maven