001 package viewguitest;
002
003
004
005 import java.util.Timer;
006
007 import junit.framework.TestCase;
008 import antichess.GameTimer;
009
010
011 /**
012 * Some tests for the GameTimer, hard to do because it is a timer. A lot of tests are done
013 * in TimerLabelTest.
014 * @author nlharr
015 *
016 * Methods that need testing:
017 * start() thoroughly
018 * stop() thoroughly
019 * getTime() thoroughly
020 * addTimerListener()
021 * notifyTimeUpdate()
022 * run()
023 * setTime
024 */
025
026 public class GameTimerTest extends TestCase
027 {
028 GameTimer timer[];
029
030
031 public GameTimerTest(String name) {
032 super(name);
033 timer = new GameTimer[6];
034 }
035
036 //initializes the GameTimers
037 public void initializeTimers(){
038 for (int i=0; i<timer.length; i++){
039 timer[i] = new GameTimer(1000*i, 100*(i+1));
040 }
041 }
042
043 /**
044 * Tests to see if the constructor is able to create valid GameTimers
045 * without throwing errors.
046 */
047 public void testConstructor(){
048 try{
049 initializeTimers();
050 }catch (Exception ex){
051 fail(ex.getMessage());
052 }
053 }
054
055 /**
056 * Tests that retrieving the initial time works
057 * Tests getTime() without running the GameTimers
058 */
059 public void testInitialGetTime(){
060 initializeTimers();
061 for (int i=0; i<timer.length; i++){
062 assertEquals("Timer "+Integer.toString(i)+" did not return the proper value",
063 1000*i, timer[i].getTime());
064 }
065 }
066
067
068 /**
069 * Naive start test to see if the start()
070 * Works by calling start() and waiting after the timers should be run down to check
071 * if the timers have 0 remaining on them.
072 */
073 public void testStart(){
074 initializeTimers();
075 for (int i=0; i<timer.length; i++){
076 timer[i].start();
077 }
078 try{
079 Thread.sleep(5050);
080 }catch (Exception ex){}
081
082 for (int i=0; i<timer.length; i++){
083 assertEquals("Timer "+Integer.toString(i)+" did not return the proper value",
084 0, timer[i].getTime());
085 }
086 }
087
088 /**
089 * Naive start test to see if the stop()
090 * Works by calling start() and waiting a very short time, stop it and then waiting
091 * until the timers would run down to zero.
092 */
093 public void testStop(){
094 initializeTimers();
095 for (int i=0; i<timer.length; i++){
096 timer[i].start();
097 }
098 try{
099 Thread.sleep(50);
100 }catch (Exception ex){}
101 for (int i=0; i<timer.length; i++){
102 timer[i].stop();
103 }
104
105 for (int i=1; i<timer.length; i++){
106 assertFalse("Timer "+Integer.toString(i)+" did not return the proper value",
107 timer[i].getTime()==0);
108 }
109 }
110
111
112 /**
113 * Tests isRunning()
114 */
115 public void testIsRunning(){
116 initializeTimers();
117 for (int i=0; i<timer.length; i++){
118 timer[i].start();
119 }
120 for (int i=0; i<timer.length; i++){
121 assertTrue("Timer "+Integer.toString(i)+" did not return the proper value",
122 timer[i].isRunning());
123 }
124 }
125
126 /**
127 * Tests setTime() and getTime() while not running
128 */
129 public void testSetGetTime(){
130 initializeTimers();
131 for (int i=0; i<timer.length; i++){
132 timer[i].setTime(i*52);
133 }
134
135 for (int i=0; i<timer.length; i++){
136 assertEquals("Timer "+Integer.toString(i)+" did not return the proper value",
137 52*i, timer[i].getTime());
138 }
139
140 }
141
142 }