diff --git a/libraries/pom.xml b/libraries/pom.xml index a4b554365d..ff1997e969 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -276,6 +276,16 @@ 2.3.0 + + one.util + streamex + 0.6.5 + + + org.jooq + jool + 0.9.12 + 0.7.0 diff --git a/libraries/src/test/java/com/baeldung/stream/JoolMergeStreamsTest.java b/libraries/src/test/java/com/baeldung/stream/JoolMergeStreamsTest.java new file mode 100644 index 0000000000..e73861d8af --- /dev/null +++ b/libraries/src/test/java/com/baeldung/stream/JoolMergeStreamsTest.java @@ -0,0 +1,35 @@ +package com.baeldung.stream; + +import org.jooq.lambda.Seq; +import org.junit.Assert; +import org.junit.Test; + +import java.util.Arrays; + +import static junit.framework.TestCase.assertEquals; + +public class JoolMergeStreamsTest { + @Test + public void givenTwoStreams_whenMergingStreams_thenResultingStreamContainsElementsFromBothStreams() { + Seq seq1 = Seq.of(1, 3, 5); + Seq seq2 = Seq.of(2, 4, 6); + + Seq resultingSeq = seq1.append(seq2); + + assertEquals(Arrays.asList(1, 3, 5, 2, 4, 6), + resultingSeq.toList()); + } + + @Test + public void givenThreeStreams_whenAppendingAndPrependingStreams_thenResultingStreamContainsElementsFromAllStreams() { + Seq seq = Seq.of("foo", "bar"); + Seq openingBracketSeq = Seq.of("["); + Seq closingBracketSeq = Seq.of("]"); + + Seq resultingStream = seq.append(closingBracketSeq) + .prepend(openingBracketSeq); + + Assert.assertEquals(Arrays.asList("[", "foo", "bar", "]"), + resultingStream.toList()); + } +} \ No newline at end of file diff --git a/libraries/src/test/java/com/baeldung/stream/MergeStreamsTest.java b/libraries/src/test/java/com/baeldung/stream/MergeStreamsTest.java new file mode 100644 index 0000000000..217d2b5b64 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/stream/MergeStreamsTest.java @@ -0,0 +1,53 @@ +package com.baeldung.stream; + +import org.junit.Test; + +import java.util.Arrays; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import static org.junit.Assert.assertEquals; + +public class MergeStreamsTest { + + @Test + public void givenTwoStreams_whenMergingStreams_thenResultingStreamContainsElementsFromBothStreams() { + Stream stream1 = Stream.of(1, 3, 5); + Stream stream2 = Stream.of(2, 4, 6); + + Stream resultingStream = Stream.concat(stream1, + stream2); + + assertEquals(Arrays.asList(1, 3, 5, 2, 4, 6), + resultingStream.collect(Collectors.toList())); + } + + @Test + public void givenThreeStreams_whenMergingStreams_thenResultingStreamContainsElementsFromAllStreams() { + Stream stream1 = Stream.of(1, 3, 5); + Stream stream2 = Stream.of(2, 4, 6); + Stream stream3 = Stream.of(18, 15, 36); + + Stream resultingStream = Stream.concat(Stream.concat(stream1, + stream2), + stream3); + + assertEquals(Arrays.asList(1, 3, 5, 2, 4, 6, 18, 15, 36), + resultingStream.collect(Collectors.toList())); + } + + @Test + public void givenFourStreams_whenMergingStreams_thenResultingStreamContainsElementsFromAllStreams() { + Stream stream1 = Stream.of(1, 3, 5); + Stream stream2 = Stream.of(2, 4, 6); + Stream stream3 = Stream.of(18, 15, 36); + Stream stream4 = Stream.of(99); + + Stream resultingStream = Stream.of(stream1, stream2, stream3, stream4).flatMap(Function.identity()); + + assertEquals(Arrays.asList(1, 3, 5, 2, 4, 6, 18, 15, 36, 99), + resultingStream.collect(Collectors.toList())); + + } +} \ No newline at end of file diff --git a/libraries/src/test/java/com/baeldung/stream/StreamExMergeStreamsTest.java b/libraries/src/test/java/com/baeldung/stream/StreamExMergeStreamsTest.java new file mode 100644 index 0000000000..a964d76e8a --- /dev/null +++ b/libraries/src/test/java/com/baeldung/stream/StreamExMergeStreamsTest.java @@ -0,0 +1,51 @@ +package com.baeldung.stream; + +import one.util.streamex.StreamEx; +import org.junit.Test; + +import java.util.Arrays; + +import static org.junit.Assert.assertEquals; + +public class StreamExMergeStreamsTest { + + @Test + public void givenTwoStreams_whenMergingStreams_thenResultingStreamContainsElementsFromBothStreams() { + StreamEx stream1 = StreamEx.of(1, 3, 5); + StreamEx stream2 = StreamEx.of(2, 4, 6); + + StreamEx resultingStream = stream1.append(stream2); + + assertEquals(Arrays.asList(1, 3, 5, 2, 4, 6), + resultingStream.toList()); + } + + @Test + public void givenFourStreams_whenMergingStreams_thenResultingStreamContainsElementsFromAllStreams() { + StreamEx stream1 = StreamEx.of(1, 3, 5); + StreamEx stream2 = StreamEx.of(2, 4, 6); + StreamEx stream3 = StreamEx.of(18, 15, 36); + StreamEx stream4 = StreamEx.of(99); + + StreamEx resultingStream = stream1.append(stream2) + .append(stream3) + .append(stream4); + + assertEquals(Arrays.asList(1, 3, 5, 2, 4, 6, 18, 15, 36, 99), + resultingStream.toList()); + + } + + @Test + public void givenThreeStreams_whenAppendingAndPrependingStreams_thenResultingStreamContainsElementsFromAllStreams() { + StreamEx stream1 = StreamEx.of("foo", "bar"); + StreamEx openingBracketStream = StreamEx.of("["); + StreamEx closingBracketStream = StreamEx.of("]"); + + StreamEx resultingStream = stream1.append(closingBracketStream) + .prepend(openingBracketStream); + + assertEquals(Arrays.asList("[", "foo", "bar", "]"), + resultingStream.toList()); + } +}