1
2
3
4
5
6
7 package org.mule.util.timer;
8
9 import org.mule.tck.junit4.AbstractMuleTestCase;
10
11 import java.util.Timer;
12
13 import org.junit.Test;
14
15 import static org.junit.Assert.assertNotNull;
16 import static org.junit.Assert.assertTrue;
17
18 public class TimerTestCase extends AbstractMuleTestCase implements TimeEventListener
19 {
20 private volatile boolean fired;
21
22 @Test
23 public void testTimer() throws Exception
24 {
25 Timer timer = new Timer();
26
27 EventTimerTask task = new EventTimerTask(this);
28
29 timer.schedule(task, 0, 1000);
30 task.start();
31 Thread.sleep(1500);
32 assertTrue(fired);
33 }
34
35 @Test
36 public void testStopTimer() throws Exception
37 {
38 fired = false;
39 Timer timer = new Timer();
40
41 EventTimerTask task = new EventTimerTask(this);
42
43 timer.schedule(task, 0, 1000);
44 task.start();
45 Thread.sleep(1500);
46 assertTrue(fired);
47 fired = false;
48 task.stop();
49 Thread.sleep(1500);
50 assertTrue(!fired);
51 }
52
53 @Test
54 public void testMultipleListeners() throws Exception
55 {
56 fired = false;
57 Timer timer = new Timer();
58 AnotherListener listener = new AnotherListener();
59
60 EventTimerTask task = new EventTimerTask(this);
61 task.addListener(listener);
62
63 timer.schedule(task, 0, 1000);
64
65 task.start();
66 Thread.sleep(1500);
67 assertTrue(fired);
68 assertTrue(listener.wasFired());
69 listener.setWasFired(false);
70
71 fired = false;
72 task.stop();
73 Thread.sleep(1500);
74 assertTrue(!fired);
75 assertTrue(!listener.wasFired());
76 }
77
78 @Test
79 public void testRemoveListeners() throws Exception
80 {
81 fired = false;
82 Timer timer = new Timer();
83 AnotherListener listener = new AnotherListener();
84
85 EventTimerTask task = new EventTimerTask(this);
86 task.addListener(listener);
87
88 timer.schedule(task, 0, 1000);
89
90 task.start();
91 Thread.sleep(1500);
92 assertTrue(fired);
93 assertTrue(listener.wasFired());
94 listener.setWasFired(false);
95
96 fired = false;
97 task.stop();
98 task.removeListener(this);
99 task.start();
100 Thread.sleep(1500);
101 assertTrue(!fired);
102 assertTrue(listener.wasFired());
103 listener.setWasFired(false);
104 task.stop();
105 task.removeAllListeners();
106 task.start();
107 Thread.sleep(1500);
108 assertTrue(!fired);
109 assertTrue(!listener.wasFired());
110 }
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 public void timeExpired(TimeEvent e)
126 {
127 wasFired = true;
128 }
129
130
131
132
133 public boolean wasFired()
134 {
135 return wasFired;
136 }
137
138
139
140
141 public void setWasFired(boolean wasFired)
142 {
143 this.wasFired = wasFired;
144 }
145
146 }
147
148 }