def test_press_delete_button_and_cancel(self, _init_pygame,
                                            default_ui_manager,
                                            _display_surface_return_none):

        file_dialog = UIFileDialog(rect=pygame.Rect(100, 100, 440, 500),
                                   manager=default_ui_manager)

        file_dialog.current_file_path = Path(
            'tests/data/images/splat.png').resolve()
        file_dialog.delete_button.enable()

        event_data = {
            'button': pygame.BUTTON_LEFT,
            'pos': file_dialog.delete_button.rect.center
        }
        default_ui_manager.process_events(
            pygame.event.Event(pygame.MOUSEBUTTONDOWN, event_data))
        default_ui_manager.process_events(
            pygame.event.Event(pygame.MOUSEBUTTONUP, event_data))

        for event in pygame.event.get():
            default_ui_manager.process_events(event)

        assert file_dialog.delete_confirmation_dialog is not None

        event_data = {
            'user_type': pygame_gui.UI_BUTTON_PRESSED,
            'ui_element': file_dialog.delete_confirmation_dialog.cancel_button
        }
        cancel_event = pygame.event.Event(pygame.USEREVENT, event_data)

        default_ui_manager.process_events(cancel_event)

        assert (not file_dialog.delete_confirmation_dialog.alive())
    def test_press_delete_button_and_ok(self, _init_pygame, default_ui_manager,
                                        _display_surface_return_none):

        file_dialog = UIFileDialog(rect=pygame.Rect(100, 100, 440, 500),
                                   manager=default_ui_manager)

        with open(str(Path('tests/data/for_delete.txt')),
                  'w') as file_to_delete:
            file_to_delete.write('Some text')

        file_dialog.current_file_path = Path(
            'tests/data/for_delete.txt').absolute()
        file_dialog.delete_button.enable()

        event_data = {
            'button': pygame.BUTTON_LEFT,
            'pos': file_dialog.delete_button.rect.center
        }
        default_ui_manager.process_events(
            pygame.event.Event(pygame.MOUSEBUTTONDOWN, event_data))
        default_ui_manager.process_events(
            pygame.event.Event(pygame.MOUSEBUTTONUP, event_data))

        for event in pygame.event.get():
            default_ui_manager.process_events(event)

        assert file_dialog.delete_confirmation_dialog is not None

        ok_event_data = {
            'user_type': pygame_gui.UI_BUTTON_PRESSED,
            'ui_element': file_dialog.delete_confirmation_dialog.confirm_button
        }
        ok_event = pygame.event.Event(pygame.USEREVENT, ok_event_data)

        default_ui_manager.process_events(ok_event)

        assert (not file_dialog.delete_confirmation_dialog.alive())

        for event in pygame.event.get():
            default_ui_manager.process_events(event)

        assert not Path('tests/data/for_delete.txt').exists()
    def test_press_ok_button(self, _init_pygame, default_ui_manager,
                             _display_surface_return_none):
        file_dialog = UIFileDialog(rect=pygame.Rect(100, 100, 440, 500),
                                   manager=default_ui_manager)

        file_dialog.current_file_path = Path(
            'tests/data/images/splat.png').absolute()
        file_dialog.ok_button.enable()

        is_alive_pre_events = file_dialog.alive()
        event_data = {
            'button': pygame.BUTTON_LEFT,
            'pos': file_dialog.ok_button.rect.center
        }
        default_ui_manager.process_events(
            pygame.event.Event(pygame.MOUSEBUTTONDOWN, event_data))
        default_ui_manager.process_events(
            pygame.event.Event(pygame.MOUSEBUTTONUP, event_data))

        for event in pygame.event.get():
            default_ui_manager.process_events(event)

        confirm_event_fired = False
        event_path = None
        for event in pygame.event.get():
            default_ui_manager.process_events(event)

            if (event.type == pygame.USEREVENT and event.user_type
                    == pygame_gui.UI_FILE_DIALOG_PATH_PICKED
                    and event.ui_element == file_dialog):
                confirm_event_fired = True
                event_path = event.text
        is_dead_post_events = not file_dialog.alive()

        assert is_alive_pre_events
        assert is_dead_post_events
        assert confirm_event_fired
        assert event_path is not None and Path(event_path).name == 'splat.png'