From f4871c9c5745b66280198f177ce21857838f3a02 Mon Sep 17 00:00:00 2001 From: Juan Vaccari Date: Mon, 21 Jan 2019 15:10:29 +0000 Subject: [PATCH 1/5] BAEL-2514 - Added unit test for Map processing --- .../baeldung/stream/StreamMapUnitTest.java | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 java-streams/src/test/java/com/baeldung/stream/StreamMapUnitTest.java diff --git a/java-streams/src/test/java/com/baeldung/stream/StreamMapUnitTest.java b/java-streams/src/test/java/com/baeldung/stream/StreamMapUnitTest.java new file mode 100644 index 0000000000..15f1e8a517 --- /dev/null +++ b/java-streams/src/test/java/com/baeldung/stream/StreamMapUnitTest.java @@ -0,0 +1,65 @@ +package com.baeldung.stream; + +import org.junit.Before; +import org.junit.Test; + +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; + +import static org.junit.Assert.assertEquals; + +public class StreamMapUnitTest { + + private Map books; + + @Before + public void setup() { + books = new HashMap<>(); + books.put("978-0201633610", "Design patterns : elements of reusable object-oriented software"); + books.put("978-1617291999", "Java 8 in Action: Lambdas, Streams, and functional-style programming"); + books.put("978-0134685991", "Effective Java"); + } + + + @Test + public void whenOptionalVersionCalledForExistingTitle_thenReturnOptionalWithISBN() { + Optional optionalIsbn = books.entrySet().stream() + .filter(e -> "Effective Java".equals(e.getValue())) + .map(Map.Entry::getKey).findFirst(); + + assertEquals("978-0134685991", optionalIsbn.get()); + } + + @Test + public void whenOptionalVersionCalledForNonExistingTitle_thenReturnEmptyOptionalForISBN() { + Optional optionalIsbn = books.entrySet().stream() + .filter(e -> "Non Existent Title".equals(e.getValue())) + .map(Map.Entry::getKey).findFirst(); + + assertEquals(false, optionalIsbn.isPresent()); + } + + @Test + public void whenStringVersionCalledForExistingTitle_thenReturnISBN() { + String isbn = books.entrySet().stream() + .filter(e -> "Effective Java".equals(e.getValue())) + .map(Map.Entry::getKey) + .findFirst() + .orElse(null); + + assertEquals("978-0134685991", isbn); + } + + @Test + public void whenStringVersionCalledForNonExistingTitle_thenReturnNull() { + String isbn = books.entrySet().stream() + .filter(e -> "Non Existent Title".equals(e.getValue())) + .map(Map.Entry::getKey) + .findFirst() + .orElse(null); + + assertEquals(null, isbn); + } + +} From 04626e522a0b5ecd0b8b033c3c850a38d73008f2 Mon Sep 17 00:00:00 2001 From: Juan Vaccari Date: Wed, 23 Jan 2019 19:07:06 +0000 Subject: [PATCH 2/5] BAEL-2514 - Added unit tests for multiple values --- .../baeldung/stream/StreamMapUnitTest.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/java-streams/src/test/java/com/baeldung/stream/StreamMapUnitTest.java b/java-streams/src/test/java/com/baeldung/stream/StreamMapUnitTest.java index 15f1e8a517..45694bc59f 100644 --- a/java-streams/src/test/java/com/baeldung/stream/StreamMapUnitTest.java +++ b/java-streams/src/test/java/com/baeldung/stream/StreamMapUnitTest.java @@ -4,10 +4,13 @@ import org.junit.Before; import org.junit.Test; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.stream.Collectors; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; public class StreamMapUnitTest { @@ -62,4 +65,27 @@ public class StreamMapUnitTest { assertEquals(null, isbn); } + @Test + public void whenMultipleResultsVersionCalledForExistingTitle_aCollectionWithMultipleValuesIsReturned() { + books.put("978-0321356680", "Effective Java: Second Edition"); + + List isbnCodes = books.entrySet().stream() + .filter(e -> e.getValue().startsWith("Effective Java")) + .map(Map.Entry::getKey) + .collect(Collectors.toList()); + + assertTrue(isbnCodes.contains("978-0321356680")); + assertTrue(isbnCodes.contains("978-0134685991")); + } + + @Test + public void whenMultipleResultsVersionCalledForNonExistingTitle_aCollectionWithNoValuesIsReturned() { + List isbnCodes = books.entrySet().stream() + .filter(e -> e.getValue().startsWith("Spring")) + .map(Map.Entry::getKey) + .collect(Collectors.toList()); + + assertTrue(isbnCodes.isEmpty()); + } + } From d56efcfa9760f434cc0549e45191ff4cf4d57ea3 Mon Sep 17 00:00:00 2001 From: Juan Vaccari Date: Sat, 2 Feb 2019 17:19:28 +0000 Subject: [PATCH 3/5] BAEL-2514 - Added a new test for retrieving values based on key patterns --- .../com/baeldung/stream/StreamMapUnitTest.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/java-streams/src/test/java/com/baeldung/stream/StreamMapUnitTest.java b/java-streams/src/test/java/com/baeldung/stream/StreamMapUnitTest.java index 45694bc59f..2d23f758e6 100644 --- a/java-streams/src/test/java/com/baeldung/stream/StreamMapUnitTest.java +++ b/java-streams/src/test/java/com/baeldung/stream/StreamMapUnitTest.java @@ -3,11 +3,14 @@ package com.baeldung.stream; import org.junit.Before; import org.junit.Test; +import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.Set; import java.util.stream.Collectors; +import java.util.stream.Stream; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -88,4 +91,18 @@ public class StreamMapUnitTest { assertTrue(isbnCodes.isEmpty()); } + @Test + public void ValuesFromMapBasedOnPattern() { + Map authorToYearOfBirth = new HashMap<>(); + authorToYearOfBirth.put("Asimov, Isaac", 1920); + authorToYearOfBirth.put("Adams, Douglas", 1952); + authorToYearOfBirth.put("Bradbury, Ray", 1920); + authorToYearOfBirth.put("Clarke, Arthur", 1917); + + List yearOfBirthAuthorsStartingWithA = authorToYearOfBirth.entrySet().stream().filter(e -> e.getKey().startsWith("A")).map(Map.Entry::getValue).collect(Collectors.toList()); + assertEquals(2, yearOfBirthAuthorsStartingWithA.size()); + + } + + } From a079636e79e16e47cd1c6d76333e4d6d4e626d65 Mon Sep 17 00:00:00 2001 From: Juan Vaccari Date: Sun, 10 Feb 2019 14:50:45 +0000 Subject: [PATCH 4/5] BAEL-2514 - Changed key pattern example to use same map as others --- .../com/baeldung/stream/StreamMapUnitTest.java | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/java-streams/src/test/java/com/baeldung/stream/StreamMapUnitTest.java b/java-streams/src/test/java/com/baeldung/stream/StreamMapUnitTest.java index 2d23f758e6..eda0b6be95 100644 --- a/java-streams/src/test/java/com/baeldung/stream/StreamMapUnitTest.java +++ b/java-streams/src/test/java/com/baeldung/stream/StreamMapUnitTest.java @@ -92,15 +92,14 @@ public class StreamMapUnitTest { } @Test - public void ValuesFromMapBasedOnPattern() { - Map authorToYearOfBirth = new HashMap<>(); - authorToYearOfBirth.put("Asimov, Isaac", 1920); - authorToYearOfBirth.put("Adams, Douglas", 1952); - authorToYearOfBirth.put("Bradbury, Ray", 1920); - authorToYearOfBirth.put("Clarke, Arthur", 1917); - - List yearOfBirthAuthorsStartingWithA = authorToYearOfBirth.entrySet().stream().filter(e -> e.getKey().startsWith("A")).map(Map.Entry::getValue).collect(Collectors.toList()); - assertEquals(2, yearOfBirthAuthorsStartingWithA.size()); + public void whenKeysFollowingPatternReturnsAllValuesForThoseKeys() { + List titlesForKeyPattern = books.entrySet().stream() + .filter(e -> e.getKey().startsWith("978-0")) + .map(Map.Entry::getValue) + .collect(Collectors.toList()); + assertEquals(2, titlesForKeyPattern.size()); + assertTrue(titlesForKeyPattern.contains("Design patterns : elements of reusable object-oriented software")); + assertTrue(titlesForKeyPattern.contains("Effective Java")); } From bed05a42895f5a9cea6641630d560ddcfb265dac Mon Sep 17 00:00:00 2001 From: Juan Vaccari Date: Mon, 11 Feb 2019 17:54:15 +0000 Subject: [PATCH 5/5] BAEL-2514 - Removed unit tests for orElse cases removed from tutorial --- .../baeldung/stream/StreamMapUnitTest.java | 26 +------------------ 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/java-streams/src/test/java/com/baeldung/stream/StreamMapUnitTest.java b/java-streams/src/test/java/com/baeldung/stream/StreamMapUnitTest.java index eda0b6be95..5cb2a274d1 100644 --- a/java-streams/src/test/java/com/baeldung/stream/StreamMapUnitTest.java +++ b/java-streams/src/test/java/com/baeldung/stream/StreamMapUnitTest.java @@ -46,28 +46,6 @@ public class StreamMapUnitTest { assertEquals(false, optionalIsbn.isPresent()); } - @Test - public void whenStringVersionCalledForExistingTitle_thenReturnISBN() { - String isbn = books.entrySet().stream() - .filter(e -> "Effective Java".equals(e.getValue())) - .map(Map.Entry::getKey) - .findFirst() - .orElse(null); - - assertEquals("978-0134685991", isbn); - } - - @Test - public void whenStringVersionCalledForNonExistingTitle_thenReturnNull() { - String isbn = books.entrySet().stream() - .filter(e -> "Non Existent Title".equals(e.getValue())) - .map(Map.Entry::getKey) - .findFirst() - .orElse(null); - - assertEquals(null, isbn); - } - @Test public void whenMultipleResultsVersionCalledForExistingTitle_aCollectionWithMultipleValuesIsReturned() { books.put("978-0321356680", "Effective Java: Second Edition"); @@ -100,8 +78,6 @@ public class StreamMapUnitTest { assertEquals(2, titlesForKeyPattern.size()); assertTrue(titlesForKeyPattern.contains("Design patterns : elements of reusable object-oriented software")); assertTrue(titlesForKeyPattern.contains("Effective Java")); - } - - + }