public class TestFrac {
public static void main(String[] args) {
Frac f1 = new Frac(1, 2);
Frac f2 = new Frac(3, 4);
boolean allOk = true;
allOk &= assertEquals(f1, new Frac(1, 2));
allOk &= assertEquals(f2, new Frac(3, 4));
allOk &= assertEquals(f1.plus(f2), new Frac(5, 4));
allOk &= assertEquals(f1.minus(f2), new Frac(-1, 4));
allOk &= assertEquals(f1.mul(f2), new Frac(3, 8));
allOk &= assertEquals(f1.div(f2), new Frac(2, 3));
allOk &= assertEquals(f1.逆数(), new Frac(2, 1));
Frac f3 = new Frac(42, 18);
Frac f4 = new Frac(7, 3);
f3.yakubun();
allOk &= assertSame(f3, f4);
if (allOk) {
System.out.println("All tests passed.");
} else {
System.out.println("Some tests failed.");
}
}
/**
* 分数を値としてみたときに同じであればtrue
* @param a1
* @param a2
* @return
*/
private static boolean assertEquals(Frac a1, Frac a2) {
if (a1.equals(a2)) {
return true;
} else {
System.out.println("NG "+ a1 + " != " + a2);
printCurrentLocation();
return false;
}
}
/**
* 分子・分母も同じであればtrue
* @param a1
* @param a2
* @return
*/
private static boolean assertSame(Frac a1, Frac a2) {
if (a1.same(a2)) {
return true;
} else {
System.out.println("NotSame "+ a1 + " != " + a2);
printCurrentLocation();
return false;
}
}
public static void printCurrentLocation() {
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
StackTraceElement element = stackTrace[3];
String fileName = element.getFileName();
int lineNumber = element.getLineNumber();
String methodName = element.getMethodName();
String className = element.getClassName();
System.out.println(" アサーション失敗箇所");
System.out.println(" > File: " + fileName);
System.out.println(" > Line: " + lineNumber);
System.out.println(" > Class: " + className);
System.out.println(" > Method: " + methodName);
}
}