import org.junit.Test;
import java.util.Arrays;
import java.util.Random;
import static org.junit.Assert.assertArrayEquals;
/**
* User: Simon
* Date: 8/20/13
* Time: 10:20 AM
*/
public class SortTest {
@Test(timeout=1000)
public void randomArrayTest() {
for (int i = 0; i < 100; i++) {
// System.out.println("randomSort:");
int[] random = getRandomArray(new Random().nextInt(200)+1);
// System.out.println(Arrays.toString(random));
// System.out.println(Arrays.toString(sort(random)));
// System.out.println(Arrays.toString( new Sort().sort(random)));
assertArrayEquals(sort(random), new Sort().sort(random));
}
}
@Test(timeout=1000)
public void sortArrayTest() {
for (int i = 0; i < 50; i++) {
int[] random = getSortArray(new Random().nextInt(200)+1);
assertArrayEquals(random, new Sort().sort(random));
}
}
@Test(timeout=1000)
public void reverseArrayTest() {
for (int i = 0; i < 50; i++) {
// System.out.println("reverseSort:");
int[] random = getReverseArray(new Random().nextInt(200)+1);
// System.out.println(Arrays.toString(random));
// System.out.println(Arrays.toString(sort(random)));
// System.out.println(Arrays.toString( new Sort().sort(random)));
assertArrayEquals(sort(random), new Sort().sort(random));
}
}
@Test(timeout=1000)
public void equalArrayTest() {
for (int i = 0; i < 50; i++) {
int[] random = getEqualArray(new Random().nextInt(200)+1);
assertArrayEquals(sort(random), new Sort().sort(random));
}
}
@Test(timeout=1000)
public void emptyArrayTest() {
int[] random = new int[0];
assertArrayEquals(sort(random), new Sort().sort(random));
}
private int[] sort(int[] array) {
int[] sort = Arrays.copyOf(array,array.length);
Arrays.sort(sort);
return sort;
}
private int[] getRandomArray(int size) {
int[] randomArray = new int[size];
Random r = new Random();
for (int i = 0; i < size; i++)
randomArray[i] = r.nextInt(size*100);
return randomArray;
}
private int[] getSortArray(int size) {
return sort(getRandomArray(size));
}
private int[] getReverseArray(int size) {
int[] sort = getSortArray(size);
int[] reverse = new int[size];
for (int i = 0; i < size; i++){
reverse[i] = sort[size-i-1];
}
return reverse;
}
private int[] getEqualArray(int size) {
int[] equalArray = new int[size];
int r = new Random().nextInt(size*100);
for (int i = 0; i < size; i++)
equalArray[i] = r;
return equalArray;
}
}