package com.annimon.stream.function; import com.annimon.stream.Functions; import static com.annimon.stream.test.hamcrest.CommonMatcher.hasOnlyPrivateConstructors; import java.io.IOException; import static org.junit.Assert.*; import org.junit.Test; /** * Tests {@code Predicate}. * * @see com.annimon.stream.function.Predicate */ public class PredicateTest { @Test public void testLessThan100() { assertTrue(lessThan100.test(10)); assertFalse(lessThan100.test(1000)); } @Test public void testIsEven() { assertTrue(isEven.test(54)); assertFalse(isEven.test(55)); } @Test public void testAndPredicate() { Predicate<Integer> predicate = Predicate.Util.and(lessThan100, isEven); assertTrue(predicate.test(50)); assertFalse(predicate.test(55)); assertFalse(predicate.test(1002)); } @Test public void testOrPredicate() { Predicate<Integer> predicate = Predicate.Util.or(lessThan100, isEven); assertTrue(predicate.test(50)); assertTrue(predicate.test(55)); assertTrue(predicate.test(1002)); assertFalse(predicate.test(1001)); } @Test public void testXorPredicate() { Predicate<Integer> predicate = Predicate.Util.xor(lessThan100, isEven); assertFalse(predicate.test(50)); assertTrue(predicate.test(55)); assertTrue(predicate.test(1002)); assertFalse(predicate.test(1001)); } @Test public void testNegatePredicate() { Predicate<Integer> isOdd = Predicate.Util.negate(isEven); assertTrue(isOdd.test(55)); assertFalse(isOdd.test(56)); } @Test public void testNotNullPredicate() { Predicate<Object> predicate = Predicate.Util.notNull(); assertFalse(predicate.test(null)); assertTrue(predicate.test(new Object())); } @Test public void testSafe() { Predicate<Integer> predicate = Predicate.Util.safe(throwablePredicate); assertTrue(predicate.test(40)); assertFalse(predicate.test(60)); assertFalse(predicate.test(-5)); } @Test public void testSafeWithResultIfFailed() { Predicate<Integer> predicate = Predicate.Util.safe(throwablePredicate, true); assertTrue(predicate.test(40)); assertFalse(predicate.test(60)); assertTrue(predicate.test(-5)); } @Test public void testPrivateConstructor() throws Exception { assertThat(Predicate.Util.class, hasOnlyPrivateConstructors()); } private static final Predicate<Integer> lessThan100 = new Predicate<Integer>() { @Override public boolean test(Integer value) { return value < 100; } }; private static final Predicate<Integer> isEven = Functions.remainder(2); private static final ThrowablePredicate<Integer, Throwable> throwablePredicate = new ThrowablePredicate<Integer, Throwable>() { @Override public boolean test(Integer value) throws Throwable { if (value < 0) { throw new IOException(); } return value < 50; } }; }