Пример #1
0
def run_list_category_test():
    expenses = []
    function = Function(expenses)

    try:
        function.list_category([""])
        assert False
    except ValidationError:
        assert True

    try:
        function.list_category(["abc"])
        assert False
    except ValidationError:
        assert True

    try:
        function.list_category([constants.CATEGORY_TRANSPORT])
        assert False
    except ValidationError:
        assert True

    function.insert(["24", "1", constants.CATEGORY_CLOATHING])
    assert len(expenses) == 1

    assert function.list_category([constants.CATEGORY_CLOATHING])
Пример #2
0
def run_remove_category_test():
    expenses = []
    function = Function(expenses)

    function.insert(["25", "2", constants.CATEGORY_OTHERS])
    assert len(expenses) == 1

    try:
        function.remove_category([""])
        assert False
    except ValidationError:
        assert True
    assert len(expenses) == 1

    try:
        function.remove_category(["abc"])
        assert False
    except ValidationError:
        assert True
    assert len(expenses) == 1

    function.remove_category([constants.CATEGORY_TRANSPORT])
    assert len(expenses) == 1

    function.remove_category([constants.CATEGORY_OTHERS])
    assert len(expenses) == 0
Пример #3
0
def run_list_category_condition_test():
    expenses = []
    function = Function(expenses)

    try:
        function.list_category(["", "", ""])
        assert False
    except ValidationError:
        assert True

    try:
        function.list_category(["abc", "abc", "abc"])
        assert False
    except ValidationError:
        assert True

    try:
        function.list_category([constants.CATEGORY_FOOD, "abc", "abc"])
        assert False
    except ValidationError:
        assert True

    try:
        function.list_category([constants.CATEGORY_HOUSEKEEPING, 'a', "abc"])
        assert False
    except ValidationError:
        assert True

    try:
        function.list_category([constants.CATEGORY_INTERNET, '-', "abc"])
        assert False
    except ValidationError:
        assert True

    try:
        function.list_category([constants.CATEGORY_OTHERS, '<', "abc"])
        assert False
    except ValidationError:
        assert True

    try:
        function.list_category([constants.CATEGORY_TRANSPORT, '=', "0"])
        assert False
    except ValidationError:
        assert True

    function.insert(["23", "2", constants.CATEGORY_CLOATHING])
    assert len(expenses) == 1

    assert function.list_category([constants.CATEGORY_CLOATHING, '>', -1])
Пример #4
0
def run_filter_category_condition_test():
    expenses = []
    function = Function(expenses)

    try:
        function.filter_category_condition(["", "", ""])
        assert False
    except ValidationError:
        assert True

    try:
        function.filter_category_condition(["abc", "abc", "abc"])
        assert False
    except ValidationError:
        assert True

    try:
        function.filter_category_condition(
            [constants.CATEGORY_FOOD, "abc", "abc"])
        assert False
    except ValidationError:
        assert True

    try:
        function.filter_category_condition(
            [constants.CATEGORY_HOUSEKEEPING, '-', "abc"])
        assert False
    except ValidationError:
        assert True

    try:
        function.filter_category_condition(
            [constants.CATEGORY_INTERNET, '<', "abc"])
        assert False
    except ValidationError:
        assert True

    function.filter_category_condition([constants.CATEGORY_OTHERS, '=', "0"])

    function.insert(["8", "4", constants.CATEGORY_TRANSPORT])
    assert len(expenses) == 1

    function.insert(["7", "2", constants.CATEGORY_TRANSPORT])
    assert len(expenses) == 2

    function.insert(["6", "1", constants.CATEGORY_TRANSPORT])
    assert len(expenses) == 3

    function.insert(["5", "2", constants.CATEGORY_CLOATHING])
    assert len(expenses) == 4

    function.filter_category_condition(
        [constants.CATEGORY_TRANSPORT, '>', "1"])
    assert len(expenses) == 2
