functional work

This commit is contained in:
Eugen Paraschiv 2013-10-30 12:45:36 +02:00
parent b97de291f1
commit c257a33969
1 changed files with 30 additions and 2 deletions

View File

@ -20,6 +20,7 @@ import com.google.common.base.Functions;
import com.google.common.base.Predicate; import com.google.common.base.Predicate;
import com.google.common.base.Predicates; import com.google.common.base.Predicates;
import com.google.common.collect.Collections2; import com.google.common.collect.Collections2;
import com.google.common.collect.FluentIterable;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
@ -75,14 +76,14 @@ public class GuavaFunctionalExamplesTest {
@Test @Test
public final void givenCollectionOfEvenNumbers_whenCheckingThatCollectionContainsNoOddNumber_thenTrue() { public final void givenCollectionOfEvenNumbers_whenCheckingThatCollectionContainsNoOddNumber_thenTrue() {
final List<Integer> evenNumbers = Lists.newArrayList(2, 6, 8, 10, 34, 90); final List<Integer> evenNumbers = Lists.newArrayList(2, 6, 8, 10, 34, 90);
final Predicate<Integer> acceptEvenNumber = new Predicate<Integer>() { final Predicate<Integer> acceptOddNumber = new Predicate<Integer>() {
@Override @Override
public final boolean apply(final Integer number) { public final boolean apply(final Integer number) {
return (number % 2) != 0; return (number % 2) != 0;
} }
}; };
assertTrue(Iterables.all(evenNumbers, Predicates.not(acceptEvenNumber))); assertTrue(Iterables.all(evenNumbers, Predicates.not(acceptOddNumber)));
} }
// try - 1 // try - 1
@ -97,6 +98,13 @@ public class GuavaFunctionalExamplesTest {
} }
} }
// char predicates
@Test
public final void when_thenCorrect() {
// CharMatcher.forPredicate(predicate)
}
// functions // functions
@Test @Test
@ -116,6 +124,26 @@ public class GuavaFunctionalExamplesTest {
assertThat(expectedAlphabeticalOrderingOfNumbers, equalTo(alphabeticalOrderingOfNumbers)); assertThat(expectedAlphabeticalOrderingOfNumbers, equalTo(alphabeticalOrderingOfNumbers));
} }
@Test
public final void whenChainingPredicatesAndFunctions_thenCorrectResults() {
final List<Integer> numbersToSort = Arrays.asList(2, 1, 11, 100, 8, 14);
final Predicate<Integer> acceptEvenNumber = new Predicate<Integer>() {
@Override
public final boolean apply(final Integer number) {
return (number % 2) == 0;
}
};
final Function<Integer, Integer> powerOfTwo = new Function<Integer, Integer>() {
@Override
public final Integer apply(final Integer input) {
return (int) Math.pow(input, 2);
}
};
final FluentIterable<Integer> powerOfTwoOnlyForEvenNumbers = FluentIterable.from(numbersToSort).filter(acceptEvenNumber).transform(powerOfTwo);
assertThat(powerOfTwoOnlyForEvenNumbers, contains(4, 10000, 64, 196));
}
// Set+Function => Map // Set+Function => Map
/** /**