comparison mde/scheduler/Scheduler.d @ 85:56c0ddd90193

Intermediate commit (not stable). Changes to init system.
author Diggory Hardy <diggory.hardy@gmail.com>
date Thu, 11 Sep 2008 11:33:51 +0100
parents 66d555da083e
children 2a364c7d82c9
comparison
equal deleted inserted replaced
84:e0f1ec7fe73a 85:56c0ddd90193
74 * This function should have a unique identifier, which can be used with get/remove/request. 74 * This function should have a unique identifier, which can be used with get/remove/request.
75 * The identifier can be supplied or generated by getNewID(). 75 * The identifier can be supplied or generated by getNewID().
76 * 76 *
77 * Use the returned pointer to set the scheduling, e.g.: 77 * Use the returned pointer to set the scheduling, e.g.:
78 * ----- 78 * -----
79 * scheduler.add(scheduler.getNewID, myFunction).set(false, TimeSpan.millis (10)); 79 * scheduler.add(scheduler.getNewID, myFunction).set(false, TimeSpan.fromMillis (10));
80 * scheduler.get(15).frame = true; 80 * scheduler.get(15).frame = true;
81 */ 81 */
82 ScheduleFunc add (ID id, scheduleFct func) { 82 ScheduleFunc add (ID id, scheduleFct func) {
83 // Convert to a delegate. Maybe someday implicit casts will work... 83 // Convert to a delegate. Maybe someday implicit casts will work...
84 scheduleDlg d; 84 scheduleDlg d;
174 174
175 int ctr1 = 0; 175 int ctr1 = 0;
176 void inc1 (TimeSpan) { ++ctr1; } 176 void inc1 (TimeSpan) { ++ctr1; }
177 s.add(1,&inc1).frame = true; 177 s.add(1,&inc1).frame = true;
178 178
179 TimeSpan interval = TimeSpan.millis(1);// non-zero so we can check zero after first call 179 TimeSpan interval = TimeSpan.fromMillis(1);// non-zero so we can check zero after first call
180 void perInt (TimeSpan i) { interval = i; } 180 void perInt (TimeSpan i) { interval = i; }
181 s.add(2,&perInt).set(false, TimeSpan.millis(10)); 181 s.add(2,&perInt).set(false, TimeSpan.fromMillis(10));
182 182
183 Time t = Time.epoch1970; // starting time (value isn't important) 183 Time t = Time.epoch1970; // starting time (value isn't important)
184 s.execute (t); 184 s.execute (t);
185 assert (ctr1 == 1); // called once 185 assert (ctr1 == 1); // called once
186 assert (interval == TimeSpan.zero); // initial interval 186 assert (interval == TimeSpan.zero); // initial interval
187 187
188 t += TimeSpan.millis (5); // 5ms later... 188 t += TimeSpan.fromMillis (5); // 5ms later...
189 s.execute (t); 189 s.execute (t);
190 assert (ctr1 == 2); 190 assert (ctr1 == 2);
191 assert (interval == TimeSpan.zero); // perInt shouldn't get called 191 assert (interval == TimeSpan.zero); // perInt shouldn't get called
192 192
193 s.get(1).frame = false; // don't call per-frame anymore 193 s.get(1).frame = false; // don't call per-frame anymore
194 s.get(1).request = true; // but request next call 194 s.get(1).request = true; // but request next call
195 195
196 t += TimeSpan.millis (5); 196 t += TimeSpan.fromMillis (5);
197 s.execute (t); 197 s.execute (t);
198 assert (ctr1 == 3); // as requested 198 assert (ctr1 == 3); // as requested
199 assert (interval == TimeSpan.millis (10)); // perInt should get called (just!) 199 assert (interval == TimeSpan.fromMillis (10)); // perInt should get called (just!)
200 200
201 s.request(2); // request this 201 s.request(2); // request this
202 202
203 t += TimeSpan.millis (8); 203 t += TimeSpan.fromMillis (8);
204 s.execute (t); 204 s.execute (t);
205 assert (ctr1 == 3); // inc1 shouldn't run 205 assert (ctr1 == 3); // inc1 shouldn't run
206 assert (interval == TimeSpan.millis (8)); // perInt was requested 206 assert (interval == TimeSpan.fromMillis (8)); // perInt was requested
207 207
208 t += TimeSpan.millis (4); 208 t += TimeSpan.fromMillis (4);
209 s.execute (t); 209 s.execute (t);
210 // check perInt's last call-time was updated by the request, so it doesn't get run now: 210 // check perInt's last call-time was updated by the request, so it doesn't get run now:
211 assert (interval == TimeSpan.millis (8)); 211 assert (interval == TimeSpan.fromMillis (8));
212 212
213 logger.info ("Unittest complete."); 213 logger.info ("Unittest complete.");
214 } 214 }
215 } 215 }