1   /*
2    * $Id: TimerTestCase.java 8077 2007-08-27 20:15:25Z aperepel $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  
11  package org.mule.util.timer;
12  
13  import org.mule.tck.AbstractMuleTestCase;
14  
15  import java.util.Timer;
16  
17  public class TimerTestCase extends AbstractMuleTestCase implements TimeEventListener
18  {
19      volatile boolean fired;
20  
21      public void testTimer() throws Exception
22      {
23          Timer timer = new Timer();
24  
25          EventTimerTask task = new EventTimerTask(this);
26  
27          timer.schedule(task, 0, 1000);
28          task.start();
29          Thread.sleep(1500);
30          assertTrue(fired);
31      }
32  
33      public void testStopTimer() throws Exception
34      {
35          fired = false;
36          Timer timer = new Timer();
37  
38          EventTimerTask task = new EventTimerTask(this);
39  
40          timer.schedule(task, 0, 1000);
41          task.start();
42          Thread.sleep(1500);
43          assertTrue(fired);
44          fired = false;
45          task.stop();
46          Thread.sleep(1500);
47          assertTrue(!fired);
48      }
49  
50      public void testMultipleListeners() throws Exception
51      {
52          fired = false;
53          Timer timer = new Timer();
54          AnotherListener listener = new AnotherListener();
55  
56          EventTimerTask task = new EventTimerTask(this);
57          task.addListener(listener);
58  
59          timer.schedule(task, 0, 1000);
60  
61          task.start();
62          Thread.sleep(1500);
63          assertTrue(fired);
64          assertTrue(listener.wasFired());
65          listener.setWasFired(false);
66  
67          fired = false;
68          task.stop();
69          Thread.sleep(1500);
70          assertTrue(!fired);
71          assertTrue(!listener.wasFired());
72      }
73  
74      public void testRemoveListeners() throws Exception
75      {
76          fired = false;
77          Timer timer = new Timer();
78          AnotherListener listener = new AnotherListener();
79  
80          EventTimerTask task = new EventTimerTask(this);
81          task.addListener(listener);
82  
83          timer.schedule(task, 0, 1000);
84  
85          task.start();
86          Thread.sleep(1500);
87          assertTrue(fired);
88          assertTrue(listener.wasFired());
89          listener.setWasFired(false);
90  
91          fired = false;
92          task.stop();
93          task.removeListener(this);
94          task.start();
95          Thread.sleep(1500);
96          assertTrue(!fired);
97          assertTrue(listener.wasFired());
98          listener.setWasFired(false);
99          task.stop();
100         task.removeAllListeners();
101         task.start();
102         Thread.sleep(1500);
103         assertTrue(!fired);
104         assertTrue(!listener.wasFired());
105     }
106 
107     /*
108      * (non-Javadoc)
109      * 
110      * @see org.mule.util.timer.TimeEventListener#timeExpired(org.mule.util.timer.TimeEvent)
111      */
112     public void timeExpired(TimeEvent e)
113     {
114         assertTrue(e.getTimeExpired() > 0);
115         assertNotNull(e.getName());
116         fired = true;
117 
118     }
119 
120     private class AnotherListener implements TimeEventListener
121     {
122 
123         private boolean wasFired;
124 
125         /*
126          * (non-Javadoc)
127          * 
128          * @see org.mule.util.timer.TimeEventListener#timeExpired(org.mule.util.timer.TimeEvent)
129          */
130         public void timeExpired(TimeEvent e)
131         {
132             wasFired = true;
133 
134         }
135 
136         /**
137          * @return Returns the wasFired.
138          */
139         public boolean wasFired()
140         {
141             return wasFired;
142         }
143 
144         /**
145          * @param wasFired The wasFired to set.
146          */
147         public void setWasFired(boolean wasFired)
148         {
149             this.wasFired = wasFired;
150         }
151 
152     }
153 
154 }