package fit.decorator.performance;
import fit.Fixture;
import fit.Parse;
import fit.decorator.FixtureDecorator;
import fit.decorator.util.DefaultTimer;
import fit.decorator.util.Timer;
public abstract class TimeBasedFixtureDecorator extends FixtureDecorator {
public static final String ACTUAL_TIME_TAKEN = "actualTimeTaken";
protected Timer stopWatch;
protected long elapsedTime;
public TimeBasedFixtureDecorator(Timer watch) {
super();
this.stopWatch = watch;
}
TimeBasedFixtureDecorator() {
super();
this.stopWatch = new DefaultTimer();
}
@Override
protected void run(Fixture fixture, Parse table) {
stopWatch.start();
super.run(fixture, table);
elapsedTime = stopWatch.elapsed();
}
protected void updateColumns(Parse column, double actual, double expected, boolean greaterThan) {
if (checkFailureBasedOnGreaterThanOrLessThan(actual, expected, greaterThan)) {
super.wrong(column, Double.toString(actual));
} else {
super.right(column);
column.addToBody("<hr>actual " + Double.toString(actual));
}
}
private boolean checkFailureBasedOnGreaterThanOrLessThan(double actual, double expected, boolean greaterThan) {
return greaterThan ? actual > expected : actual < expected;
}
}