11d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert/* 21d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Copyright (C) 2005 The Guava Authors 31d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 41d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Licensed under the Apache License, Version 2.0 (the "License"); 51d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * you may not use this file except in compliance with the License. 61d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * You may obtain a copy of the License at 71d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 81d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * http://www.apache.org/licenses/LICENSE-2.0 91d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Unless required by applicable law or agreed to in writing, software 111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * distributed under the License is distributed on an "AS IS" BASIS, 121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * See the License for the specific language governing permissions and 141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * limitations under the License. 151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertpackage com.google.common.base; 181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport static com.google.common.base.CharMatcher.WHITESPACE; 200888a09821a98ac0680fad765217302858e70fa4Paul Duffinimport static com.google.common.collect.Lists.newArrayList; 211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.annotations.GwtCompatible; 231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.annotations.GwtIncompatible; 241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.collect.ImmutableSet; 257dd252788645e940eada959bdde927426e2531c9Paul Duffinimport com.google.common.testing.ClassSanityTester; 261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.testing.EqualsTester; 271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.testing.NullPointerTester; 281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.testing.SerializableTester; 291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 300888a09821a98ac0680fad765217302858e70fa4Paul Duffinimport junit.framework.AssertionFailedError; 310888a09821a98ac0680fad765217302858e70fa4Paul Duffinimport junit.framework.TestCase; 320888a09821a98ac0680fad765217302858e70fa4Paul Duffin 331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.io.Serializable; 341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.ArrayList; 351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.Arrays; 361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.Collection; 371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.Collections; 381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.Iterator; 391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.List; 401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.regex.Pattern; 411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert/** 431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Unit test for {@link Predicates}. 441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @author Kevin Bourrillion 461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert@GwtCompatible(emulated = true) 481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertpublic class PredicatesTest extends TestCase { 491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private static final Predicate<Integer> TRUE = Predicates.alwaysTrue(); 501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private static final Predicate<Integer> FALSE = Predicates.alwaysFalse(); 511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private static final Predicate<Integer> NEVER_REACHED = 521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new Predicate<Integer>() { 531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override 541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public boolean apply(Integer i) { 550888a09821a98ac0680fad765217302858e70fa4Paul Duffin throw new AssertionFailedError( 560888a09821a98ac0680fad765217302858e70fa4Paul Duffin "This predicate should never have been evaluated"); 571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert }; 591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** Instantiable predicate with reasonable hashCode() and equals() methods. */ 611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert static class IsOdd implements Predicate<Integer>, Serializable { 621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private static final long serialVersionUID = 0x150ddL; 631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override 641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public boolean apply(Integer i) { 651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return (i.intValue() & 1) == 1; 661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public int hashCode() { 681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return 0x150dd; 691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean equals(Object obj) { 711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return obj instanceof IsOdd; 721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public String toString() { 741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return "IsOdd"; 751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Generates a new Predicate per call. 801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <p>Creating a new Predicate each time helps catch cases where code is 821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * using {@code x == y} instead of {@code x.equals(y)}. 831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private static IsOdd isOdd() { 851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return new IsOdd(); 861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /* 891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Tests for Predicates.alwaysTrue(). 901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAlwaysTrue_apply() { 931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsToTrue(Predicates.alwaysTrue()); 941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAlwaysTrue_equality() throws Exception { 971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new EqualsTester() 981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(TRUE, Predicates.alwaysTrue()) 991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(isOdd()) 1001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.alwaysFalse()) 1011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .testEquals(); 1021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("SerializableTester") 1051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAlwaysTrue_serialization() { 1061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert checkSerialization(Predicates.alwaysTrue()); 1071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /* 1101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Tests for Predicates.alwaysFalse(). 1111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 1121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAlwaysFalse_apply() throws Exception { 1141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsToFalse(Predicates.alwaysFalse()); 1151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAlwaysFalse_equality() throws Exception { 1181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new EqualsTester() 1191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(FALSE, Predicates.alwaysFalse()) 1201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(isOdd()) 1211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.alwaysTrue()) 1221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .testEquals(); 1231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("SerializableTester") 1261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAlwaysFalse_serialization() { 1271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert checkSerialization(Predicates.alwaysFalse()); 1281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /* 1311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Tests for Predicates.not(predicate). 1321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 1331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testNot_apply() { 1351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsToTrue(Predicates.not(FALSE)); 1361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsToFalse(Predicates.not(TRUE)); 1371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsLikeOdd(Predicates.not(Predicates.not(isOdd()))); 1381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testNot_equality() { 1411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new EqualsTester() 1421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.not(isOdd()), Predicates.not(isOdd())) 1431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.not(TRUE)) 1441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(isOdd()) 1451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .testEquals(); 1461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testNot_equalityForNotOfKnownValues() { 1491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new EqualsTester() 1501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(TRUE, Predicates.alwaysTrue()) 1511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(FALSE) 1521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.not(TRUE)) 1531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .testEquals(); 1541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new EqualsTester() 1561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(FALSE, Predicates.alwaysFalse()) 1571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(TRUE) 1581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.not(FALSE)) 1591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .testEquals(); 1601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new EqualsTester() 1621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.isNull(), Predicates.isNull()) 1631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.notNull()) 1641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.not(Predicates.isNull())) 1651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .testEquals(); 1661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new EqualsTester() 1681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.notNull(), Predicates.notNull()) 1691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.isNull()) 1701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.not(Predicates.notNull())) 1711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .testEquals(); 1721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("SerializableTester") 1751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testNot_serialization() { 1761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert checkSerialization(Predicates.not(isOdd())); 1771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /* 1801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Tests for all the different flavors of Predicates.and(). 1811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 1821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1830888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 1841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAnd_applyNoArgs() { 1851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsToTrue(Predicates.and()); 1861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1880888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 1891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAnd_equalityNoArgs() { 1901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new EqualsTester() 1911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.and(), Predicates.and()) 1921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.and(FALSE)) 1931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.or()) 1941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .testEquals(); 1951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("SerializableTester") 1980888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 1991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAnd_serializationNoArgs() { 2001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert checkSerialization(Predicates.and()); 2011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2030888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 2041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAnd_applyOneArg() { 2051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsLikeOdd(Predicates.and(isOdd())); 2061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2080888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 2091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAnd_equalityOneArg() { 2101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Object[] notEqualObjects = {Predicates.and(NEVER_REACHED, FALSE)}; 2111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new EqualsTester() 2121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup( 2131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.and(NEVER_REACHED), Predicates.and(NEVER_REACHED)) 2141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(notEqualObjects) 2151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.and(isOdd())) 2161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.and()) 2171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.or(NEVER_REACHED)) 2181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .testEquals(); 2191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("SerializableTester") 2220888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 2231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAnd_serializationOneArg() { 2241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert checkSerialization(Predicates.and(isOdd())); 2251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAnd_applyBinary() { 2281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsLikeOdd(Predicates.and(isOdd(), TRUE)); 2291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsLikeOdd(Predicates.and(TRUE, isOdd())); 2301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsToFalse(Predicates.and(FALSE, NEVER_REACHED)); 2311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2330888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 2341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAnd_equalityBinary() { 2351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new EqualsTester() 2361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup( 2371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.and(TRUE, NEVER_REACHED), 2381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.and(TRUE, NEVER_REACHED)) 2391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.and(NEVER_REACHED, TRUE)) 2401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.and(TRUE)) 2411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.or(TRUE, NEVER_REACHED)) 2421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .testEquals(); 2431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("SerializableTester") 2461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAnd_serializationBinary() { 2471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert checkSerialization(Predicates.and(TRUE, isOdd())); 2481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2500888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 2511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAnd_applyTernary() { 2521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsLikeOdd(Predicates.and(isOdd(), TRUE, TRUE)); 2531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsLikeOdd(Predicates.and(TRUE, isOdd(), TRUE)); 2541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsLikeOdd(Predicates.and(TRUE, TRUE, isOdd())); 2551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsToFalse(Predicates.and(TRUE, FALSE, NEVER_REACHED)); 2561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2580888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 2591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAnd_equalityTernary() { 2601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new EqualsTester() 2611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup( 2621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.and(TRUE, isOdd(), NEVER_REACHED), 2631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.and(TRUE, isOdd(), NEVER_REACHED)) 2641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.and(isOdd(), NEVER_REACHED, TRUE)) 2651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.and(TRUE)) 2661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.or(TRUE, isOdd(), NEVER_REACHED)) 2671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .testEquals(); 2681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("SerializableTester") 2710888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 2721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAnd_serializationTernary() { 2731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert checkSerialization(Predicates.and(TRUE, isOdd(), FALSE)); 2741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2760888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 2771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAnd_applyIterable() { 2781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collection<Predicate<Integer>> empty = Arrays.asList(); 2791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsToTrue(Predicates.and(empty)); 2801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsLikeOdd(Predicates.and(Arrays.asList(isOdd()))); 2811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsLikeOdd(Predicates.and(Arrays.asList(TRUE, isOdd()))); 2821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsToFalse(Predicates.and(Arrays.asList(FALSE, NEVER_REACHED))); 2831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2850888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 2861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAnd_equalityIterable() { 2871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new EqualsTester() 2881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup( 2891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.and(Arrays.asList(TRUE, NEVER_REACHED)), 2901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.and(Arrays.asList(TRUE, NEVER_REACHED)), 2911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.and(TRUE, NEVER_REACHED)) 2921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.and(FALSE, NEVER_REACHED)) 2931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.or(TRUE, NEVER_REACHED)) 2941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .testEquals(); 2951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("SerializableTester") 2980888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 2991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAnd_serializationIterable() { 3001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert checkSerialization(Predicates.and(Arrays.asList(TRUE, FALSE))); 3011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3030888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 3041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAnd_arrayDefensivelyCopied() { 3051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate[] array = {Predicates.alwaysFalse()}; 3061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Object> predicate = Predicates.and(array); 3071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(predicate.apply(1)); 3081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert array[0] = Predicates.alwaysTrue(); 3091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(predicate.apply(1)); 3101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAnd_listDefensivelyCopied() { 3130888a09821a98ac0680fad765217302858e70fa4Paul Duffin List<Predicate<Object>> list = newArrayList(); 3141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Object> predicate = Predicates.and(list); 3151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(predicate.apply(1)); 3161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert list.add(Predicates.alwaysFalse()); 3171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(predicate.apply(1)); 3181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAnd_iterableDefensivelyCopied() { 3210888a09821a98ac0680fad765217302858e70fa4Paul Duffin final List<Predicate<Object>> list = newArrayList(); 3220888a09821a98ac0680fad765217302858e70fa4Paul Duffin Iterable<Predicate<Object>> iterable = new Iterable<Predicate<Object>>() { 3231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override 3240888a09821a98ac0680fad765217302858e70fa4Paul Duffin public Iterator<Predicate<Object>> iterator() { 3251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return list.iterator(); 3261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert }; 3281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Object> predicate = Predicates.and(iterable); 3291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(predicate.apply(1)); 3301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert list.add(Predicates.alwaysFalse()); 3311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(predicate.apply(1)); 3321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /* 3351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Tests for all the different flavors of Predicates.or(). 3361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 3371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3380888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 3391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testOr_applyNoArgs() { 3401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsToFalse(Predicates.or()); 3411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3430888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 3441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testOr_equalityNoArgs() { 3451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new EqualsTester() 3461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.or(), Predicates.or()) 3471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.or(TRUE)) 3481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.and()) 3491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .testEquals(); 3501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("SerializableTester") 3530888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 3541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testOr_serializationNoArgs() { 3551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert checkSerialization(Predicates.or()); 3561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3580888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 3591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testOr_applyOneArg() { 3601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsToTrue(Predicates.or(TRUE)); 3611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsToFalse(Predicates.or(FALSE)); 3621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3640888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 3651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testOr_equalityOneArg() { 3661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new EqualsTester() 3671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup( 3681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.or(NEVER_REACHED), Predicates.or(NEVER_REACHED)) 3691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.or(NEVER_REACHED, TRUE)) 3701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.or(TRUE)) 3711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.or()) 3721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.and(NEVER_REACHED)) 3731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .testEquals(); 3741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("SerializableTester") 3770888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 3781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testOr_serializationOneArg() { 3791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert checkSerialization(Predicates.or(isOdd())); 3801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testOr_applyBinary() { 3831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Integer> falseOrFalse = Predicates.or(FALSE, FALSE); 3841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Integer> falseOrTrue = Predicates.or(FALSE, TRUE); 3851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Integer> trueOrAnything = Predicates.or(TRUE, NEVER_REACHED); 3861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsToFalse(falseOrFalse); 3881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsToTrue(falseOrTrue); 3891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsToTrue(trueOrAnything); 3901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3920888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 3931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testOr_equalityBinary() { 3941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new EqualsTester() 3951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup( 3961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.or(FALSE, NEVER_REACHED), 3971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.or(FALSE, NEVER_REACHED)) 3981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.or(NEVER_REACHED, FALSE)) 3991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.or(TRUE)) 4001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.and(FALSE, NEVER_REACHED)) 4011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .testEquals(); 4021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 4041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("SerializableTester") 4051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testOr_serializationBinary() { 4061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert checkSerialization(Predicates.or(isOdd(), TRUE)); 4071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 4090888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 4101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testOr_applyTernary() { 4111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsLikeOdd(Predicates.or(isOdd(), FALSE, FALSE)); 4121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsLikeOdd(Predicates.or(FALSE, isOdd(), FALSE)); 4131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsLikeOdd(Predicates.or(FALSE, FALSE, isOdd())); 4141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsToTrue(Predicates.or(FALSE, TRUE, NEVER_REACHED)); 4151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 4170888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 4181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testOr_equalityTernary() { 4191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new EqualsTester() 4201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup( 4211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.or(FALSE, NEVER_REACHED, TRUE), 4221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.or(FALSE, NEVER_REACHED, TRUE)) 4231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.or(TRUE, NEVER_REACHED, FALSE)) 4241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.or(TRUE)) 4251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.and(FALSE, NEVER_REACHED, TRUE)) 4261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .testEquals(); 4271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 4291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("SerializableTester") 4300888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 4311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testOr_serializationTernary() { 4321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert checkSerialization(Predicates.or(FALSE, isOdd(), TRUE)); 4331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 4350888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 4361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testOr_applyIterable() { 4371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Integer> vacuouslyFalse = 4381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.or(Collections.<Predicate<Integer>>emptyList()); 4391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Integer> troo = Predicates.or(Collections.singletonList(TRUE)); 4401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /* 4411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * newLinkedList() takes varargs. TRUE and FALSE are both instances of 4421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Predicate<Integer>, so the call is safe. 4431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 4441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Integer> trueAndFalse = Predicates.or(Arrays.asList(TRUE, FALSE)); 4451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 4461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsToFalse(vacuouslyFalse); 4471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsToTrue(troo); 4481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsToTrue(trueAndFalse); 4491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 4510888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 4521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testOr_equalityIterable() { 4531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new EqualsTester() 4541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup( 4551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.or(Arrays.asList(FALSE, NEVER_REACHED)), 4561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.or(Arrays.asList(FALSE, NEVER_REACHED)), 4571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.or(FALSE, NEVER_REACHED)) 4581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.or(TRUE, NEVER_REACHED)) 4591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.and(FALSE, NEVER_REACHED)) 4601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .testEquals(); 4611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 4631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("SerializableTester") 4640888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 4651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testOr_serializationIterable() { 4661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Integer> pre = Predicates.or(Arrays.asList(TRUE, FALSE)); 4671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Integer> post = SerializableTester.reserializeAndAssert(pre); 4681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(pre.apply(0), post.apply(0)); 4691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 4710888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unchecked") // varargs 4721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testOr_arrayDefensivelyCopied() { 4731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate[] array = {Predicates.alwaysFalse()}; 4741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Object> predicate = Predicates.or(array); 4751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(predicate.apply(1)); 4761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert array[0] = Predicates.alwaysTrue(); 4771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(predicate.apply(1)); 4781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 4801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testOr_listDefensivelyCopied() { 4810888a09821a98ac0680fad765217302858e70fa4Paul Duffin List<Predicate<Object>> list = newArrayList(); 4821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Object> predicate = Predicates.or(list); 4831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(predicate.apply(1)); 4841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert list.add(Predicates.alwaysTrue()); 4851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(predicate.apply(1)); 4861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 4881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testOr_iterableDefensivelyCopied() { 4890888a09821a98ac0680fad765217302858e70fa4Paul Duffin final List<Predicate<Object>> list = newArrayList(); 4900888a09821a98ac0680fad765217302858e70fa4Paul Duffin Iterable<Predicate<Object>> iterable = new Iterable<Predicate<Object>>() { 4911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override 4920888a09821a98ac0680fad765217302858e70fa4Paul Duffin public Iterator<Predicate<Object>> iterator() { 4931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return list.iterator(); 4941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert }; 4961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Object> predicate = Predicates.or(iterable); 4971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(predicate.apply(1)); 4981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert list.add(Predicates.alwaysTrue()); 4991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(predicate.apply(1)); 5001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 5011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 5021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /* 5031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Tests for Predicates.equalTo(x). 5041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 5051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 5061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIsEqualTo_apply() { 5071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Integer> isOne = Predicates.equalTo(1); 5081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 5091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(isOne.apply(1)); 5101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(isOne.apply(2)); 5111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(isOne.apply(null)); 5121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 5131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 5141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIsEqualTo_equality() { 5151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new EqualsTester() 5161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.equalTo(1), Predicates.equalTo(1)) 5171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.equalTo(2)) 5181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.equalTo(null)) 5191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .testEquals(); 5201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 5211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 5221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("SerializableTester") 5231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIsEqualTo_serialization() { 5241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert checkSerialization(Predicates.equalTo(1)); 5251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 5261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 5271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIsEqualToNull_apply() { 5281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Integer> isNull = Predicates.equalTo(null); 5291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(isNull.apply(null)); 5301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(isNull.apply(1)); 5311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 5321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 5331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIsEqualToNull_equality() { 5341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new EqualsTester() 5351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.equalTo(null), Predicates.equalTo(null)) 5361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.equalTo(1)) 5371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.equalTo("null")) 5381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .testEquals(); 5391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 5401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 5411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("SerializableTester") 5421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIsEqualToNull_serialization() { 5431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert checkSerialization(Predicates.equalTo(null)); 5441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 5451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 5461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 5471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Tests for Predicates.instanceOf(x). 5481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * TODO: Fix the comment style after fixing annotation stripper to remove 5491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * comments properly. Currently, all tests before the comments are removed 5501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * as well. 5511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 5521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 5531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("Predicates.instanceOf") 5541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIsInstanceOf_apply() { 5551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Object> isInteger = Predicates.instanceOf(Integer.class); 5561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 5571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(isInteger.apply(1)); 5581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(isInteger.apply(2.0f)); 5591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(isInteger.apply("")); 5601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(isInteger.apply(null)); 5611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 5621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 5631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("Predicates.instanceOf") 5641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIsInstanceOf_subclass() { 5651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Object> isNumber = Predicates.instanceOf(Number.class); 5661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 5671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(isNumber.apply(1)); 5681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(isNumber.apply(2.0f)); 5691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(isNumber.apply("")); 5701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(isNumber.apply(null)); 5711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 5721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 5731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("Predicates.instanceOf") 5741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIsInstanceOf_interface() { 5751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Object> isComparable = Predicates.instanceOf(Comparable.class); 5761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 5771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(isComparable.apply(1)); 5781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(isComparable.apply(2.0f)); 5791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(isComparable.apply("")); 5801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(isComparable.apply(null)); 5811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 5821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 5831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("Predicates.instanceOf") 5841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIsInstanceOf_equality() { 5851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new EqualsTester() 5861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup( 5871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.instanceOf(Integer.class), 5881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.instanceOf(Integer.class)) 5891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.instanceOf(Number.class)) 5901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.instanceOf(Float.class)) 5911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .testEquals(); 5921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 5931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 5941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("Predicates.instanceOf, SerializableTester") 5951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIsInstanceOf_serialization() { 5961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert checkSerialization(Predicates.instanceOf(Integer.class)); 5971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 5987dd252788645e940eada959bdde927426e2531c9Paul Duffin 5991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("Predicates.assignableFrom") 6001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIsAssignableFrom_apply() { 6011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Class<?>> isInteger = Predicates.assignableFrom(Integer.class); 6021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 6031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(isInteger.apply(Integer.class)); 6041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(isInteger.apply(Float.class)); 6057dd252788645e940eada959bdde927426e2531c9Paul Duffin 6067dd252788645e940eada959bdde927426e2531c9Paul Duffin try { 6071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert isInteger.apply(null); 6081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail(); 6090888a09821a98ac0680fad765217302858e70fa4Paul Duffin } catch (NullPointerException expected) {} 6101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 6111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 6121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("Predicates.assignableFrom") 6131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIsAssignableFrom_subclass() { 6141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Class<?>> isNumber = Predicates.assignableFrom(Number.class); 6151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 6161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(isNumber.apply(Integer.class)); 6171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(isNumber.apply(Float.class)); 6181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 6191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 6201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("Predicates.assignableFrom") 6211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIsAssignableFrom_interface() { 6221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Class<?>> isComparable = 6231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.assignableFrom(Comparable.class); 6241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 6251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(isComparable.apply(Integer.class)); 6261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(isComparable.apply(Float.class)); 6271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 6281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 6291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("Predicates.assignableFrom") 6301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIsAssignableFrom_equality() { 6311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new EqualsTester() 6321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup( 6331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.assignableFrom(Integer.class), 6341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.assignableFrom(Integer.class)) 6351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.assignableFrom(Number.class)) 6361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.assignableFrom(Float.class)) 6371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .testEquals(); 6381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 6391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 6401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("Predicates.assignableFrom, SerializableTester") 6411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIsAssignableFrom_serialization() { 6427dd252788645e940eada959bdde927426e2531c9Paul Duffin Predicate<Class<?>> predicate = 6431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.assignableFrom(Integer.class); 6441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Class<?>> reserialized = 6451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert SerializableTester.reserializeAndAssert(predicate); 6461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 6471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsLike(predicate, reserialized, Integer.class); 6481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsLike(predicate, reserialized, Float.class); 6491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsLike(predicate, reserialized, null); 6501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 6511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 6521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /* 6531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Tests for Predicates.isNull() 6541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 6551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 6561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIsNull_apply() { 6571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Integer> isNull = Predicates.isNull(); 6581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(isNull.apply(null)); 6591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(isNull.apply(1)); 6601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 6611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 6621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIsNull_equality() { 6631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new EqualsTester() 6641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.isNull(), Predicates.isNull()) 6651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.notNull()) 6661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .testEquals(); 6671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 6681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 6691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("SerializableTester") 6701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIsNull_serialization() { 6711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<String> pre = Predicates.isNull(); 6721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<String> post = SerializableTester.reserializeAndAssert(pre); 6731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(pre.apply("foo"), post.apply("foo")); 6741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(pre.apply(null), post.apply(null)); 6751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 6761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 6771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testNotNull_apply() { 6781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Integer> notNull = Predicates.notNull(); 6791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(notNull.apply(null)); 6801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(notNull.apply(1)); 6811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 6821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 6831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testNotNull_equality() { 6841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new EqualsTester() 6851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.notNull(), Predicates.notNull()) 6861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.isNull()) 6871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .testEquals(); 6881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 6891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 6901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("SerializableTester") 6911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testNotNull_serialization() { 6921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert checkSerialization(Predicates.notNull()); 6931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 6941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 6951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIn_apply() { 6961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collection<Integer> nums = Arrays.asList(1, 5); 6971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Integer> isOneOrFive = Predicates.in(nums); 6981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 6991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(isOneOrFive.apply(1)); 7001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(isOneOrFive.apply(5)); 7011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(isOneOrFive.apply(3)); 7021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(isOneOrFive.apply(null)); 7031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 7041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 7051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIn_equality() { 7061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collection<Integer> nums = ImmutableSet.of(1, 5); 7071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collection<Integer> sameOrder = ImmutableSet.of(1, 5); 7081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collection<Integer> differentOrder = ImmutableSet.of(5, 1); 7091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collection<Integer> differentNums = ImmutableSet.of(1, 3, 5); 7101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 7111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new EqualsTester() 7121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.in(nums), Predicates.in(nums), 7131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.in(sameOrder), Predicates.in(differentOrder)) 7141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.in(differentNums)) 7151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .testEquals(); 7161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 7171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 7181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("SerializableTester") 7191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIn_serialization() { 7201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert checkSerialization(Predicates.in(Arrays.asList(1, 2, 3, null))); 7211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 7221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 7231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIn_handlesNullPointerException() { 7241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert class CollectionThatThrowsNPE<T> extends ArrayList<T> { 7251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private static final long serialVersionUID = 1L; 7261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 7271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean contains(Object element) { 7281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkNotNull(element); 7291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return super.contains(element); 7301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 7311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 7321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collection<Integer> nums = new CollectionThatThrowsNPE<Integer>(); 7331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Integer> isFalse = Predicates.in(nums); 7341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(isFalse.apply(null)); 7351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 7361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 7371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIn_handlesClassCastException() { 7381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert class CollectionThatThrowsCCE<T> extends ArrayList<T> { 7391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private static final long serialVersionUID = 1L; 7401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 7411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean contains(Object element) { 7421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert throw new ClassCastException(""); 7431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 7441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 7451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collection<Integer> nums = new CollectionThatThrowsCCE<Integer>(); 7461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert nums.add(3); 7471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Integer> isThree = Predicates.in(nums); 7481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(isThree.apply(3)); 7491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 7501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 7511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /* 7521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Tests that compilation will work when applying explicit types. 7531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 7540888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unused") // compilation test 7551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIn_compilesWithExplicitSupertype() { 7561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collection<Number> nums = ImmutableSet.of(); 7571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Number> p1 = Predicates.in(nums); 7581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Object> p2 = Predicates.<Object>in(nums); 7591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert // The next two lines are not expected to compile. 7601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert // Predicate<Integer> p3 = Predicates.in(nums); 7611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert // Predicate<Integer> p4 = Predicates.<Integer>in(nums); 7621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 7631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 7641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("NullPointerTester") 7657dd252788645e940eada959bdde927426e2531c9Paul Duffin public void testNullPointerExceptions() { 7661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert NullPointerTester tester = new NullPointerTester(); 7671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert tester.testAllPublicStaticMethods(Predicates.class); 7681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 7691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 7701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @SuppressWarnings("unchecked") // varargs 7711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("SerializbleTester") 7721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCascadingSerialization() throws Exception { 7731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert // Eclipse says Predicate<Integer>; javac says Predicate<Object>. 7741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<? super Integer> nasty = Predicates.not(Predicates.and( 7751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.or( 7761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.equalTo((Object) 1), Predicates.equalTo(null), 7771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.alwaysFalse(), Predicates.alwaysTrue(), 7781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.isNull(), Predicates.notNull(), 7791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.in(Arrays.asList(1))))); 7801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsToFalse(nasty); 7811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 7821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<? super Integer> stillNasty = 7831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert SerializableTester.reserializeAndAssert(nasty); 7841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 7851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsToFalse(stillNasty); 7861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 7871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 7881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert // enum singleton pattern 7891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private enum TrimStringFunction implements Function<String, String> { 7901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert INSTANCE; 7911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 7921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override 7931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public String apply(String string) { 7941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return WHITESPACE.trimFrom(string); 7951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 7961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 7971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 7981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCompose() { 7991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Function<String, String> trim = TrimStringFunction.INSTANCE; 8001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<String> equalsFoo = Predicates.equalTo("Foo"); 8011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<String> equalsBar = Predicates.equalTo("Bar"); 8021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<String> trimEqualsFoo = Predicates.compose(equalsFoo, trim); 8031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Function<String, String> identity = Functions.identity(); 8041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 8051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(trimEqualsFoo.apply("Foo")); 8061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(trimEqualsFoo.apply(" Foo ")); 8071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(trimEqualsFoo.apply("Foo-b-que")); 8081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 8091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new EqualsTester() 8101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(trimEqualsFoo, Predicates.compose(equalsFoo, trim)) 8111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(equalsFoo) 8121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(trim) 8131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.compose(equalsFoo, identity)) 8141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup(Predicates.compose(equalsBar, trim)) 8151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .testEquals(); 8161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 8171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 8181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("SerializableTester") 8191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testComposeSerialization() { 8201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Function<String, String> trim = TrimStringFunction.INSTANCE; 8211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<String> equalsFoo = Predicates.equalTo("Foo"); 8221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<String> trimEqualsFoo = Predicates.compose(equalsFoo, trim); 8231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert SerializableTester.reserializeAndAssert(trimEqualsFoo); 8241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 8251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 8261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 8271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Tests for Predicates.contains(Pattern) and .containsPattern(String). 8281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * We assume the regex level works, so there are only trivial tests of that 8291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * aspect. 8301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * TODO: Fix comment style once annotation stripper is fixed. 8311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 8321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 8331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("Predicates.containsPattern") 8341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testContainsPattern_apply() { 8351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<CharSequence> isFoobar = 8361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.containsPattern("^Fo.*o.*bar$"); 8371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(isFoobar.apply("Foxyzoabcbar")); 8381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(isFoobar.apply("Foobarx")); 8391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 8401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 8411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("Predicates.containsPattern") 8421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testContains_apply() { 8431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<CharSequence> isFoobar = 8441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.contains(Pattern.compile("^Fo.*o.*bar$")); 8451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 8461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(isFoobar.apply("Foxyzoabcbar")); 8471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(isFoobar.apply("Foobarx")); 8481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 8491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 8501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("NullPointerTester") 8511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testContainsPattern_nulls() throws Exception { 8521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert NullPointerTester tester = new NullPointerTester(); 8531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<CharSequence> isWooString = Predicates.containsPattern("Woo"); 8541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 8551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert tester.testAllPublicInstanceMethods(isWooString); 8561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 8571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 8581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("NullPointerTester") 8591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testContains_nulls() throws Exception { 8601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert NullPointerTester tester = new NullPointerTester(); 8611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<CharSequence> isWooPattern = 8621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.contains(Pattern.compile("Woo")); 8631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 8641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert tester.testAllPublicInstanceMethods(isWooPattern); 8651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 8661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 8671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("SerializableTester") 8681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testContainsPattern_serialization() { 8691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<CharSequence> pre = Predicates.containsPattern("foo"); 8701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<CharSequence> post = SerializableTester.reserializeAndAssert(pre); 8711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(pre.apply("foo"), post.apply("foo")); 8721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 8731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 8741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("java.util.regex.Pattern") 8751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testContains_equals() { 8761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new EqualsTester() 8771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup( 8781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.contains(Pattern.compile("foo")), 8791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.containsPattern("foo")) 8801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup( 8811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.contains( 8821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Pattern.compile("foo", Pattern.CASE_INSENSITIVE))) 8831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addEqualityGroup( 8841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.containsPattern("bar")) 8851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .testEquals(); 8861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 8871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 8881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void assertEqualHashCode( 8891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<? super Integer> expected, Predicate<? super Integer> actual) { 8900888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertEquals(actual + " should hash like " + expected, expected.hashCode(), actual.hashCode()); 8911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 8921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 8931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testHashCodeForBooleanOperations() { 8941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Integer> p1 = Predicates.isNull(); 8951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<Integer> p2 = isOdd(); 8961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 8971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert // Make sure that hash codes are not computed per-instance. 8981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEqualHashCode( 8991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.not(p1), 9001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.not(p1)); 9011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 9021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEqualHashCode( 9031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.and(p1, p2), 9041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.and(p1, p2)); 9051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 9061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEqualHashCode( 9071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.or(p1, p2), 9081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicates.or(p1, p2)); 9097dd252788645e940eada959bdde927426e2531c9Paul Duffin 9101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert // While not a contractual requirement, we'd like the hash codes for ands 9117dd252788645e940eada959bdde927426e2531c9Paul Duffin // & ors of the same predicates to not collide. 9121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(Predicates.and(p1, p2).hashCode() != Predicates.or(p1, p2).hashCode()); 9131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 9141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 9157dd252788645e940eada959bdde927426e2531c9Paul Duffin @GwtIncompatible("reflection") 9167dd252788645e940eada959bdde927426e2531c9Paul Duffin public void testNulls() throws Exception { 9177dd252788645e940eada959bdde927426e2531c9Paul Duffin new ClassSanityTester().forAllPublicStaticMethods(Predicates.class).testNulls(); 9187dd252788645e940eada959bdde927426e2531c9Paul Duffin } 9197dd252788645e940eada959bdde927426e2531c9Paul Duffin 9207dd252788645e940eada959bdde927426e2531c9Paul Duffin @GwtIncompatible("reflection") 9217dd252788645e940eada959bdde927426e2531c9Paul Duffin public void testEqualsAndSerializable() throws Exception { 9227dd252788645e940eada959bdde927426e2531c9Paul Duffin new ClassSanityTester().forAllPublicStaticMethods(Predicates.class).testEqualsAndSerializable(); 9237dd252788645e940eada959bdde927426e2531c9Paul Duffin } 9247dd252788645e940eada959bdde927426e2531c9Paul Duffin 9251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private static void assertEvalsToTrue(Predicate<? super Integer> predicate) { 9261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(predicate.apply(0)); 9271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(predicate.apply(1)); 9281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(predicate.apply(null)); 9291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 9301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 9311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private static void assertEvalsToFalse(Predicate<? super Integer> predicate) { 9321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(predicate.apply(0)); 9331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(predicate.apply(1)); 9341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(predicate.apply(null)); 9351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 9361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 9371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private static void assertEvalsLikeOdd(Predicate<? super Integer> predicate) { 9381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsLike(isOdd(), predicate); 9391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 9401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 9411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private static void assertEvalsLike( 9421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<? super Integer> expected, 9431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<? super Integer> actual) { 9441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsLike(expected, actual, 0); 9451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsLike(expected, actual, 1); 9461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsLike(expected, actual, null); 9471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 9481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 9491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private static <T> void assertEvalsLike( 9501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<? super T> expected, 9511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<? super T> actual, 9521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert T input) { 9531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Boolean expectedResult = null; 9541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert RuntimeException expectedRuntimeException = null; 9551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 9561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert expectedResult = expected.apply(input); 9571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (RuntimeException e) { 9581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert expectedRuntimeException = e; 9591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 9601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 9611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Boolean actualResult = null; 9621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert RuntimeException actualRuntimeException = null; 9631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 9641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert actualResult = actual.apply(input); 9651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (RuntimeException e) { 9661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert actualRuntimeException = e; 9671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 9681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 9691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(expectedResult, actualResult); 9701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert if (expectedRuntimeException != null) { 9711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertNotNull(actualRuntimeException); 9721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals( 9731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert expectedRuntimeException.getClass(), 9741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert actualRuntimeException.getClass()); 9751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 9761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 9771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 9781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("SerializableTester") 9791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private static void checkSerialization(Predicate<? super Integer> predicate) { 9801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Predicate<? super Integer> reserialized = 9811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert SerializableTester.reserializeAndAssert(predicate); 9821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEvalsLike(predicate, reserialized); 9831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 9841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert} 985