// Alex Loddengaard // 9/29/06 // // This program tests stage 2 of the SortedIntList project. import java.util.*; public class Test2 { public static final int TEST_SIZE = 25; //the lower this is, the more duplicates there will be public static final int MAX_INT = 10; public static void main(String[] args) { SortedIntList list; //test the first constructor System.out.println("Testing SortedIntList(true)"); list = new SortedIntList(true); fill(list, SortedIntList.DEFAULT_CAPACITY); if (! test(list, true)) System.out.println("Failed!"); else System.out.println("passed!"); System.out.println(); //test the second constructor System.out.println("Testing SortedIntList(true, " + TEST_SIZE + ")"); list = new SortedIntList(true, TEST_SIZE); fill(list, TEST_SIZE); if (! test(list, true)) System.out.println("Failed!"); else System.out.println("Passed!"); System.out.println(); //test the third constructor System.out.println("Testing SortedIntList(false)"); list = new SortedIntList(false); fill(list, SortedIntList.DEFAULT_CAPACITY); if (! test(list, false)) System.out.println("Failed!"); else System.out.println("Passed!"); System.out.println(); //test the forth constructor System.out.println("SortedIntList(false, " + TEST_SIZE + ")"); list = new SortedIntList(false, TEST_SIZE); fill(list, TEST_SIZE); if (! test(list, false)) System.out.println("Failed!"); else System.out.println("Passed!"); } //pre: l is a SortedIntList, size will not exceed l's capacity //post: l is filled with TEST_SIZE random values public static void fill(SortedIntList l, int size) { Random rand = new Random(); //fill l with size elements for (int i = 0; i < size; i++) l.add(rand.nextInt(MAX_INT)); } //pre: l is a filled SortedIntList, unique should be true if all values // should be unique //post: tests is l is a valid SortedIntList and prints errors public static boolean test(SortedIntList l, boolean unique) { boolean ret = true; String error = ""; //loop through the list checking for order and duplicates for (int i = 1; i < l.size(); i++) { //check for duplicates if the list is supposed to be unique if (unique && l.get(i - 1) == l.get(i)) { ret = false; error += "\n\tDuplicate values found at indexes " + (i - 1) + " and " + i; } //check for order if (l.get(i - 1) > l.get(i)) { ret = false; error += "\n\tNot in sorted order at indexes " + (i - 1) + " and " + i; } } //print the error and the list if an error exists if (! ret) { System.out.println(error); System.out.println(); System.out.println("\t" + l); System.out.println(); } return ret; } }