bonjour,
j'ai implémenté un "réveil", je dois maintenant tester si le Tick-Interval est prie en compte. voici la classe principale de mon réveil:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
/**
 * 
 */
package ipprojekt;
 
import de.hhn.se.pp.clock.exceptions.AlreadyStoppedException;
import de.hhn.se.pp.clock.exceptions.InvalidParameterException;
import de.hhn.se.pp.clock.impl.ClockAdapter;
import de.hhn.se.pp.clock.interfaces.Alarm;
 
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
 
import de.hhn.se.pp.clock.exceptions.AlreadyStoppedException;
import de.hhn.se.pp.clock.exceptions.InvalidParameterException;
import de.hhn.se.pp.clock.impl.AlarmEventImpl;
import de.hhn.se.pp.clock.impl.ClockAdapter;
import de.hhn.se.pp.clock.impl.OneTimeAlarm;
import de.hhn.se.pp.clock.impl.TimeEventImpl;
import de.hhn.se.pp.clock.interfaces.Alarm;
import de.hhn.se.pp.clock.interfaces.SimpleAlarmClock;
import de.hhn.se.pp.clock.interfaces.TimeListener;
 
/**
 * @author Gwewo
 * 
 *   MyWecker implement the core of a clock 
 */
public class TheWecker extends ClockAdapter implements Runnable{
 
// time interval
	private static long tickInterval;
 
	// die Name meines Weckers
	private static String clockName;
 
	//die jetztige Zeit
	private static Date now;
 
	//alarmzeit
//	private static long alarmTime;
 
	private static OneTimeAlarm alarm1;
 
	private static GuiListener timelisterner;
 
private static AlarmListenerGill alarmlistener ;
 
private static HashMap<String, Alarm> myHashMap;
 
//private static OneTimeAlarm alarm2;
 
	public TheWecker(String name,long thetickInterverl) 
	throws InvalidParameterException {
 
super(name);
 
//alarmlistener = new AlarmListenerGill();
 
timelisterner = new GuiListener();
 
myHashMap = new HashMap<String, Alarm>();
 
tickInterval = thetickInterverl;
 
this.clockName=name;
 
}
 
 
 
	/**
         * 
         * @param 
         *           Hier wird die jetztige Zeit initializiert und die Timelistener benachrichtigt
         * prüft ,ob die alarmzeit kleiner oder gleich die jetztige Zeit. Wenn ja, wird die Alarmzeit benachrichtigt und unmittelbar gelöscht
         */
	protected void makeATick()  {
 
		this.now = new Date();
 
		// Timelistener benachrichtigen
	    this.updateTimeListeners(new TimeEventImpl(this));
 
	    Collection<Alarm> m = myHashMap.values();
 
	    for (Alarm alarm : m) {
			Alarm a = alarm;
	  //alarme überprufen
 
	   if(alarm.isAlarmTimeNow(now.getSeconds())){
		   if(alarm.hasToBeRemoved()){
		   //und gegebenenfalls alarm listener benachrichtigen
 
		   		this.updateAlarmListeners(new AlarmEventImpl(this,this.getName()));
 
 
		   		this.removeAlarm(alarm);
		   }
	    }
	    }
	}
 
	/**
         * @param alarm,name
         * die Alarme wird in der Hasmap hinzugefügt
         */
 
	public void addAlarm(Alarm alarm) throws InvalidParameterException {
 
		// fügt die Alarm in der hasmap mit name als key und alarm als value
		myHashMap.put(alarm.getId(), alarm);
	}
/**
 * return tickInterval
 */
	public long getUpdateTimeInMilliseconds() {
 
		return this.tickInterval;
	}
/**
 * @param alarm
 * remove alarm
 * @param id 
 * nicht leere Objekte
 */
	public void removeAlarm(Alarm alarm) {
 
		if(alarm != null){
 
			myHashMap.remove(alarm.getId());
 
		}
 
	}
 
