import unittest import io import re from unittest import mock import math import student_X as main #Replace student_X with your filename class PrintDucklingNamesTests(unittest.TestCase): def test_default_case(self): function = main.print_duckling_names test = False try: incorrect = "" result = function.__doc__.strip() test = incorrect != result except: pass message = "No docstring." self.assertTrue(test, message) inputs = ("J", ) with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout: function(*inputs) output = fake_stdout.getvalue().strip() correct = "Jack" in output feedback = "Doesn't print 'Jack' when 'J' is in the input." self.assertTrue(correct, feedback) #regex = output == "Jack" #correct = re.match(regex, output) correct = output == "Jack" feedback = "Doesn't print exactly 'Jack' when 'J' is in the input." self.assertTrue(correct, feedback) inputs = ("JK", ) with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout: function(*inputs) output = fake_stdout.getvalue().strip() correct = "Kack" in output feedback = "Doesn't print 'Kack' when 'K' is in the input." self.assertTrue(correct, feedback) #regex = output == "Jack" #correct = re.match(regex, output) correct = output == "Jack\nKack" feedback = "Doesn't work on 'JK'." self.assertTrue(correct, feedback) inputs = ("JKLMNOPQ", ) with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout: function(*inputs) output = fake_stdout.getvalue().strip() correct = "Mack" in output feedback = "Doesn't print 'Mack' when given the normal duckling first letters." self.assertTrue(correct, feedback) correct = not "Oack" in output feedback = "Yours prints Oack, but it should print Ouack instead." self.assertTrue(correct, feedback) correct = not "Qack" in output feedback = "Yours prints Qack, but it should print Quack instead." self.assertTrue(correct, feedback) #regex = output == "Jack" #correct = re.match(regex, output) correct = output == "Jack\nKack\nLack\nMack\nNack\nOuack\nPack\nQuack" feedback = "Doesn't work on the normal duckling letters." self.assertTrue(correct, feedback) inputs = ("ABCDEFGHIJKLM", ) with mock.patch('sys.stdout', new=io.StringIO()) as fake_stdout: function(*inputs) output = fake_stdout.getvalue().strip() correct = "Mack" in output feedback = "Doesn't print 'Mack' when 'M' is in the input." self.assertTrue(correct, feedback) correct = not "Aack" in output feedback = "Yours prints Aack, but I decided that should also get a 'u', so it should print Auack instead." self.assertTrue(correct, feedback) #regex = output == "Jack" #correct = re.match(regex, output) correct = output == "Auack\nBack\nCack\nDack\nEack\nFack\nGack\nHack\nIack\nJack\nKack\nLack\nMack" feedback = "Doesn't work on the first half of the alphabet." self.assertTrue(correct, feedback) if __name__ == "__main__": tests = PrintDucklingNamesTests() tests.test_default_case()