1   /*
2    * AbstractTimerTest.java
3    * JUnit based test
4    *
5    * Created on 4 de Abril de 2007, 10:50
6    */
7   
8   package tempcontroller.base;
9   
10  import java.util.HashSet;
11  import java.util.Random;
12  import java.util.Set;
13  import junit.framework.*;
14  
15  /**
16   *
17   * @author alapolli
18   */
19  public class TstAbstractTimerTest extends TestCase implements IOuvinteTimer {
20      TestTimer timer;
21      Random random;
22  
23      private int tickCounter;
24      private int tempoTotalCounter;
25      
26      public TstAbstractTimerTest(String testName) {
27          super(testName);
28      }
29      
30      protected void setUp() throws Exception {
31          timer = new TestTimer();
32          random = new Random();
33      }
34      
35      protected void tearDown() throws Exception {
36      }
37      
38      /**
39       * Teste do método setTempoTotal, da classe tempcontroller.base.AbstractTimer.
40       */
41      public void testSetTempoTotal() {
42          long tempoTotalLocal = 0L;
43          for(int i = 0; i < 10; i++) {
44              tempoTotalLocal = random.nextLong();
45              timer.metodosChamados.remove(TestTimer.SET_TEMPO_TOTAL_IMPL);
46              timer.setTempoTotal(tempoTotalLocal);
47              assertEquals(tempoTotalLocal, timer.getTempoTotal());
48              assertTrue(timer.metodosChamados.contains(TestTimer.SET_TEMPO_TOTAL_IMPL));
49          }
50      }
51      
52      /**
53       * Teste do método setTick, da classe tempcontroller.base.AbstractTimer.
54       */
55      public void testSetTick() {
56          long tickLocal = 0L;
57          for(int i = 0; i < 10; i++) {
58              tickLocal = random.nextLong();
59              timer.metodosChamados.remove(TestTimer.SET_TICK_IMPL);
60              timer.setTick(tickLocal);
61              assertEquals(tickLocal, timer.getTick());
62              assertTrue(timer.metodosChamados.contains(TestTimer.SET_TICK_IMPL));
63          }
64      }
65      
66      /**
67       * Teste do método addOuvinteTimer, da classe tempcontroller.base.AbstractTimer.
68       */
69      public void testAddOuvinteTimer() {
70          tickCounter=0;
71          tempoTotalCounter=0;
72          timer.removeOuvinteTimer(this);
73          timer.addOuvinteTimer(this);
74          timer.fireTickDoTimer();
75          timer.fireTickDoTimer();
76          timer.fireTempoTotalTerminado();
77          timer.fireTempoTotalTerminado();
78          assertEquals(2, tickCounter);
79          assertEquals(2, tempoTotalCounter);
80      }
81      
82      /**
83       * Teste do método removeOuvinteTimer, da classe tempcontroller.base.AbstractTimer.
84       */
85      public void testRemoveOuvinteTimer() {
86          tickCounter=0;
87          tempoTotalCounter=0;
88          timer.addOuvinteTimer(this);
89          timer.removeOuvinteTimer(this);
90          timer.fireTickDoTimer();
91          timer.fireTickDoTimer();
92          timer.fireTempoTotalTerminado();
93          timer.fireTempoTotalTerminado();
94          assertEquals(0, tickCounter);
95          assertEquals(0, tempoTotalCounter);
96      }
97      
98      /**
99       * Teste do método start, da classe tempcontroller.base.AbstractTimer.
100      */
101     public void testStart() {
102         timer.setCurrentTime(0);
103         timer.stop();
104         assertEquals(ITimer.Estado.NAO_INICIADO, timer.getEstado());
105         timer.metodosChamados.remove(TestTimer.START_IMPL);
106         timer.start();
107         assertTrue(timer.metodosChamados.contains(TestTimer.START_IMPL));
108         assertEquals(0, timer.getTempoDecorrido());
109         assertEquals(ITimer.Estado.CRONOMETRANDO, timer.getEstado());
110         timer.setCurrentTime(100);
111         assertEquals(100, timer.getTempoDecorrido());
112         timer.metodosChamados.remove(TestTimer.PAUSE_IMPL);
113         timer.pause();
114         assertTrue(timer.metodosChamados.contains(TestTimer.PAUSE_IMPL));
115         assertEquals(ITimer.Estado.PAUSADO, timer.getEstado());
116         timer.setCurrentTime(200);
117         assertEquals(100, timer.getTempoDecorrido());
118         timer.metodosChamados.remove(TestTimer.CONTINUA_IMPL);
119         timer.continua();
120         assertTrue(timer.metodosChamados.contains(TestTimer.CONTINUA_IMPL));
121         assertEquals(ITimer.Estado.CRONOMETRANDO, timer.getEstado());
122         timer.setCurrentTime(300);
123         assertEquals(200, timer.getTempoDecorrido());
124         timer.metodosChamados.remove(TestTimer.STOP_IMPL);
125         timer.stop();
126         assertTrue(timer.metodosChamados.contains(TestTimer.STOP_IMPL));
127         assertEquals(200, timer.getTempoDecorrido());
128         assertEquals(ITimer.Estado.NAO_INICIADO, timer.getEstado());
129     }
130     
131     public void tickDoTimer() {
132         tickCounter++;
133     }
134     
135     public void tempoTotalTerminado() {
136         tempoTotalCounter++;
137     }
138 }