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