class UI: def __init__(self): self.__controller = Controller("repository/input.txt") def run(self): while self.__controller.dead() == True: try: print(self.__controller.list_scramble()) cmd = input("Please insert command: ").split() if not cmd: print("Error!!! Please insert command!!!\n") elif cmd[0] == "undo": self.__controller.undo() elif cmd[0] == "swap": if len(cmd) != 6: print( "Error!!! Please insert a valid command!!! swap word_1 letter_1 - word_2 letter_2\n" ) else: self.__controller.swap(int(cmd[1]), int(cmd[2]), int(cmd[4]), int(cmd[5])) else: print( "Error!!! Invalid command!!! It must be either undo or swap!!!\n" ) except ValueError: print("Error!!! Invalid types for swap!!!\n") except ScrambleException as ex: print(ex) print(self.__controller.dead())
class TestController(TestCase): def setUp(self): self.controller = Controller("test.txt") def test_dead(self): self.assertEqual(self.controller.dead(), True) x = self.controller._get_scramble() x.dec_score(x.score) self.assertEqual(self.controller.dead(), "You Lose!") x.inc() x._set_scramble() self.assertEqual(self.controller.dead(), "You Win!") def test_swap(self): x = self.controller._get_scramble() l1 = x.scramble[1] l2 = x.scramble[2] self.controller.swap(0, 1, 0, 2) x = self.controller._get_scramble() self.assertEqual(x.scramble[1], l2) self.assertEqual(x.scramble[2], l1) def test_undo(self): with self.assertRaises(ControllerException): self.controller.undo() x = self.controller._get_scramble() l1 = x.scramble[1] l2 = x.scramble[2] self.controller.swap(0, 1, 0, 2) x = self.controller._get_scramble() self.assertEqual(x.scramble[1], l2) self.assertEqual(x.scramble[2], l1) self.controller.undo() x = self.controller._get_scramble() self.assertEqual(x.scramble[1], l1) self.assertEqual(x.scramble[2], l2) def test_list_scramble(self): x = self.controller._get_scramble() y = self.controller._get_scramble().scramble to_print = "" for letter in y: to_print += letter to_print += " [ score is: {} ]".format(x.score) self.assertEqual(self.controller.list_scramble(), to_print)