	public void stop() throws AlreadyStoppedException {
		// TODO Auto-generated method stub
 
	}
	/**
         * 
         * @param name
         * @param millisecsPerTick
         * @return ein Objeckt von SimpleAlarmClock
         * start der Thread
         * @throws InvalidParameterException
         */
	public static ClockAdapter createClock() 
	throws InvalidParameterException{		
		TheWecker myClock = new TheWecker("clockName", 3000);
		Thread t = new Thread(myClock)	;
		t.start();
		return myClock;
	}
	/**
         * implement die run methode von runnable
         * thread muss arbeiten, schlafen
         */
	public void run()  {
 
		while(true){
 
			try {
 
				Thread.sleep(tickInterval);
 
			} catch (InterruptedException e) {
 
				e.printStackTrace();
			}
 
		 this.makeATick();
 
 
		}
 
	}
 
	/**
         * main methode
         * @param args
         * @throws InvalidParameterException
         * @throws Exception
         */
	public static void main(String[] args) throws InvalidParameterException, Exception {
 
	ClockAdapter	myClock = TheWecker.createClock();
 
			// TimeListener dem Wecker hinzufügen
			myClock.addTimeListener(timelisterner);
 
			// AlarmListener dem Wecker hinzufügen
		myClock.addAlarmListener(alarmlistener);
 
			// Zeitstempel erzeugen
			now= new Date();
 
			String name = "mein alarm";
 
			// Alarmobjekt  erzeugen
			alarm1 = new OneTimeAlarm(now.getTime()+4000,name);
 
 
			// Alarm hinzufügen
			myClock.addAlarm(alarm1);
 
 
 
 
 
	}
 
 
 
	public Collection<Alarm> getAllAlarms() {
		// TODO Auto-generated method stub
		return null;
	}
 
 
 
}
voici ce que j'ai essayé avec Junit4
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package de.hhn.se.pp.clock.tests.incubation;
 
 
	import static org.junit.Assert.*;
 
	import org.junit.*;
 
 
	import de.hhn.se.pp.clock.exceptions.AlreadyStoppedException;
 
	import de.hhn.se.pp.clock.interfaces.SimpleAlarmClock;
	import de.hhn.se.pp.clock.tests.ClockFactory;
	import de.hhn.se.wnck.utils.testutils.FactoryFactory;
	public class Gwewo_Gilles_TickIntervalEingehaltenTest {
 
 
			private static FactoryFactory factoryFactory;
			private static ClockFactory clockFactory;
			private static SimpleAlarmClock clock; 
 
			static long firsttime = 0;
			static long nexttime = 0;
			static long milisecondsOfTick=0;
			public static boolean timeIntervalIsOk = true;
 
 
 
			/**
                         * @throws java.lang.Exception
                         */
			@BeforeClass
			public static void setUpBeforeClass() throws Exception {
				try{
				factoryFactory = new FactoryFactory();
				clockFactory = (ClockFactory) factoryFactory.getFactory(ClockFactory.FACTORY_NAME);
				}catch(Throwable e){
				   e.printStackTrace();
				  }
				milisecondsOfTick=3000;
 
				clock = clockFactory.createClock("Hello",milisecondsOfTick);
 
				firsttime = System.currentTimeMillis();
 
				 nexttime = System.currentTimeMillis();
 
				 if ((nexttime-firsttime)==milisecondsOfTick){
					 timeIntervalIsOk=true;
				}
				 else {
					 timeIntervalIsOk=false;
				 }
			}
		    @Test
		    /**
                     * 
                     */
 
		    public void checkTicks() throws Exception{
 
		    	Thread.sleep(2500);
		    	assertTrue(timeIntervalIsOk);
		    	Thread.sleep(1000);
		    	assertTrue(timeIntervalIsOk);
		    	Thread.sleep(1000);
		    	assertTrue(timeIntervalIsOk);
 
 
		    	if (timeIntervalIsOk==true){
		    		System.out.println("Test war erfolgreich.");
		    	}
		    }
 
 
		    @AfterClass
		    public static void cleanUp() throws AlreadyStoppedException{
		    	  if(clock!=null){
		    		  clock.stop();
		    		  clock = null;
		    	  }
		    }
 
		    public static void main(String[] args) {
		        org.junit.runner.JUnitCore.main("com.jmdoudoux.test.junit4.TickInterval");
		      }
 
 
		}
La classe factory me permet juste de créer un objet.

Quelqu'un peut il m'aider?

Merci

Gilles