Skip to content

Commit d6a871e

Browse files
testing: improve test coverage RangeInSortedArrayTest (#6395)
* testing: improve test coverage RangeInSortedArrayTest * style: fix formatting checkstyle --------- Co-authored-by: Deniz Altunkapan <[email protected]>
1 parent fc477ee commit d6a871e

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

src/test/java/com/thealgorithms/misc/RangeInSortedArrayTest.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,26 @@ private static Stream<Arguments> provideGetCountLessThanTestCases() {
3232
return Stream.of(Arguments.of(new int[] {1, 2, 3, 3, 4, 5}, 3, 4, "Count of elements less than existing key"), Arguments.of(new int[] {1, 2, 3, 3, 4, 5}, 4, 5, "Count of elements less than non-existing key"), Arguments.of(new int[] {1, 2, 2, 3}, 5, 4, "Count with all smaller elements"),
3333
Arguments.of(new int[] {2, 3, 4, 5}, 1, 0, "Count with no smaller elements"), Arguments.of(new int[] {}, 1, 0, "Count in empty array"));
3434
}
35+
36+
@ParameterizedTest(name = "Edge case {index}: {3}")
37+
@MethodSource("provideEdgeCasesForSortedRange")
38+
void testSortedRangeEdgeCases(int[] nums, int key, int[] expectedRange, String description) {
39+
assertArrayEquals(expectedRange, RangeInSortedArray.sortedRange(nums, key), description);
40+
}
41+
42+
private static Stream<Arguments> provideEdgeCasesForSortedRange() {
43+
return Stream.of(Arguments.of(new int[] {5, 5, 5, 5, 5}, 5, new int[] {0, 4}, "All elements same as key"), Arguments.of(new int[] {1, 2, 3, 4, 5}, 1, new int[] {0, 0}, "Key is first element"), Arguments.of(new int[] {1, 2, 3, 4, 5}, 5, new int[] {4, 4}, "Key is last element"),
44+
Arguments.of(new int[] {1, 2, 3, 4, 5}, 0, new int[] {-1, -1}, "Key less than all elements"), Arguments.of(new int[] {1, 2, 3, 4, 5}, 6, new int[] {-1, -1}, "Key greater than all elements"),
45+
Arguments.of(new int[] {1, 2, 2, 2, 3, 3, 3, 4}, 3, new int[] {4, 6}, "Multiple occurrences spread"), Arguments.of(new int[] {2}, 2, new int[] {0, 0}, "Single element array key exists"), Arguments.of(new int[] {2}, 3, new int[] {-1, -1}, "Single element array key missing"));
46+
}
47+
48+
@ParameterizedTest(name = "Edge case {index}: {3}")
49+
@MethodSource("provideEdgeCasesForGetCountLessThan")
50+
void testGetCountLessThanEdgeCases(int[] nums, int key, int expectedCount, String description) {
51+
assertEquals(expectedCount, RangeInSortedArray.getCountLessThan(nums, key), description);
52+
}
53+
54+
private static Stream<Arguments> provideEdgeCasesForGetCountLessThan() {
55+
return Stream.of(Arguments.of(new int[] {1, 2, 3, 4, 5}, 0, 0, "Key less than all elements"), Arguments.of(new int[] {1, 2, 3, 4, 5}, 6, 5, "Key greater than all elements"), Arguments.of(new int[] {1}, 0, 0, "Single element greater than key"));
56+
}
3557
}

0 commit comments

Comments
 (0)