Пример #5
0
def run_sort_day_test():
    expenses = []
    function = Function(expenses)

    try:
        function.sort_day([""])
        assert False
    except ValidationError:
        assert True

    try:
        function.sort_day(["abc"])
        assert False
    except ValidationError:
        assert True

    try:
        function.sort_day(["-1"])
        assert False
    except ValidationError:
        assert True

    try:
        function.sort_day(["0"])
        assert False
    except ValidationError:
        assert True

    try:
        function.sort_day(["32"])
        assert False
    except ValidationError:
        assert True

    try:
        function.sort_day(["31"])
        assert False
    except ValidationError:
        assert True

    function.insert(["16", "128", constants.CATEGORY_TRANSPORT])
    assert len(expenses) == 1

    function.insert(["16", "256", constants.CATEGORY_CLOATHING])
    assert len(expenses) == 2

    function.insert(["16", "64", constants.CATEGORY_FOOD])
    assert len(expenses) == 3

    function.insert(["15", "512", constants.CATEGORY_HOUSEKEEPING])
    assert len(expenses) == 4

    assert function.sort_day(["16"])
    assert "4." not in function.sort_day(["16"])
Пример #6
0
def run_remove_day_test():
    expenses = []
    function = Function(expenses)

    function.insert(["27", "8", constants.CATEGORY_HOUSEKEEPING])
    assert len(expenses) == 1

    try:
        function.remove_day([""])
        assert False
    except ValidationError:
        assert True
    assert len(expenses) == 1

    try:
        function.remove_day(["abc"])
        assert False
    except ValidationError:
        assert True
    assert len(expenses) == 1

    try:
        function.remove_day(["0"])
        assert False
    except ValidationError:
        assert True
    assert len(expenses) == 1

    try:
        function.remove_day(["32"])
        assert False
    except ValidationError:
        assert True
    assert len(expenses) == 1

    function.remove_day(["31"])
    assert len(expenses) == 1

    function.remove_day(["1"])
    assert len(expenses) == 1

    function.remove_day(["27"])
    assert len(expenses) == 0
Пример #7
0
def run_undo_test():
    expenses = []
    function = Function(expenses)

    function.insert(["4", "4", constants.CATEGORY_FOOD])
    assert len(expenses) == 1

    function.insert(["4", "8", constants.CATEGORY_HOUSEKEEPING])
    assert len(expenses) == 2

    function.insert(["3", "16", constants.CATEGORY_HOUSEKEEPING])
    assert len(expenses) == 3

    function.insert(["2", "32", constants.CATEGORY_INTERNET])
    assert len(expenses) == 4

    function.remove_day(["4"])
    assert len(expenses) == 2

    function.undo_last_action()
    assert len(expenses) == 4

    function.remove_category([constants.CATEGORY_HOUSEKEEPING])
    assert len(expenses) == 2

    function.undo_last_action()
    assert len(expenses) == 4

    function.filter_category_condition(
        [constants.CATEGORY_HOUSEKEEPING, '<', "10"])
    assert len(expenses) == 1

    function.undo_last_action()
    assert len(expenses) == 4

    function.undo_last_action()
    assert len(expenses) == 3

    function.undo_last_action()
    assert len(expenses) == 2

    function.undo_last_action()
    assert len(expenses) == 1

    function.undo_last_action()
    assert len(expenses) == 0

    try:
        function.undo_last_action()
        assert False
    except ValidationError:
        assert True
Пример #8
0
def run_filter_category_test():
    expenses = []
    function = Function(expenses)

    try:
        function.filter_category([""])
        assert False
    except ValidationError:
        assert True

    try:
        function.filter_category(["abc"])
        assert False
    except ValidationError:
        assert True

    function.filter_category([constants.CATEGORY_TRANSPORT])

    function.insert(["11", "32", constants.CATEGORY_CLOATHING])
    assert len(expenses) == 1

    function.insert(["10", "16", constants.CATEGORY_FOOD])
    assert len(expenses) == 2

    function.insert(["9", "8", constants.CATEGORY_CLOATHING])
    assert len(expenses) == 3

    function.filter_category([constants.CATEGORY_CLOATHING])
    assert len(expenses) == 2
Пример #9
0
def run_sum_category_test():
    expenses = []
    function = Function(expenses)

    try:
        function.sum_category([""])
        assert False
    except ValidationError:
        assert True

    try:
        function.sum_category(["abc"])
        assert False
    except ValidationError:
        assert True

    assert "0" in function.sum_category([constants.CATEGORY_CLOATHING])

    function.insert(["22", "4", constants.CATEGORY_FOOD])
    assert len(expenses) == 1
    assert "4" in function.sum_category([constants.CATEGORY_FOOD])

    function.insert(["21", "8", constants.CATEGORY_HOUSEKEEPING])
    assert len(expenses) == 2
    assert "4" in function.sum_category([constants.CATEGORY_FOOD])

    function.insert(["20", "16", constants.CATEGORY_FOOD])
    assert len(expenses) == 3
    assert "20" in function.sum_category([constants.CATEGORY_FOOD])
