Skip to content

Instantly share code, notes, and snippets.

@aybabtme
Created November 25, 2012 22:21
Show Gist options
  • Save aybabtme/4145655 to your computer and use it in GitHub Desktop.
Save aybabtme/4145655 to your computer and use it in GitHub Desktop.
package textEditor.core.algorithms;
import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.Arrays;
import org.junit.Before;
import org.junit.Test;
public class ArraySearchTest {
private final static int FUZZ_TEST_COUNT = 100000;
private final static int MAX_SIZE = 1000;
private final static int MAX_RANDOM = Integer.MAX_VALUE;
private final static int MIN_RANDOM = Integer.MIN_VALUE;
private ArraySearch<Integer> mSearchAlgo;
@Before
public void setup(){
mSearchAlgo = new BinarySearch<Integer>();
}
@Test
public void notFoundOnEmptyArray() {
Integer[] array = {
// Empty
};
int expected = -1;
int actual = mSearchAlgo.searchValueInArray(array, 1);
assertEquals(expected, actual);
}
@Test
public void notFoundInNullArray() {
Integer[] array = null;
int expected = -1;
int actual = mSearchAlgo.searchValueInArray(array, 1);
assertEquals(expected, actual);
}
@Test
public void notFoundInArrayOfOneElement() {
for(int i = 0; i < FUZZ_TEST_COUNT; i++){
int value = getRandom();
Integer[] array = {
value
};
int expected = -1;
int actual = mSearchAlgo.searchValueInArray(array, value);
assertEquals(expected, actual);
}
}
@Test
public void foundInArrayOfOneElem() {
for(int i = 0; i < FUZZ_TEST_COUNT; i++){
int value = getRandom();
Integer[] array = {
value
};
int expected = 0;
int actual = mSearchAlgo.searchValueInArray(array, value);
assertEquals(expected, actual);
}
}
@Test
public void notFoundInArrayOfTwoElems() {
for(int i = 0; i < FUZZ_TEST_COUNT; i++){
Integer[] array = getRandomArray(2);
Arrays.sort(array);
int index = getRandomIndex(2);
int value = array[index];
int expected = -1;
int actual = mSearchAlgo.searchValueInArray(array, value);
assertEquals(expected, actual);
}
}
@Test
public void foundInArrayOfTwoElems() {
for(int i = 0; i < FUZZ_TEST_COUNT; i++){
Integer[] array = getRandomArray(2);
Arrays.sort(array);
int index = getRandomIndex(2);
int value = array[index];
int expected = index;
int actual = mSearchAlgo.searchValueInArray(array, value);
assertEquals(expected, actual);
}
}
@Test
public void notFoundInArrayOfThreeElems() {
for(int i = 0; i < FUZZ_TEST_COUNT; i++){
Integer[] array = getRandomArray(3);
Arrays.sort(array);
int index = getRandomIndex(3);
int value = array[index];
int expected = -1;
int actual = mSearchAlgo.searchValueInArray(array, value);
assertEquals(expected, actual);
}
}
@Test
public void foundInArrayOfThreeElems() {
for(int i = 0; i < FUZZ_TEST_COUNT; i++){
Integer[] array = getRandomArray(3);
Arrays.sort(array);
int index = getRandomIndex(3);
int value = array[index];
int expected = index;
int actual = mSearchAlgo.searchValueInArray(array, value);
assertEquals(expected, actual);
}
}
@Test
public void notFoundInArrarOfFourElems() {
for(int i = 0; i < FUZZ_TEST_COUNT; i++){
Integer[] array = getRandomArray(4);
Arrays.sort(array);
int index = getRandomIndex(4);
int value = array[index];
int expected = -1;
int actual = mSearchAlgo.searchValueInArray(array, value);
assertEquals(expected, actual);
}
}
@Test
public void foundInArrayOfFourElems() {
for(int i = 0; i < FUZZ_TEST_COUNT; i++){
Integer[] array = getRandomArray(4);
Arrays.sort(array);
int index = getRandomIndex(4);
int value = array[index];
int expected = index;
int actual = mSearchAlgo.searchValueInArray(array, value);
assertEquals(expected, actual);
}
}
@Test
public void notFoundInArrayOfFiveElems() {
for(int i = 0; i < FUZZ_TEST_COUNT; i++){
Integer[] array = getRandomArray(5);
Arrays.sort(array);
int index = getRandomIndex(5);
int value = array[index];
int expected = -1;
int actual = mSearchAlgo.searchValueInArray(array, value);
assertEquals(expected, actual);
}
}
@Test
public void foundInArrayOfFiveElems() {
for(int i = 0; i < FUZZ_TEST_COUNT; i++){
Integer[] array = getRandomArray(5);
Arrays.sort(array);
int index = getRandomIndex(5);
int value = array[index];
int expected = index;
int actual = mSearchAlgo.searchValueInArray(array, value);
assertEquals(expected, actual);
}
}
@Test
public void notFoundInArrayOfNElems() {
for(int i = 0; i < FUZZ_TEST_COUNT; i++){
int size = getRandom();
Integer[] array = getRandomArray(size);
Arrays.sort(array);
int index = getRandomIndex(size);
int value = array[index];
int expected = -1;
int actual = mSearchAlgo.searchValueInArray(array, value);
assertEquals(expected, actual);
}
}
@Test
public void foundInArrayOfNElems() {
for(int i = 0; i < FUZZ_TEST_COUNT; i++){
int size = getRandom();
Integer[] array = getRandomArray(size);
Arrays.sort(array);
int index = getRandomIndex(size);
int value = array[index];
int expected = index;
int actual = mSearchAlgo.searchValueInArray(array, value);
assertEquals(expected, actual);
}
}
@Test
public void foundInArrayOfSameElem() {
for(int i = 0; i < FUZZ_TEST_COUNT; i++){
int size = getRandom();
Integer[] array = new Integer[size];
for(int j = 0; j < size; j++) {
array[j] = 1;
}
int value = 1;
int expected = (int)(size/2);
int actual = mSearchAlgo.searchValueInArray(array, value);
assertEquals(expected, actual);
}
}
///////////////////////////////////////////////////////////////////////////
// Helpers
///////////////////////////////////////////////////////////////////////////
private int getRandom(){
int random = (int) (Math.random() * (MAX_RANDOM - MIN_RANDOM));
return random + MIN_RANDOM;
}
private int getRandomIndex(int size) {
int randomIndex = (int)(Math.random()*size);
return randomIndex;
}
private Integer[] getRandomArray(int size){
Integer[] randomArray = new Integer[size];
for(int i = 0; i < size; i++){
randomArray[i] = Integer.valueOf(getRandom());
}
return randomArray;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment