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;
}
}