def run_single_test(algorithm, list_type, list_size): sort_list = get_list(list_type, list_size) pr = cProfile.Profile() pr.enable() if algorithm == "merge_sort": mergesort.merge_sort(sort_list, 0, len(sort_list) - 1) elif algorithm == "quicksort": quicksort.quick_sort(sort_list, 0, len(sort_list) - 1) elif algorithm == "revised_quicksort": revised_quicksort.revised_quick_sort(sort_list, 0, len(sort_list) - 1, 50) elif algorithm == "shell_sort": shellsort.shell_sort(sort_list, get_shellsort_gaps(list_size)) pr.disable() s = io.StringIO() ps = pstats.Stats(pr, stream=s).sort_stats("cumulative") ps.strip_dirs().print_stats() results = s.getvalue() for line in results.splitlines(): if "_sort)" in line: print(line) split_line = line.split() return (split_line[4])
def check_empty_list(self): test_list = [] try: shell_sort(test_list) except ValueError: pass else: raise BaseException
def check_set_to_sort(self): test_data = {1, 4, 6, 3, 5, 7, 3} try: shell_sort(test_data) except TypeError: pass else: raise BaseException
def check_dict_to_sort(self): test_data = {1: 2, 4: 3, 6: 1, 2: 4, 5: 9, 7: 8, 3: 5} try: shell_sort(test_data) except TypeError: pass else: raise BaseException
def check_str_to_sort(self): test_data = "1,2,3,4,5,6,7,8" try: shell_sort(test_data) except TypeError: pass else: raise BaseException
def check_return_sorted_list(self): test_list = [4, 23, 8, 42, 16, 15] builtin_sorted_list = sorted(test_list) shell_sorted_list = shell_sort(test_list) assert_equal( builtin_sorted_list, shell_sorted_list, "List {0} != {1}".format(builtin_sorted_list, shell_sorted_list))
def check_list_two_elements(self): test_list = [20, 16] builtin_sorted_list = sorted(test_list) shell_sorted_list = shell_sort(test_list) assert_equal( builtin_sorted_list, shell_sorted_list, "List {0} != {1}".format(builtin_sorted_list, shell_sorted_list))
def startAlgorithm(): global data if not data: return if algMenu.get() == 'Quick Sort': quick_sort(data, 0, len(data) - 1, drawData, speedScale.get()) elif algMenu.get() == 'Bubble Sort': bubble_sort(data, drawData, speedScale.get()) elif algMenu.get() == 'Merge Sort': merge_sort(data, drawData, speedScale.get()) elif algMenu.get() == 'Selection Sort': selection_sort(data, drawData, speedScale.get()) elif algMenu.get() == 'Heap Sort': heap_sort(data, drawData, speedScale.get()) elif algMenu.get() == 'Insertion Sort': insertion_sort(data, drawData, speedScale.get()) elif algMenu.get() == 'Shell Sort': shell_sort(data, drawData, speedScale.get()) drawData(data, ['green' for x in range(len(data))])
def test_list_of_ints_and_strings_raise_error(self): data = [1, 2, 3, 'e'], with self.assertRaises(TypeError): shell_sort(data)
def test_list_of_strings_raise_error(self): data = ['4', '3', '1', '2'], with self.assertRaises(TypeError): shell_sort(data)
def test_list_of_non_empty_lists_raise_error(self): data = [[1, 2, 3, 4], [1, 2, 3, 4], [5, 6, 7, 8], [7, 4, 6, 3]] with self.assertRaises(TypeError): shell_sort(data)
def test_list_of_empty_lists_raise_error(self): data = [[], [], [], []] with self.assertRaises(TypeError): shell_sort(data)
def check_list_of_one_element(self): test_list = [0] shell_sorted_list = shell_sort(test_list) assert_equal(test_list, shell_sorted_list, "List {0} != {1}".format(test_list, shell_sorted_list))
def test_set_raise_error(self): data = {5, 4, 3, 2, 6} with self.assertRaises(TypeError): shell_sort(data)
def test_tuple_raise_error(self): data = (1, 2, 3, 4, 5, 2, 4, 1, 3), with self.assertRaises(TypeError): shell_sort(data)
def test_ok(self): data = [5, 6, 4, 3, 8, 9, 10, 234, 123, 543, 234, 654] self.assertEquals(shell_sort(data), sorted(data))
def check_list_of_zeroes(self): test_list = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] shell_sorted_list = shell_sort(test_list) assert_equal(test_list, shell_sorted_list, "List {0} != {1}".format(test_list, shell_sorted_list))
def check_already_sorted_list(self): test_list = [18, 27, 36, 45, 54, 63, 72, 81] shell_sorted_list = shell_sort(test_list) assert_equal(test_list, shell_sorted_list, "List {0} != {1}".format(test_list, shell_sorted_list))
def test_string_raise_error(self): data = '5,4,3,2,1' with self.assertRaises(TypeError): shell_sort(data)
def test_list_only_zeroes(self): data = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] self.assertEquals(shell_sort(data), sorted(data))
def test_dict_raise_error(self): data = {1: 2, 3: 4, 5: 6, 7: 8} with self.assertRaises(TypeError): shell_sort(data)
def test_list_same_values(self): data = [5, 5, 5, 5, 5, 5, 5, 5, 5] self.assertEquals(shell_sort(data), sorted(data))
def test_list_1_element(self): data = [1] self.assertEquals(shell_sort(data), sorted(data))
def test_sorted_list(self): data = [1, 2, 3, 4] self.assertEquals(shell_sort(data), sorted(data))
def test_empty_list_raise_error(self): data = [] with self.assertRaises(ValueError): shell_sort(data)
def test_shellsort(self, lst): self.assertEqual(shell_sort(lst), sorted(lst))