From ba73008ee9b4d67dc3b150b9cc34852b6da1259e Mon Sep 17 00:00:00 2001
From: Eugene Kovko <37694937+eukovko@users.noreply.github.com>
Date: Sun, 28 Apr 2024 20:20:08 +0200
Subject: [PATCH] BAEL-7885: Simple tests for addAll (#16504)
* BAEL-7885: Simple tests for addAll
* BAEL-7885: Stream test example
---
.../pom.xml | 9 ++
.../addallnulls/AddAllWithNullsUnitTest.java | 89 +++++++++++++++++++
2 files changed, 98 insertions(+)
create mode 100644 core-java-modules/core-java-collections-array-list-2/src/test/java/com/baeldung/addallnulls/AddAllWithNullsUnitTest.java
diff --git a/core-java-modules/core-java-collections-array-list-2/pom.xml b/core-java-modules/core-java-collections-array-list-2/pom.xml
index b436324dca..ce3989ca2c 100644
--- a/core-java-modules/core-java-collections-array-list-2/pom.xml
+++ b/core-java-modules/core-java-collections-array-list-2/pom.xml
@@ -12,6 +12,14 @@
0.0.1-SNAPSHOT
+
+
+ org.apache.commons
+ commons-collections4
+ ${apache.commons.version}
+
+
+
@@ -28,5 +36,6 @@
17
17
+ 4.4
diff --git a/core-java-modules/core-java-collections-array-list-2/src/test/java/com/baeldung/addallnulls/AddAllWithNullsUnitTest.java b/core-java-modules/core-java-collections-array-list-2/src/test/java/com/baeldung/addallnulls/AddAllWithNullsUnitTest.java
new file mode 100644
index 0000000000..fa470fc975
--- /dev/null
+++ b/core-java-modules/core-java-collections-array-list-2/src/test/java/com/baeldung/addallnulls/AddAllWithNullsUnitTest.java
@@ -0,0 +1,89 @@
+package com.baeldung.addallnulls;
+
+import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
+import static org.assertj.core.api.Assertions.assertThatNoException;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.stream.Stream;
+import org.apache.commons.collections4.CollectionUtils;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+import org.junit.jupiter.params.provider.NullSource;
+
+class AddAllWithNullsUnitTest {
+
+ @ParameterizedTest
+ @NullSource
+ void givenNull_whenAddAll_thenAddThrowsNPE(List list) {
+ ArrayList strings = new ArrayList<>();
+ assertThatExceptionOfType(NullPointerException.class).isThrownBy(() -> strings.addAll(list));
+ }
+
+ @ParameterizedTest
+ @NullSource
+ void givenNull_whenAddAllWithCheck_thenNoNPE(List list) {
+ ArrayList strings = new ArrayList<>();
+ assertThatNoException().isThrownBy(() -> {
+ if (list != null) {
+ strings.addAll(list);
+ }
+ });
+ }
+
+ @ParameterizedTest
+ @NullSource
+ void givenNull_whenAddAllWithCollectionCheck_thenNoNPE(List list) {
+ ArrayList strings = new ArrayList<>();
+ assertThatNoException().isThrownBy(() -> {
+ strings.addAll(CollectionUtils.emptyIfNull(list));
+ });
+ }
+
+ @ParameterizedTest
+ @NullSource
+ void givenNull_whenAddAllWithExternalizedCheck_thenNoNPE(List list) {
+ ArrayList strings = new ArrayList<>();
+ assertThatNoException().isThrownBy(() -> {
+ addIfNonNull(list, strings);
+ });
+ }
+
+ private static void addIfNonNull(List list, ArrayList strings) {
+ if (list != null) {
+ strings.addAll(list);
+ }
+ }
+
+ @ParameterizedTest
+ @NullSource
+ void givenNull_whenAddAllWithOptional_thenNoNPE(List list) {
+ ArrayList strings = new ArrayList<>();
+ assertThatNoException().isThrownBy(() -> {
+ Optional.ofNullable(list).ifPresent(strings::addAll);
+ });
+ }
+
+ @ParameterizedTest
+ @MethodSource("listProvider")
+ void givenCollectionOfNullableLists_whenFilter_thenNoNPE(List> listOfLists) {
+ ArrayList strings = new ArrayList<>();
+ assertThatNoException().isThrownBy(() -> {
+ listOfLists.stream().filter(Objects::nonNull).forEach(strings::addAll);
+ });
+ }
+
+ static Stream>> listProvider() {
+ ArrayList> lists = new ArrayList<>();
+ lists.add(null);
+ lists.add(List.of("Hello"));
+ lists.add(null);
+ lists.add(List.of("World"));
+ lists.add(null);
+ return Stream.of(
+ lists
+ );
+ }
+}