def run_filter_above_test(): expenses = [] services = Services(expenses) try: services.filter_above([""]) assert False except: assert True try: services.filter_above(["abc"]) assert False except: assert True services.filter_above(["0"]) services.add(["8", "4", "transport"]) assert len(expenses) == 1 services.add(["7", "2", "transport"]) assert len(expenses) == 2 services.add(["6", "1", "transport"]) assert len(expenses) == 3 services.add(["5", "2", "cloathing"]) assert len(expenses) == 4 services.filter_above(["1"]) assert len(expenses) == 3
def run_undo_test(): expenses = [] services = Services(expenses) services.add(["4", "4", "food"]) assert len(expenses) == 1 services.add(["4", "8", "housekeeping"]) assert len(expenses) == 2 services.add(["3", "16", "housekeeping"]) assert len(expenses) == 3 services.add(["2", "32", "internet"]) assert len(expenses) == 4 services.filter_above(["10"]) assert len(expenses) == 2 services.undo_last_action() assert len(expenses) == 4 services.undo_last_action() assert len(expenses) == 3 services.undo_last_action() assert len(expenses) == 2 services.undo_last_action() assert len(expenses) == 1 services.undo_last_action() assert len(expenses) == 0 try: services.undo_last_action() assert False except: assert True
class Program: def __init__(self): self.__ui_manager = MenuUI() self.__DEBUGGING_MODE = True self.__services = Services() def start(self): if self.__DEBUGGING_MODE: run_tests() self.__services.preload_list() self.__ui_manager.show_help() while True: action = self.__ui_manager.get_action() try: if action.type == constants.ACTION_ADD: result = self.__services.add(action.params) self.__ui_manager.print_result(result) elif action.type == constants.ACTION_ERROR: self.__ui_manager.on_invalid_command() elif action.type == constants.ACTION_EXIT: return elif action.type == constants.ACTION_FILTER_ABOVE: result = self.__services.filter_above(action.params) self.__ui_manager.print_result(result) elif action.type == constants.ACTION_HELP: self.__ui_manager.show_help() elif action.type == constants.ACTION_LIST_ALL: result = self.__services.list_all() self.__ui_manager.print_result(result) elif action.type == constants.ACTION_UNDO: result = self.__services.undo_last_action() self.__ui_manager.print_result(result) except ValidationError as error: self.__ui_manager.handle_error(error)