Skip to content

Commit b97de29

Browse files
author
Eugen Paraschiv
committed
functional examples
1 parent 6af58dc commit b97de29

File tree

1 file changed

+65
-3
lines changed

1 file changed

+65
-3
lines changed

guava/src/test/java/org/baeldung/guava/GuavaFunctionalExamplesTest.java

Lines changed: 65 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,36 @@
11
package org.baeldung.guava;
22

3+
import static org.hamcrest.Matchers.contains;
34
import static org.hamcrest.Matchers.equalTo;
45
import static org.hamcrest.Matchers.lessThan;
56
import static org.junit.Assert.assertThat;
67
import static org.junit.Assert.assertTrue;
78

9+
import java.util.Arrays;
810
import java.util.Collections;
11+
import java.util.Iterator;
912
import java.util.List;
1013
import java.util.Map;
1114
import java.util.Set;
1215

1316
import org.junit.Test;
1417

1518
import com.google.common.base.Function;
19+
import com.google.common.base.Functions;
1620
import com.google.common.base.Predicate;
21+
import com.google.common.base.Predicates;
1722
import com.google.common.collect.Collections2;
1823
import com.google.common.collect.Iterables;
1924
import com.google.common.collect.Lists;
2025
import com.google.common.collect.Maps;
26+
import com.google.common.collect.Ordering;
2127
import com.google.common.collect.Sets;
2228

2329
public class GuavaFunctionalExamplesTest {
2430

2531
// tests
2632

27-
// predicates
33+
// predicates - filtering
2834

2935
@Test
3036
public final void whenFilteringNumbersAccordingToACondition_thenCorrectResults() {
@@ -41,17 +47,73 @@ public final boolean apply(final Integer number) {
4147
assertThat(found, lessThan(0));
4248
}
4349

50+
@Test
51+
public final void givenCollectionContainsNulls_whenNullsAreFilteredOut_thenResultingCollectionsHasNoNulls() {
52+
final List<String> collectionOfStringsWithNulls = Lists.newArrayList("a", "bc", null, "def", null, null, "ghij");
53+
final Iterable<String> collectionWithoutNulls = Iterables.filter(collectionOfStringsWithNulls, Predicates.notNull());
54+
55+
assertTrue(Iterables.all(collectionWithoutNulls, Predicates.notNull()));
56+
}
57+
58+
// predicates - checking
59+
4460
@Test
4561
public final void givenEvenNumbers_whenCheckingIfAllSatisfyTheEvenPredicate_thenYes() {
46-
final List<Integer> eventNumbers = Lists.newArrayList(2, 6, 8, 10, 34, 90);
62+
final List<Integer> evenNumbers = Lists.newArrayList(2, 6, 8, 10, 34, 90);
4763
final Predicate<Integer> acceptEvenNumber = new Predicate<Integer>() {
4864
@Override
4965
public final boolean apply(final Integer number) {
5066
return (number % 2) == 0;
5167
}
5268
};
5369

54-
assertTrue(Iterables.all(eventNumbers, acceptEvenNumber));
70+
assertTrue(Iterables.all(evenNumbers, acceptEvenNumber));
71+
}
72+
73+
// negating a predicate
74+
75+
@Test
76+
public final void givenCollectionOfEvenNumbers_whenCheckingThatCollectionContainsNoOddNumber_thenTrue() {
77+
final List<Integer> evenNumbers = Lists.newArrayList(2, 6, 8, 10, 34, 90);
78+
final Predicate<Integer> acceptEvenNumber = new Predicate<Integer>() {
79+
@Override
80+
public final boolean apply(final Integer number) {
81+
return (number % 2) != 0;
82+
}
83+
};
84+
85+
assertTrue(Iterables.all(evenNumbers, Predicates.not(acceptEvenNumber)));
86+
}
87+
88+
// try - 1
89+
90+
@Test(expected = UnsupportedOperationException.class)
91+
public final void givenUnmodifiableViewOverIterable_whenTryingToRemove_thenNotAllowed() {
92+
final List<Integer> numbers = Lists.newArrayList(1, 2, 3);
93+
final Iterable<Integer> unmodifiableIterable = Iterables.unmodifiableIterable(numbers);
94+
final Iterator<Integer> iterator = unmodifiableIterable.iterator();
95+
if (iterator.hasNext()) {
96+
iterator.remove();
97+
}
98+
}
99+
100+
// functions
101+
102+
@Test
103+
public final void whenApplyingSimpleFunctionToInputs_thenCorrectlyTransformed() {
104+
final List<Integer> numbers = Lists.newArrayList(1, 2, 3);
105+
final List<String> numbersAsStrings = Lists.transform(numbers, Functions.toStringFunction());
106+
assertThat(numbersAsStrings, contains("1", "2", "3"));
107+
}
108+
109+
@Test
110+
public final void whenUsingAnIntermediaryFunctionToOrder_thenCorerctlyOrderedInAlphabeticalOrder() {
111+
final List<Integer> numbersToSort = Arrays.asList(2, 1, 11, 100, 8, 14);
112+
final Ordering<Object> ordering = Ordering.natural().onResultOf(Functions.toStringFunction());
113+
final List<Integer> alphabeticalOrderingOfNumbers = ordering.sortedCopy(numbersToSort);
114+
115+
final List<Integer> expectedAlphabeticalOrderingOfNumbers = Lists.newArrayList(1, 100, 11, 14, 2, 8);
116+
assertThat(expectedAlphabeticalOrderingOfNumbers, equalTo(alphabeticalOrderingOfNumbers));
55117
}
56118

57119
// Set+Function => Map

0 commit comments

Comments
 (0)