Add tests for 2D array binary search (#3892)
This commit is contained in:
parent
6b9eb1b9c1
commit
be13981e94
@ -1,9 +1,12 @@
|
|||||||
package com.thealgorithms.searches;
|
package com.thealgorithms.searches;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.AfterAll;
|
||||||
|
|
||||||
|
|
||||||
public class BinarySearch2dArrayTest {
|
public class BinarySearch2dArrayTest {
|
||||||
|
|
||||||
@ -97,4 +100,67 @@ public class BinarySearch2dArrayTest {
|
|||||||
assertEquals(-1, ans[0]);
|
assertEquals(-1, ans[0]);
|
||||||
assertEquals(-1, ans[1]);
|
assertEquals(-1, ans[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test if the method works with input arrays consisting only of one row.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void BinarySearch2dArrayTestOneRow() {
|
||||||
|
int[][] arr = { { 1, 2, 3, 4 }};
|
||||||
|
int target = 2;
|
||||||
|
|
||||||
|
// Assert that the requirement, that the array only has one row, is fulfilled.
|
||||||
|
assertEquals(arr.length, 1);
|
||||||
|
int[] ans = BinarySearch2dArray.BinarySearch(arr, target);
|
||||||
|
System.out.println(Arrays.toString(ans));
|
||||||
|
assertEquals(0, ans[0]);
|
||||||
|
assertEquals(1, ans[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test if the method works with the target in the middle of the input.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void BinarySearch2dArrayTestTargetInMiddle() {
|
||||||
|
int[][] arr = { { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 10 }, { 11, 12, 13, 14, 15} };
|
||||||
|
int target = 8;
|
||||||
|
// Assert that the requirement, that the target is in the middle row and middle column, is fulfilled.
|
||||||
|
assertEquals(arr[arr.length/2][arr[0].length/2], target);
|
||||||
|
int[] ans = BinarySearch2dArray.BinarySearch(arr, target);
|
||||||
|
System.out.println(Arrays.toString(ans));
|
||||||
|
assertEquals(1, ans[0]);
|
||||||
|
assertEquals(2, ans[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test if the method works with the target in the middle column,
|
||||||
|
* in the row above the middle row.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void BinarySearch2dArrayTestTargetAboveMiddleRowInMiddleColumn() {
|
||||||
|
int[][] arr = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };
|
||||||
|
int target = 3;
|
||||||
|
|
||||||
|
// Assert that the requirement, that he target is in the middle column,
|
||||||
|
// in an array with an even number of columns, and on the row "above" the middle row.
|
||||||
|
assertEquals(arr[0].length % 2, 0);
|
||||||
|
assertEquals(arr[arr.length/2-1][arr[0].length/2], target);
|
||||||
|
int[] ans = BinarySearch2dArray.BinarySearch(arr, target);
|
||||||
|
System.out.println(Arrays.toString(ans));
|
||||||
|
assertEquals(0, ans[0]);
|
||||||
|
assertEquals(2, ans[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test if the method works with an empty array.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void BinarySearch2dArrayTestEmptyArray() {
|
||||||
|
int[][] arr = {};
|
||||||
|
int target = 5;
|
||||||
|
|
||||||
|
// Assert that an empty array is not valid input for the method.
|
||||||
|
assertThrows(ArrayIndexOutOfBoundsException.class, () -> BinarySearch2dArray.BinarySearch(arr, target));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user