//Prevayler(TM) - The Free-Software Prevalence Layer.
//Copyright (C) 2001-2003 Klaus Wuestefeld
//This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
package org.prevayler.implementation.clock;
import java.util.Date;
import org.prevayler.*;
/** A deterministic Clock that always returns the same time until it is forced to advance. This class is useful as a Clock mock in order to run automated tests involving date/time related rules. A new BrokenClock's time() starts off at new Date(0);
*/
public class BrokenClock implements Clock {
private Date _time;
protected long _millis;
public BrokenClock() {
this(new Date(0));
}
public BrokenClock(Date time) {
_time = time;
_millis = time.getTime();
}
public synchronized Date time() { return _time; }
public synchronized void advanceTo(Date newTime) {
long newMillis = newTime.getTime();
if (newMillis == _millis) return;
_millis = newMillis;
_time = newTime;
}
}