Пример #10
0
def run_max_day_test():
    expenses = []
    function = Function(expenses)

    try:
        function.max_day([""])
        assert False
    except ValidationError:
        assert True

    try:
        function.max_day(["abc"])
        assert False
    except ValidationError:
        assert True

    try:
        function.max_day(["-1"])
        assert False
    except ValidationError:
        assert True

    try:
        function.max_day(["0"])
        assert False
    except ValidationError:
        assert True

    try:
        function.max_day(["32"])
        assert False
    except ValidationError:
        assert True

    try:
        function.max_day(["19"])
        assert False
    except ValidationError:
        assert True

    function.insert(["18", "32", constants.CATEGORY_HOUSEKEEPING])
    assert len(expenses) == 1
    assert "32" in function.max_day(["18"])

    function.insert(["17", "64", constants.CATEGORY_INTERNET])
    assert len(expenses) == 2
    assert "32" in function.max_day(["18"])

    function.insert(["18", "128", constants.CATEGORY_OTHERS])
    assert len(expenses) == 3
    assert "128" in function.max_day(["18"])
Пример #11
0
def run_sort_category_test():
    expenses = []
    function = Function(expenses)

    try:
        function.sort_category([""])
        assert False
    except ValidationError:
        assert True

    try:
        function.sort_category(["abc"])
        assert False
    except ValidationError:
        assert True

    try:
        function.sort_category([constants.CATEGORY_INTERNET])
        assert False
    except ValidationError:
        assert True

    function.insert(["14", "128", constants.CATEGORY_OTHERS])
    assert len(expenses) == 1

    function.insert(["13", "256", constants.CATEGORY_OTHERS])
    assert len(expenses) == 2

    function.insert(["12", "64", constants.CATEGORY_OTHERS])
    assert len(expenses) == 3

    function.insert(["11", "512", constants.CATEGORY_TRANSPORT])
    assert len(expenses) == 4

    assert function.sort_category([constants.CATEGORY_OTHERS])
    assert "4." not in function.sort_category([constants.CATEGORY_OTHERS])
Пример #12
0
class Program:
    def __init__(self):
        self.__ui_manager = CommandUI()
        self.__DEBUGGING_MODE = True
        self.__function = Function()

    def change_ui(self):
        if not self.__ui_manager.switch():
            return
        if self.__ui_manager.TYPE == constants.TYPE_COMMAND:
            self.__ui_manager = MenuUI()
            print("Changed to menu based UI")
        else:
            self.__ui_manager = CommandUI()
            print("Changed to command based UI")

    def start(self):
        if self.__DEBUGGING_MODE:
            run_tests()

        self.__function.preload_list()
        self.change_ui()
        self.__ui_manager.show_help()

        while True:
            action = self.__ui_manager.get_action()

            try:
                if action.type == constants.ACTION_ADD:
                    result = self.__function.add(action.params)
                    self.__ui_manager.print_result(result)

                elif action.type == constants.ACTION_CHANGE_UI:
                    self.change_ui()

                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_CATEGORY:
                    result = self.__function.filter_category(action.params)
                    self.__ui_manager.print_result(result)

                elif action.type == constants.ACTION_FILTER_CATEGORY_CONDITION:
                    result = self.__function.filter_category_condition(
                        action.params)
                    self.__ui_manager.print_result(result)

                elif action.type == constants.ACTION_HELP:
                    self.__ui_manager.show_help()

                elif action.type == constants.ACTION_INSERT:
                    result = self.__function.insert(action.params)
                    self.__ui_manager.print_result(result)

                elif action.type == constants.ACTION_LIST_ALL:
                    result = self.__function.list_all()
                    self.__ui_manager.print_result(result)

                elif action.type == constants.ACTION_LIST_CATEGORY:
                    result = self.__function.list_category(action.params)
                    self.__ui_manager.print_result(result)

                elif action.type == constants.ACTION_LIST_CATEGORY_CONDITION:
                    result = self.__function.list_category_condition(
                        action.params)
                    self.__ui_manager.print_result(result)

                elif action.type == constants.ACTION_MAX_DAY:
                    result = self.__function.max_day(action.params)
                    self.__ui_manager.print_result(result)

                elif action.type == constants.ACTION_REMOVE_CATEGORY:
                    result = self.__function.remove_category(action.params)
                    self.__ui_manager.print_result(result)

                elif action.type == constants.ACTION_REMOVE_DAY:
                    result = self.__function.remove_day(action.params)
                    self.__ui_manager.print_result(result)

                elif action.type == constants.ACTION_REMOVE_RANGE:
                    result = self.__function.remove_range(action.params)
                    self.__ui_manager.print_result(result)

                elif action.type == constants.ACTION_SORT_CATEGORY:
                    result = self.__function.sort_category(action.params)
                    self.__ui_manager.print_result(result)

                elif action.type == constants.ACTION_SORT_DAY:
                    result = self.__function.sort_day(action.params)
                    self.__ui_manager.print_result(result)

                elif action.type == constants.ACTION_SUM_CATEGORY:
                    result = self.__function.sum_category(action.params)
                    self.__ui_manager.print_result(result)

                elif action.type == constants.ACTION_UNDO:
                    result = self.__function.undo_last_action()
                    self.__ui_manager.print_result(result)
            except ValidationError as error:
                self.__ui_manager.handle_error(error)
