Skip to content

Commit 0377eab

Browse files
mtotowamkweegonSchiele
authored andcommitted
Add tests for the binary search implementation. (egonSchiele#110)
1 parent 184f801 commit 0377eab

File tree

2 files changed

+113
-0
lines changed

2 files changed

+113
-0
lines changed
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package main;
2+
3+
public class BinarySearch {
4+
public static void main(String[] args) {
5+
int[] myList = {87, 21, 45, 93};
6+
7+
System.out.println(binarySearch(myList, 93));
8+
System.out.println(binarySearch(myList, 16));
9+
}
10+
11+
public static int binarySearch(int[] list, int item) {
12+
if (isListEmpty(list)) {
13+
return -1;
14+
}
15+
16+
int low = 0;
17+
int high = list.length - 1;
18+
19+
while (low <= high) {
20+
int mid = (low + high) / 2;
21+
int guess = list[mid];
22+
23+
if (guessEqualsItem(guess, item)) {
24+
return mid;
25+
} else if (guessGreaterThanItem(guess, item)) {
26+
high = mid - 1;
27+
} else if(guessLessThanItem(guess, item)) {
28+
low = mid + 1;
29+
}
30+
}
31+
32+
return -1;
33+
}
34+
35+
public static boolean isListEmpty(int[] myList) {
36+
int listSize = myList.length;
37+
if (listSize == 0) {
38+
return true;
39+
}
40+
return false;
41+
}
42+
43+
public static boolean guessEqualsItem(int guess, int item) {
44+
if (guess != item) {
45+
return false;
46+
}
47+
return true;
48+
}
49+
50+
public static boolean guessGreaterThanItem(int guess, int item) {
51+
if (guess < item) {
52+
return false;
53+
}
54+
return true;
55+
}
56+
57+
public static boolean guessLessThanItem(int guess, int item) {
58+
if (guess > item) {
59+
return false;
60+
}
61+
return true;
62+
}
63+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package test;
2+
3+
import main.BinarySearch;
4+
import org.junit.Assert;
5+
import org.junit.Test;
6+
7+
public class BinarySearchTest {
8+
@Test
9+
public void testListIsEmpty() {
10+
BinarySearch binarySearch = new BinarySearch();
11+
int[] myList = {6, 9};
12+
int[] emptyList = {};
13+
14+
Assert.assertEquals(false, binarySearch.isListEmpty(myList));
15+
Assert.assertEquals(true, binarySearch.isListEmpty(emptyList));
16+
}
17+
18+
@Test
19+
public void testGuessEqualsItem() {
20+
BinarySearch binarySearch = new BinarySearch();
21+
22+
Assert.assertEquals(true, binarySearch.guessEqualsItem(3, 3));
23+
Assert.assertEquals(false, binarySearch.guessEqualsItem(0, 4));
24+
}
25+
26+
@Test
27+
public void testGuessIsLessThanItem() {
28+
BinarySearch binarySearch = new BinarySearch();
29+
30+
Assert.assertEquals(true, binarySearch.guessLessThanItem(2, 7));
31+
Assert.assertEquals(false, binarySearch.guessLessThanItem(6, 1));
32+
}
33+
34+
@Test
35+
public void testGuessGreaterThanItem() {
36+
BinarySearch binarySearch = new BinarySearch();
37+
38+
Assert.assertEquals(true, binarySearch.guessGreaterThanItem(17, 12));
39+
Assert.assertEquals(false, binarySearch.guessGreaterThanItem(13, 28));
40+
}
41+
42+
@Test
43+
public void testGivenListAndItemReturnIndexOfItem() {
44+
BinarySearch binarySearch = new BinarySearch();
45+
int[] testList = {1, 3, 5, 7, 9};
46+
47+
Assert.assertEquals(1, binarySearch.binarySearch(testList, 3));
48+
Assert.assertEquals(-1, binarySearch.binarySearch(testList, 77));
49+
}
50+
}

0 commit comments

Comments
 (0)