Skip to content

Commit 8dc5505

Browse files
lukasb1bvil02
andauthored
Add FindMaxRecursionTest (TheAlgorithms#4431)
* Update FindMaxRecursion.java * Create FindMaxRecusionTest.java * Update and rename FindMaxRecusionTest.java to FindMaxRecursionTest.java * Update FindMaxRecursion.java * Update FindMaxRecursion.java * Update src/test/java/com/thealgorithms/maths/FindMaxRecursionTest.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> * Update src/test/java/com/thealgorithms/maths/FindMaxRecursionTest.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> * Update src/main/java/com/thealgorithms/maths/FindMaxRecursion.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> * Update FindMaxRecursion.java * Update FindMaxRecursionTest.java * Update FindMaxRecursionTest.java * Update FindMaxRecursion.java * Update src/main/java/com/thealgorithms/maths/FindMaxRecursion.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> * Update FindMaxRecursion.java * Update FindMaxRecursion.java * Update FindMaxRecursion.java * Update FindMaxRecursion.java * Update FindMaxRecursion.java * Update src/main/java/com/thealgorithms/maths/FindMaxRecursion.java Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --------- Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com>
1 parent f72b80b commit 8dc5505

File tree

2 files changed

+36
-22
lines changed

2 files changed

+36
-22
lines changed
Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,9 @@
11
package com.thealgorithms.maths;
22

3-
import java.util.Arrays;
4-
import java.util.Random;
3+
public final class FindMaxRecursion {
54

6-
public class FindMaxRecursion {
7-
8-
public static void main(String[] args) {
9-
Random rand = new Random();
10-
11-
/* rand size */
12-
int size = rand.nextInt(100) + 1;
13-
int[] array = new int[size];
14-
15-
/* init array with rand numbers */
16-
for (int i = 0; i < size; i++) {
17-
array[i] = rand.nextInt() % 100;
18-
}
19-
20-
assert max(array) == Arrays.stream(array).max().getAsInt();
21-
assert max(array, 0, array.length - 1) == Arrays.stream(array).max().getAsInt();
5+
private FindMaxRecursion() {
226
}
23-
247
/**
258
* Get max of array using divide and conquer algorithm
269
*
@@ -29,7 +12,10 @@ public static void main(String[] args) {
2912
* @param high the index of the last element
3013
* @return max of {@code array}
3114
*/
32-
public static int max(int[] array, int low, int high) {
15+
public static int max(final int[] array, final int low, final int high) {
16+
if (array.length == 0) {
17+
throw new IllegalArgumentException("array must be non-empty.");
18+
}
3319
if (low == high) {
3420
return array[low]; // or array[high]
3521
}
@@ -48,7 +34,7 @@ public static int max(int[] array, int low, int high) {
4834
* @param array contains elements
4935
* @return max value of {@code array}
5036
*/
51-
public static int max(int[] array) {
52-
return array.length == 1 ? array[0] : max(array, 0, array.length);
37+
public static int max(final int[] array) {
38+
return max(array, 0, array.length - 1);
5339
}
5440
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.thealgorithms.maths;
2+
3+
import static org.junit.jupiter.api.Assertions.assertThrows;
4+
5+
import java.util.stream.Stream;
6+
import org.junit.jupiter.api.Assertions;
7+
import org.junit.jupiter.api.Test;
8+
import org.junit.jupiter.params.ParameterizedTest;
9+
import org.junit.jupiter.params.provider.Arguments;
10+
import org.junit.jupiter.params.provider.MethodSource;
11+
12+
public class FindMaxRecursionTest {
13+
14+
@ParameterizedTest
15+
@MethodSource("inputStream")
16+
void numberTests(int expected, int[] input) {
17+
Assertions.assertEquals(expected, FindMaxRecursion.max(input));
18+
}
19+
20+
private static Stream<Arguments> inputStream() {
21+
return Stream.of(Arguments.of(5, new int[] {5, 5, 5, 5, 5}), Arguments.of(0, new int[] {-1, 0}), Arguments.of(-1, new int[] {-10, -9, -8, -7, -6, -5, -4, -3, -2, -1}), Arguments.of(9, new int[] {3, -2, 3, 9, -4, -4, 8}), Arguments.of(3, new int[] {3}));
22+
}
23+
24+
@Test
25+
public void testFindMaxThrowsExceptionForEmptyInput() {
26+
assertThrows(IllegalArgumentException.class, () -> FindMaxRecursion.max(new int[] {}));
27+
}
28+
}

0 commit comments

Comments
 (0)