Пример #13
0
def run_insert_test():
    expenses = []
    function = Function(expenses)

    try:
        function.insert(["", "", ""])
        assert False
    except ValidationError:
        assert True
    assert len(expenses) == 0

    try:
        function.insert(["abc", "abc", "abc"])
        assert False
    except ValidationError:
        assert True
    assert len(expenses) == 0

    try:
        function.insert(["0", "0", "abc"])
        assert False
    except ValidationError:
        assert True
    assert len(expenses) == 0

    try:
        function.insert(["32", "abc", "abc"])
        assert False
    except ValidationError:
        assert True
    assert len(expenses) == 0

    try:
        function.insert(["30", "abc", "abc"])
        assert False
    except ValidationError:
        assert True
    assert len(expenses) == 0

    try:
        function.insert(["29", "128", "abc"])
        assert False
    except ValidationError:
        assert True
    assert len(expenses) == 0

    function.insert(["28", "64", constants.CATEGORY_FOOD])
    assert len(expenses) == 1

    expense = expenses[0]
    assert expense.cost == 64
    assert expense.category == constants.CATEGORY_FOOD
    assert expense.day == 28
Пример #14
0
def run_remove_range_test():
    expenses = []
    function = Function(expenses)

    function.insert(["26", "4", constants.CATEGORY_INTERNET])
    assert len(expenses) == 1

    try:
        function.remove_range(["", "", ""])
        assert False
    except ValidationError:
        assert True
    assert len(expenses) == 1

    try:
        function.remove_range(["abc", "", "abc"])
        assert False
    except ValidationError:
        assert True
    assert len(expenses) == 1

    try:
        function.remove_range(["0", "", "abc"])
        assert False
    except ValidationError:
        assert True
    assert len(expenses) == 1

    try:
        function.remove_range(["32", "", "abc"])
        assert False
    except ValidationError:
        assert True
    assert len(expenses) == 1

    try:
        function.remove_range(["1", "", "abc"])
        assert False
    except ValidationError:
        assert True
    assert len(expenses) == 1

    try:
        function.remove_range(["31", "", "0"])
        assert False
    except ValidationError:
        assert True
    assert len(expenses) == 1

    try:
        function.remove_range(["2", "", "32"])
        assert False
    except ValidationError:
        assert True
    assert len(expenses) == 1

    try:
        function.remove_range(["30", "", "3"])
        assert False
    except ValidationError:
        assert True
    assert len(expenses) == 1

    function.remove_range(["1", "", "10"])
    assert len(expenses) == 1

    function.remove_range(["10", "to", "20"])
    assert len(expenses) == 1

    function.remove_range(["1", "to", "20"])
    assert len(expenses) == 1

    function.remove_range(["21", "to", "26"])
    assert len(expenses) == 0

    function.remove_range(["1", "", "31"])
    assert len(expenses) == 0