package com.annimon.stream.streamtests; import com.annimon.stream.Functions; import com.annimon.stream.Stream; import com.annimon.stream.function.Function; import org.junit.Test; import static com.annimon.stream.test.hamcrest.StreamMatcher.assertElements; import static org.hamcrest.Matchers.contains; public final class FlatMapTest { @Test public void testFlatMap() { Stream.rangeClosed(2, 4) .flatMap(new Function<Integer, Stream<String>>() { @Override public Stream<String> apply(final Integer i) { return Stream.rangeClosed(2, 4) .filter(Functions.remainder(2)) .map(new Function<Integer, String>() { @Override public String apply(Integer p) { return String.format("%d * %d = %d", i, p, (i*p)); } }); } }) .custom(assertElements(contains( "2 * 2 = 4", "2 * 4 = 8", "3 * 2 = 6", "3 * 4 = 12", "4 * 2 = 8", "4 * 4 = 16" ))); } }