2020import com .google .common .base .Predicate ;
2121import com .google .common .base .Predicates ;
2222import com .google .common .collect .Collections2 ;
23+ import com .google .common .collect .FluentIterable ;
2324import com .google .common .collect .Iterables ;
2425import com .google .common .collect .Lists ;
2526import com .google .common .collect .Maps ;
@@ -75,14 +76,14 @@ public final boolean apply(final Integer number) {
7576 @ Test
7677 public final void givenCollectionOfEvenNumbers_whenCheckingThatCollectionContainsNoOddNumber_thenTrue () {
7778 final List <Integer > evenNumbers = Lists .newArrayList (2 , 6 , 8 , 10 , 34 , 90 );
78- final Predicate <Integer > acceptEvenNumber = new Predicate <Integer >() {
79+ final Predicate <Integer > acceptOddNumber = new Predicate <Integer >() {
7980 @ Override
8081 public final boolean apply (final Integer number ) {
8182 return (number % 2 ) != 0 ;
8283 }
8384 };
8485
85- assertTrue (Iterables .all (evenNumbers , Predicates .not (acceptEvenNumber )));
86+ assertTrue (Iterables .all (evenNumbers , Predicates .not (acceptOddNumber )));
8687 }
8788
8889 // try - 1
@@ -97,6 +98,13 @@ public final void givenUnmodifiableViewOverIterable_whenTryingToRemove_thenNotAl
9798 }
9899 }
99100
101+ // char predicates
102+
103+ @ Test
104+ public final void when_thenCorrect () {
105+ // CharMatcher.forPredicate(predicate)
106+ }
107+
100108 // functions
101109
102110 @ Test
@@ -116,6 +124,26 @@ public final void whenUsingAnIntermediaryFunctionToOrder_thenCorerctlyOrderedInA
116124 assertThat (expectedAlphabeticalOrderingOfNumbers , equalTo (alphabeticalOrderingOfNumbers ));
117125 }
118126
127+ @ Test
128+ public final void whenChainingPredicatesAndFunctions_thenCorrectResults () {
129+ final List <Integer > numbersToSort = Arrays .asList (2 , 1 , 11 , 100 , 8 , 14 );
130+ final Predicate <Integer > acceptEvenNumber = new Predicate <Integer >() {
131+ @ Override
132+ public final boolean apply (final Integer number ) {
133+ return (number % 2 ) == 0 ;
134+ }
135+ };
136+ final Function <Integer , Integer > powerOfTwo = new Function <Integer , Integer >() {
137+ @ Override
138+ public final Integer apply (final Integer input ) {
139+ return (int ) Math .pow (input , 2 );
140+ }
141+ };
142+
143+ final FluentIterable <Integer > powerOfTwoOnlyForEvenNumbers = FluentIterable .from (numbersToSort ).filter (acceptEvenNumber ).transform (powerOfTwo );
144+ assertThat (powerOfTwoOnlyForEvenNumbers , contains (4 , 10000 , 64 , 196 ));
145+ }
146+
119147 // Set+Function => Map
120148
121149 /**
0 commit comments