package fj.demo.test; import static fj.test.Arbitrary.arbInteger; import static fj.test.CheckResult.summary; import fj.test.Property; import static fj.test.Property.prop; import static fj.test.Property.property; /* Any integer is either positive, zero or negative. Less succintly, isPositive applied to any integer is equivalent in truth to the conjunction (&&) of isNegative applied to that integer and a test for equivalence to zero. */ public final class Triangulation { static boolean isNegative(final int i) { return i < 0; } static boolean isPositive(final int i) { // bzzt! return i == i; } public static void main(final String[] args) { final Property p = property(arbInteger, a -> prop(isPositive(a) == (a != 0 && !isNegative(a)))); summary.println(p.check()); // Falsified after 0 passed tests with argument: 0 } }