@Test public void testRandom() { List<String> data = Tests.generateData(10000, 100); String[] arr = data.toArray(new String[data.size()]); DualPivotQuicksort.sort(arr); assertTrue(Tests.isSorted(arr)); }
@Test public void testDictCalls() { try { List<String> data = Tests.loadData("dictcalls.gz", true); String[] arr = data.toArray(new String[data.size()]); DualPivotQuicksort.sort(arr); assertTrue(Tests.isSorted(arr)); } catch (IOException ioe) { fail(ioe.toString()); } }
@Test public void testSorted() { try { List<String> data = Tests.loadData(); Collections.sort(data); String[] arr = data.toArray(new String[data.size()]); DualPivotQuicksort.sort(arr); assertTrue(Tests.isSorted(arr)); } catch (IOException ioe) { fail(ioe.toString()); } }
@Test public void testRepeated() { String[] arr = new String[10000]; final String STR = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; Arrays.fill(arr, STR); DualPivotQuicksort.sort(arr); assertTrue(Tests.isRepeated(arr, STR)); }
@Test public void testArguments() { DualPivotQuicksort.sort((String[]) null); DualPivotQuicksort.sort(new String[0]); String[] arr = new String[] {"a"}; DualPivotQuicksort.sort(arr); arr = new String[] {"b", "a"}; DualPivotQuicksort.sort(arr); assertTrue(Tests.isSorted(arr)); arr = new String[] {"c", "b", "a"}; DualPivotQuicksort.sort(arr); assertTrue(Tests.isSorted(arr)); // test with all empty input arr = new String[] {"", "", "", "", "", "", "", "", "", ""}; DualPivotQuicksort.sort(arr); for (String s : arr) { assertEquals("", s); } // test with peculiar input arr = new String[] {"z", "m", "", "a", "d", "tt", "tt", "tt", "foo", "bar"}; DualPivotQuicksort.sort(arr); assertTrue("peculiar input not sorted", Tests.isSorted(arr)); }
@Test public void testRepeatedCycle() { String[] strs = new String[100]; String seed = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; for (int i = 0, l = 1; i < strs.length; i++, l++) { strs[i] = seed.substring(0, l); } List<String> list = new ArrayList<String>(); for (int c = 10000, i = 0; c > 0; i++, c--) { list.add(strs[i % strs.length]); } String[] arr = list.toArray(new String[list.size()]); DualPivotQuicksort.sort(arr); assertTrue(Tests.isSorted(arr)); }