def test_dicontainer_inject_override(self):
     DIContainer.container = {}
     test_value_initial = Maze
     test_value_override = AdapterManager
     inject_return_initial = inject(self.test_key, test_value_initial)
     inject_return_override = inject(self.test_key, test_value_override)
     assert isinstance(
         inject_return_initial,
         Maze) and inject_return_initial == inject_return_override
Example #2
0
 def __init__(self):
     self.display_manager = inject(DIContainerKeys.display_manager,
                                   AdapterManager)
Example #3
0
    def __init__(self):
        self._leaderboard_filename = "leaderboard.json"
        self._auth_code_admin = None

        print("MAZE GAME BOOTSRAPPER ---------")
        print("ENV STATUS CHECK -----")
        print("Admin Auth Code - " +
              ("ENABLED" if self._auth_code_admin is not None else "DISABLED"))
        print("SenseHat - " + ("ENABLED" if sensehat_compat else "DISABLED"))
        print("Leaderboard - " + self._leaderboard_filename)
        print("----------------------")

        # Initialization of ControlManager and DisplayManager

        self._control_manager = inject(DIContainerKeys.control_manager,
                                       AdapterManager)
        self._control_manager.add(ConsoleControlAdapter)
        self._display_manager = inject(DIContainerKeys.display_manager,
                                       AdapterManager)
        self._display_manager.add(ConsoleDisplayAdapter)

        # Initialization of other deps.

        self._error_handler = inject(DIContainerKeys.error_handler,
                                     ErrorHandler)

        self._maze = inject(DIContainerKeys.maze, Maze)
        self._menu = inject(DIContainerKeys.menu, Menu)

        # Leaderboard init.
        # Handles "corrupted" leaderboard files.
        self._leaderboard = None
        self._leaderboard_compat = False
        while self._leaderboard is None:
            try:
                self._leaderboard = inject(DIContainerKeys.leaderboard,
                                           Leaderboard,
                                           self._leaderboard_filename)
                self._leaderboard_compat = True
            except TypeError as e:
                self._error_handler.new_error(e)
                menu_obj = {
                    "meta": {
                        "title": "LEADERBOARD LOAD FAIL RESOLVER MENU"
                    },
                    "sections": [{
                        "items": [{
                            "meta": {
                                "title": "Disable leaderboard",
                                "key": "D"
                            }
                        }, {
                            "meta": {
                                "title": "Reset leaderboard",
                                "key": "R"
                            }
                        }]
                    }]
                }
                user_choice = None
                while user_choice is None:
                    self._display_manager.call(
                        DisplayAdapterCalls.show_text,
                        "\nThere was an issue with loading the leaderboard. (Check error above)"
                    )
                    menu_render = self._menu.render(menu_obj)
                    self._display_manager.call(DisplayAdapterCalls.show_text,
                                               menu_render)
                    user_choice = self._control_manager.call(
                        ControlAdapterCalls.get_userinput_string,
                        "Enter option: ").upper()

                    if user_choice == "D":
                        self._leaderboard_compat = False
                        self._leaderboard = "DISABLED"
                    elif user_choice == "R":
                        user_choice = self._control_manager.call(
                            ControlAdapterCalls.get_userinput_string,
                            "Are you sure? [Y/N] ").upper()

                        if user_choice == "Y":
                            # Overwrite leaderboard file.
                            with open(
                                    os.path.join(
                                        os.path.dirname(
                                            os.path.realpath(__file__)),
                                        self._leaderboard_filename), "w") as f:
                                f.writelines(
                                    json.dumps({
                                        "meta": {
                                            "version": 1
                                        },
                                        "leaderboard": []
                                    }))
                        else:
                            user_choice = None
                    else:
                        self._error_handler.new_error("Invalid user input")
Example #4
0
 def __init__(self, filename):
     self._filepath = os.path.join(os.path.dirname(os.path.realpath(__file__)), filename)
     self._load_file()
     self._score_init = 1000
     self._maze = inject(DIContainerKeys.maze, Maze)
 def __init__(self):
     self._sensehat = SenseHat()
     self._maze = inject(DIContainerKeys.maze, Maze)
     self._sensehat.low_light = True
    def test_dicontainer_inject(self, test_input, expected):
        DIContainer.container = {}
        inject_return = inject(self.test_key, test_input)

        assert isinstance(inject_return, expected) and isinstance(
            DIContainer.get(self.test_key), expected)