package material;
import static com.xenoage.utils.math.Delta.df;
import static java.lang.Math.abs;
import static material.ExampleResult.Result.Accepted;
import static material.ExampleResult.Result.Failed;
import static material.ExampleResult.Result.Perfect;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
/**
* Test result for an example.
*
* @author Andreas Wenger
*/
@AllArgsConstructor @Getter @Setter
public class ExampleResult {
public static enum Result {
Perfect,
Accepted,
Failed;
}
private ExampleBase example;
private Result result;
private String comment;
public static ExampleResult perfect(ExampleBase example) {
return new ExampleResult(example, Perfect, null);
}
public static ExampleResult accepted(ExampleBase example, String comment) {
return new ExampleResult(example, Accepted, comment);
}
public static ExampleResult failed(ExampleBase example, String comment) {
return new ExampleResult(example, Failed, comment);
}
/**
* When this result is still not failed, and the given values are not equal,
* this result is set to failed.
*/
public void checkEquals(String comment, int expected, int actual) {
if (this.result == Result.Failed)
return;
if (actual != expected) {
this.result = Result.Failed;
this.comment = comment + " - expected " + expected + " but was " + actual;
}
}
/**
* When this result is still not failed, and the given values are not equal,
* this result is set to failed.
*/
public void checkEquals(String comment, float expected, float actual) {
if (this.result == Result.Failed)
return;
if (abs(actual - expected) > df) {
this.result = Result.Failed;
this.comment = comment + " - expected " + expected + " but was " + actual;
}
}
}