Newer
Older
Bunsuu / TestFrac.java
@motoki miura motoki miura 4 days ago 2 KB Kadai
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);
    }
}