From 82215ea7745ab33b6b235685b7d73e9c70be0a78 Mon Sep 17 00:00:00 2001 From: tonasoft Date: Sat, 29 Mar 2025 17:29:25 -0400 Subject: [PATCH 1/7] Add boundary value test case for List using AssertJ --- .../org/assertj/tests/ListBoundaryTest.java | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 assertj-tests/src/test/java/org/assertj/tests/ListBoundaryTest.java diff --git a/assertj-tests/src/test/java/org/assertj/tests/ListBoundaryTest.java b/assertj-tests/src/test/java/org/assertj/tests/ListBoundaryTest.java new file mode 100644 index 00000000000..0fb475064d4 --- /dev/null +++ b/assertj-tests/src/test/java/org/assertj/tests/ListBoundaryTest.java @@ -0,0 +1,48 @@ + +package org.assertj.tests; + +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.List; + +public class ListBoundaryTest { + + // Test case for empty list (boundary: size = 0) + @Test + void testEmptyList() { + List emptyList = new ArrayList<>(); + + // Assert that the list is empty + Assertions.assertThat(emptyList) + .isNotNull() + .isEmpty(); + } + + // Test case for single-element list (boundary: size = 1) + @Test + void testSingleElementList() { + List singleItemList = List.of("AssertJ"); + + // Assert that the list contains exactly one item + Assertions.assertThat(singleItemList) + .isNotNull() + .hasSize(1) + .contains("AssertJ"); + } + + // Test case for larger list (boundary: size = 1000 as upper bound sample) + @Test + void testLargeListBoundary() { + List largeList = new ArrayList<>(); + for (int i = 0; i < 1000; i++) { + largeList.add(i); + } + + // Assert that the list has 1000 elements + Assertions.assertThat(largeList) + .hasSize(1000) + .contains(0, 500, 999); // Check key boundaries + } +} From 811e03631c3e83938b3409cac3c2ac55bc8023a5 Mon Sep 17 00:00:00 2001 From: tonasoft Date: Sat, 29 Mar 2025 19:17:25 -0400 Subject: [PATCH 2/7] Add boundary value test case for ListAssert.hasSize() --- .../core/api/ListAssert_hasSize_Test.java | 39 +++++++++++++++ .../org/assertj/tests/ListBoundaryTest.java | 48 ------------------- 2 files changed, 39 insertions(+), 48 deletions(-) create mode 100644 assertj-tests/src/test/java/org/assertj/core/api/ListAssert_hasSize_Test.java delete mode 100644 assertj-tests/src/test/java/org/assertj/tests/ListBoundaryTest.java diff --git a/assertj-tests/src/test/java/org/assertj/core/api/ListAssert_hasSize_Test.java b/assertj-tests/src/test/java/org/assertj/core/api/ListAssert_hasSize_Test.java new file mode 100644 index 00000000000..90138535f2f --- /dev/null +++ b/assertj-tests/src/test/java/org/assertj/core/api/ListAssert_hasSize_Test.java @@ -0,0 +1,39 @@ +package org.assertj.core.api; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.jupiter.api.Test; + +/** + * Boundary Value Test for ListAssert.hasSize(). + * This test checks how AssertJ handles lists with boundary sizes. + */ +class ListAssert_hasSize_Test { + + // Lower boundary: empty list + @Test + void should_pass_if_list_is_empty() { + List emptyList = new ArrayList<>(); + assertThat(emptyList).hasSize(0); + } + + // Nominal boundary: single item + @Test + void should_pass_if_list_has_one_item() { + List singleItem = List.of("AssertJ"); + assertThat(singleItem).hasSize(1); + } + + // Upper boundary: large list + @Test + void should_pass_if_list_has_1000_items() { + List largeList = new ArrayList<>(); + for (int i = 0; i < 1000; i++) { + largeList.add(i); + } + assertThat(largeList).hasSize(1000); + } +} diff --git a/assertj-tests/src/test/java/org/assertj/tests/ListBoundaryTest.java b/assertj-tests/src/test/java/org/assertj/tests/ListBoundaryTest.java deleted file mode 100644 index 0fb475064d4..00000000000 --- a/assertj-tests/src/test/java/org/assertj/tests/ListBoundaryTest.java +++ /dev/null @@ -1,48 +0,0 @@ - -package org.assertj.tests; - -import org.assertj.core.api.Assertions; -import org.junit.jupiter.api.Test; - -import java.util.ArrayList; -import java.util.List; - -public class ListBoundaryTest { - - // Test case for empty list (boundary: size = 0) - @Test - void testEmptyList() { - List emptyList = new ArrayList<>(); - - // Assert that the list is empty - Assertions.assertThat(emptyList) - .isNotNull() - .isEmpty(); - } - - // Test case for single-element list (boundary: size = 1) - @Test - void testSingleElementList() { - List singleItemList = List.of("AssertJ"); - - // Assert that the list contains exactly one item - Assertions.assertThat(singleItemList) - .isNotNull() - .hasSize(1) - .contains("AssertJ"); - } - - // Test case for larger list (boundary: size = 1000 as upper bound sample) - @Test - void testLargeListBoundary() { - List largeList = new ArrayList<>(); - for (int i = 0; i < 1000; i++) { - largeList.add(i); - } - - // Assert that the list has 1000 elements - Assertions.assertThat(largeList) - .hasSize(1000) - .contains(0, 500, 999); // Check key boundaries - } -} From 8f7dc8c44689d6726b19c749f96d7be98024f7e1 Mon Sep 17 00:00:00 2001 From: tonasoft Date: Sat, 29 Mar 2025 19:49:05 -0400 Subject: [PATCH 3/7] Add equivalence partitioning test for ListAssert.containsOnly() --- .../java/org/assertj/core/api/ListAssertContainsOnlyTest.java | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 assertj-tests/src/test/java/org/assertj/core/api/ListAssertContainsOnlyTest.java diff --git a/assertj-tests/src/test/java/org/assertj/core/api/ListAssertContainsOnlyTest.java b/assertj-tests/src/test/java/org/assertj/core/api/ListAssertContainsOnlyTest.java new file mode 100644 index 00000000000..a42b0bbb018 --- /dev/null +++ b/assertj-tests/src/test/java/org/assertj/core/api/ListAssertContainsOnlyTest.java @@ -0,0 +1,4 @@ +package org.assertj.core.api; + +public class ListAssertContainsOnlyTest { +} From f26c00c23209810a53557b4b9ae10be656cfee03 Mon Sep 17 00:00:00 2001 From: tonasoft Date: Sat, 29 Mar 2025 19:57:07 -0400 Subject: [PATCH 4/7] Add equivalence partitioning test for containsOnly in List assertions --- .../core/api/ListAssertContainsOnlyTest.java | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/assertj-tests/src/test/java/org/assertj/core/api/ListAssertContainsOnlyTest.java b/assertj-tests/src/test/java/org/assertj/core/api/ListAssertContainsOnlyTest.java index a42b0bbb018..97b638a1be0 100644 --- a/assertj-tests/src/test/java/org/assertj/core/api/ListAssertContainsOnlyTest.java +++ b/assertj-tests/src/test/java/org/assertj/core/api/ListAssertContainsOnlyTest.java @@ -1,4 +1,30 @@ -package org.assertj.core.api; +package org.assertj.tests; + +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.util.List; public class ListAssertContainsOnlyTest { + + // Valid partition: matches expected elements + @Test + void testContainsOnlyValidPartition() { + List actual = List.of(1, 2, 3); + Assertions.assertThat(actual).containsOnly(1, 2, 3); + } + + // Invalid partition: has an extra element + @Test + void testContainsOnlyInvalidPartition() { + List actual = List.of(1, 2, 3, 4); + Assertions.assertThat(actual).doesNotContain(5); + } + + // Valid partition with duplicates + @Test + void testContainsOnlyWithDuplicates() { + List actual = List.of(1, 1, 2, 3); + Assertions.assertThat(actual).containsOnly(1, 2, 3); + } } From e9f66fdd2fef3d1249dc3124f044960f96ca8c3a Mon Sep 17 00:00:00 2001 From: tonasoft Date: Sat, 29 Mar 2025 20:17:24 -0400 Subject: [PATCH 5/7] Add path testing for OptionalAssert.isPresent() and isEmpty() --- .../core/api/OptionalAssertPathTest.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 assertj-tests/src/test/java/org/assertj/core/api/OptionalAssertPathTest.java diff --git a/assertj-tests/src/test/java/org/assertj/core/api/OptionalAssertPathTest.java b/assertj-tests/src/test/java/org/assertj/core/api/OptionalAssertPathTest.java new file mode 100644 index 00000000000..c906c216e83 --- /dev/null +++ b/assertj-tests/src/test/java/org/assertj/core/api/OptionalAssertPathTest.java @@ -0,0 +1,25 @@ +package org.assertj.core.api; + +import org.junit.jupiter.api.Test; + +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThat; + +public class OptionalAssertPathTest { + + // Path 1: Optional is empty + @Test + void should_fail_if_optional_is_empty() { + Optional empty = Optional.empty(); + assertThat(empty).isEmpty(); + } + + // Path 2: Optional is present + @Test + void should_pass_if_optional_is_present() { + Optional value = Optional.of("AssertJ"); + assertThat(value).isPresent(); + assertThat(value.get()).isEqualTo("AssertJ"); + } +} From 38a8fb30431dc26f26d99b55ae77344721cc0871 Mon Sep 17 00:00:00 2001 From: tonasoft Date: Sat, 29 Mar 2025 20:24:01 -0400 Subject: [PATCH 6/7] Add data flow test for ObjectAssert using isInstanceOf and isNotInstanceOf --- .../core/api/ObjectAssertInstanceTest.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 assertj-tests/src/test/java/org/assertj/core/api/ObjectAssertInstanceTest.java diff --git a/assertj-tests/src/test/java/org/assertj/core/api/ObjectAssertInstanceTest.java b/assertj-tests/src/test/java/org/assertj/core/api/ObjectAssertInstanceTest.java new file mode 100644 index 00000000000..0f14eb3abc8 --- /dev/null +++ b/assertj-tests/src/test/java/org/assertj/core/api/ObjectAssertInstanceTest.java @@ -0,0 +1,23 @@ +package org.example; + +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; + +public class ObjectAssertInstanceTest { + + @Test + void should_pass_if_object_is_instance_of_expected_type() { + Number obj = Integer.valueOf(42); // Definition of obj + + // Use of obj in assertion - expected to pass + Assertions.assertThat(obj).isInstanceOf(Integer.class); + } + + @Test + void should_fail_if_object_is_not_instance_of_expected_type() { + Number obj = Double.valueOf(3.14); // Definition of obj + + // Use of obj in assertion - should NOT be Integer + Assertions.assertThat(obj).isNotInstanceOf(Integer.class); + } +} From 9e48e2e517056c561962fc5a3bc7fae9a798f098 Mon Sep 17 00:00:00 2001 From: tonasoft Date: Sat, 29 Mar 2025 20:31:10 -0400 Subject: [PATCH 7/7] Add integration test for StringAssert using startsWith, contains, endsWith --- .../core/api/StringAssertIntegrationTest.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 assertj-tests/src/test/java/org/assertj/core/api/StringAssertIntegrationTest.java diff --git a/assertj-tests/src/test/java/org/assertj/core/api/StringAssertIntegrationTest.java b/assertj-tests/src/test/java/org/assertj/core/api/StringAssertIntegrationTest.java new file mode 100644 index 00000000000..3f81883a198 --- /dev/null +++ b/assertj-tests/src/test/java/org/assertj/core/api/StringAssertIntegrationTest.java @@ -0,0 +1,27 @@ +package org.example; + +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; + +public class StringAssertIntegrationTest { + + @Test + void should_pass_when_string_matches_all_conditions() { + String sentence = "AssertJ makes testing easier."; + + Assertions.assertThat(sentence) + .startsWith("AssertJ") + .contains("testing") + .endsWith("easier."); + } + + @Test + void should_fail_when_any_condition_does_not_match() { + String sentence = "Assertions help simplify tests."; + + Assertions.assertThat(sentence) + .doesNotContain("difficult") + .startsWith("Assertions") + .endsWith("tests."); + } +}