import unittest import io import re from unittest import mock import math import inspect import student_X as main #Replace student_X with your filename class SelectionSortTests(unittest.TestCase): def test_default_case(self): function = main.selection_sort test = False try: incorrect = "" result = function.__doc__ result = result.strip() test = incorrect != result except: pass message = "No docstring." self.assertTrue(message, test) source = inspect.getsource(function) test = not ".sort(" in source message = "You can't use the built-in sort method for lists." self.assertTrue(message, test) test = "index_of_max_in_range(" in source message = "You aren't using index_of_max_in_range in your code." self.assertTrue(message, test) test = "swap_elements(" in source message = "You aren't using swap_elements in your code." self.assertTrue(message, test) inputs = ([]) correct = [] if isinstance(inputs, tuple): result = function(*inputs) else: result = function(inputs) test = result == None message = "Not void." self.assertTrue(test, message) test = inputs == correct message = "Doesn't work on an empty list." self.assertTrue(test, message) inputs = ([5]) correct = [5] if isinstance(inputs, tuple): result = function(*inputs) else: result = function(inputs) test = result == None message = "Not void." self.assertTrue(test, message) test = inputs == correct message = "Doesn't work on a list with one element." self.assertTrue(test, message) inputs = ([3, 2]) correct = [3, 2] if isinstance(inputs, tuple): result = function(*inputs) else: result = function(inputs) test = result == None message = "Not void." self.assertTrue(test, message) test = inputs == correct message = "Doesn't work on an already-sorted list with two elements." self.assertTrue(test, message) inputs = ([2, 3]) correct = [3, 2] if isinstance(inputs, tuple): result = function(*inputs) else: result = function(inputs) test = result == None message = "Not void." self.assertTrue(test, message) test = inputs == correct message = "Doesn't work on a backwards-sorted list with two elements." self.assertTrue(test, message) inputs = ([10, 10, 10, 10]) correct = [10, 10, 10, 10] if isinstance(inputs, tuple): result = function(*inputs) else: result = function(inputs) test = result == None message = "Not void." self.assertTrue(test, message) test = inputs == correct message = "Doesn't work on a list where all elements are the same." self.assertTrue(test, message) inputs = ([5, 10, 10, 5]) correct = [10, 10, 5, 5] if isinstance(inputs, tuple): result = function(*inputs) else: result = function(inputs) test = result == None message = "Not void." self.assertTrue(test, message) test = inputs == correct message = "Doesn't work on a list of length four." self.assertTrue(test, message) inputs = ([1, 2, 3, 2]) correct = [3, 2, 2, 1] if isinstance(inputs, tuple): result = function(*inputs) else: result = function(inputs) test = result == None message = "Not void." self.assertTrue(test, message) test = inputs == correct message = "Doesn't work on a list of length four." self.assertTrue(test, message) inputs = ([1, 3, 7, 9, 8, 6, 4, 2]) correct = [9, 8, 7, 6, 4, 3, 2, 1] if isinstance(inputs, tuple): result = function(*inputs) else: result = function(inputs) test = result == None message = "Not void." self.assertTrue(test, message) test = inputs == correct message = "Doesn't work on my list with no duplicates." self.assertTrue(test, message) inputs = ([1, 2, 3, 7, 2, 4, 10, 2]) correct = [10, 7, 4, 3, 2, 2, 2, 1] if isinstance(inputs, tuple): result = function(*inputs) else: result = function(inputs) test = result == None message = "Not void." self.assertTrue(test, message) test = inputs == correct message = "Doesn't work on a long list." self.assertTrue(test, message) if __name__ == "__main__": tests = SelectionSortTests() tests.test_default_case()