package org.osgl; import org.junit.Test; import org.osgl.util.N; public class PredicateTest extends TestBase { private class ReturnPreSetBool extends $.Predicate { private boolean preset; ReturnPreSetBool(boolean b) { preset = b; } @Override public boolean test(Object o) { return preset; } } @Test public void testNegative() { int i = $.random(0, 1); $.Predicate p = new ReturnPreSetBool(i == 0); yes(p.apply(new Object()) != p.negate().apply(new Object())); } @Test public void testAnd() { no(N.F.greaterThan(5).and(N.F.lessThan(10), $.F.eq(8)).apply(7)); no(N.F.greaterThan(5).and(N.F.lessThan(10), $.F.eq(8)).apply(4)); yes(N.F.greaterThan(5).and(N.F.lessThan(10), $.F.eq(8)).apply(8)); } @Test public void testOr() { yes(N.F.greaterThan(5).or(N.F.lessThan(10), $.F.eq(8)).apply(7)); yes(N.F.greaterThan(5).or(N.F.lessThan(10), $.F.eq(8)).apply(4)); no(N.F.greaterThan(5).or($.F.eq(10), $.F.eq(8)).apply(4)); } @Test public void testIfThen() { eq(4, N.F.greaterThan(0).ifThen(N.F.dbl()).apply(2).get()); yes(N.F.greaterThan(0).ifThen(N.F.dbl()).apply(-1).notDefined()); } @Test public void testElseThen() { eq(4, N.F.lessThan(0).elseThen(N.F.dbl()).apply(2).get()); yes(N.F.lessThan(0).elseThen(N.F.dbl()).apply(-1).notDefined()); } @Test public void testOsglPredicate() { $.Predicate p = N.F.greaterThan(4); assertSame(p, $.predicate(p)); } }