示例#1
0
 def test_add_to_toolbar_no_label(self):
     window = Window()
     window.open()
     action_item = ActionItem(action=self.action)
     toolbar_manager = ToolBarManager(name='Test')
     image_cache = ImageCache(height=32, width=32)
     menu = toolbar_manager.create_tool_bar(window.control)
     action_item.add_to_toolbar(window.control, menu, image_cache, None, False)
     window.close()
示例#2
0
 def test_add_to_toolbar_no_label(self):
     window = Window()
     window.open()
     action_item = ActionItem(action=self.action)
     toolbar_manager = ToolBarManager(name='Test')
     image_cache = ImageCache(height=32, width=32)
     menu = toolbar_manager.create_tool_bar(window.control)
     action_item.add_to_toolbar(window.control, menu, image_cache, None, False)
     window.close()
示例#3
0
 def test_add_to_menu(self):
     window = Window()
     window.open()
     action_item = ActionItem(action=self.action)
     menu_bar_manager = MenuBarManager()
     menu_manager = MenuManager(name='Test')
     menu_bar = menu_bar_manager.create_menu_bar(window.control)
     menu = menu_manager.create_menu(menu_bar)
     action_item.add_to_menu(window.control, menu, None)
     window.close()
示例#4
0
 def test_add_to_menu(self):
     window = Window()
     window.open()
     action_item = ActionItem(action=self.action)
     menu_bar_manager = MenuBarManager()
     menu_manager = MenuManager(name='Test')
     menu_bar = menu_bar_manager.create_menu_bar(window.control)
     menu = menu_manager.create_menu(menu_bar)
     action_item.add_to_menu(window.control, menu, None)
     window.close()
示例#5
0
 def test_add_to_toolbar_controller_false(self):
     window = Window()
     window.open()
     action_item = ActionItem(action=self.action)
     toolbar_manager = ToolBarManager(name="Test")
     image_cache = ImageCache(height=32, width=32)
     menu = toolbar_manager.create_tool_bar(window.control)
     controller = FalseActionController()
     action_item.add_to_toolbar(window.control, menu, image_cache,
                                controller, True)
     window.close()
示例#6
0
 def test_add_to_menu_controller_false(self):
     window = Window()
     window.open()
     action_item = ActionItem(action=self.action)
     menu_bar_manager = MenuBarManager()
     menu_manager = MenuManager(name="Test")
     menu_bar = menu_bar_manager.create_menu_bar(window.control)
     menu = menu_manager.create_menu(menu_bar)
     controller = FalseActionController()
     action_item.add_to_menu(window.control, menu, controller)
     window.close()
示例#7
0
    def test_parent(self):
        # test that lifecycle works with a parent
        parent = Window()
        self.dialog.parent = parent.control
        parent.open()
        tester = ModalDialogTester(self.dialog.open)
        tester.open_and_run(when_opened=lambda x: x.close(accept=True))
        with self.event_loop():
            parent.close()

        self.assertEqual(tester.result, OK)
        self.assertEqual(self.dialog.return_code, OK)
示例#8
0
    def test_add_to_toolbar_widget(self):
        self.action.style = "widget"
        self.action.control_factory = self.control_factory

        window = Window()
        window.open()
        action_item = ActionItem(action=self.action)
        toolbar_manager = ToolBarManager(name='Test')
        image_cache = ImageCache(height=32, width=32)
        menu = toolbar_manager.create_tool_bar(window.control)

        try:
            action_item.add_to_toolbar(window.control, menu, image_cache, None, True)
        finally:
            window.close()
示例#9
0
    def test_add_to_toolbar_widget(self):
        self.action.style = "widget"
        self.action.control_factory = self.control_factory

        window = Window()
        window.open()
        action_item = ActionItem(action=self.action)
        toolbar_manager = ToolBarManager(name='Test')
        image_cache = ImageCache(height=32, width=32)
        menu = toolbar_manager.create_tool_bar(window.control)

        try:
            action_item.add_to_toolbar(window.control, menu, image_cache, None, True)
        finally:
            window.close()
示例#10
0
class TestWindow(unittest.TestCase, GuiTestAssistant):
    def setUp(self):
        GuiTestAssistant.setUp(self)
        self.window = Window()

    def tearDown(self):
        if self.window.control is not None:
            with self.delete_widget(self.window.control):
                self.window.destroy()
        self.window = None
        GuiTestAssistant.tearDown(self)

    def test_destroy(self):
        # test that destroy works even when no control
        with self.event_loop():
            self.window.destroy()

    def test_open_close(self):
        # test that opening and closing works as expected
        with self.assertTraitChanges(self.window, "opening", count=1):
            with self.assertTraitChanges(self.window, "opened", count=1):
                with self.event_loop():
                    self.window.open()

        with self.assertTraitChanges(self.window, "closing", count=1):
            with self.assertTraitChanges(self.window, "closed", count=1):
                with self.event_loop():
                    self.window.close()

    def test_show(self):
        # test that showing works as expected
        with self.event_loop():
            self.window._create()
        with self.event_loop():
            self.window.show(True)
        with self.event_loop():
            self.window.show(False)
        with self.event_loop():
            self.window.destroy()

    def test_activate(self):
        # test that activation works as expected
        with self.event_loop():
            self.window.open()
        with self.event_loop():
            self.window.activate()
        with self.event_loop():
            self.window.close()

    def test_position(self):
        # test that default position works as expected
        self.window.position = (100, 100)
        with self.event_loop():
            self.window.open()
        with self.event_loop():
            self.window.close()

    def test_reposition(self):
        # test that changing position works as expected
        with self.event_loop():
            self.window.open()
        with self.event_loop():
            self.window.position = (100, 100)
        with self.event_loop():
            self.window.close()

    def test_size(self):
        # test that default size works as expected
        self.window.size = (100, 100)
        with self.event_loop():
            self.window.open()
        with self.event_loop():
            self.window.close()

    def test_resize(self):
        # test that changing size works as expected
        with self.event_loop():
            self.window.open()
        with self.event_loop():
            self.window.size = (100, 100)
        with self.event_loop():
            self.window.close()

    def test_title(self):
        # test that default title works as expected
        self.window.title = "Test Title"
        with self.event_loop():
            self.window.open()
        with self.event_loop():
            self.window.close()

    def test_retitle(self):
        # test that changing title works as expected
        with self.event_loop():
            self.window.open()
        with self.event_loop():
            self.window.title = "Test Title"
        with self.event_loop():
            self.window.close()

    def test_show_event(self):
        with self.event_loop():
            self.window.open()
        with self.event_loop():
            self.window.visible = False

        with self.assertTraitChanges(self.window, "visible", count=1):
            with self.event_loop():
                self.window.control.show()

        self.assertTrue(self.window.visible)

    def test_hide_event(self):
        with self.event_loop():
            self.window.open()

        with self.assertTraitChanges(self.window, "visible", count=1):
            with self.event_loop():
                self.window.control.hide()

        self.assertFalse(self.window.visible)

    @unittest.skipIf(no_modal_dialog_tester, "ModalDialogTester unavailable")
    @unittest.skipIf(is_pyqt5,
                     "Confirmation dialog click tests don't work on pyqt5.")
    @unittest.skipIf(
        is_pyqt4_linux,
        "Confirmation dialog click tests don't work reliably on linux.  Issue #282.",
    )
    def test_confirm_reject(self):
        # test that cancel works as expected
        tester = ModalDialogTester(
            lambda: self.window.confirm("message", cancel=True))
        tester.open_and_run(when_opened=lambda x: x.close(accept=False))

        self.assertEqual(tester.result, CANCEL)

    @unittest.skipIf(no_modal_dialog_tester, "ModalDialogTester unavailable")
    @unittest.skipIf(is_pyqt5,
                     "Confirmation dialog click tests don't work on pyqt5.")
    @unittest.skipIf(
        is_pyqt4_linux,
        "Confirmation dialog click tests don't work reliably on linux.  Issue #282.",
    )
    def test_confirm_yes(self):
        # test that yes works as expected
        tester = ModalDialogTester(lambda: self.window.confirm("message"))
        tester.open_and_wait(when_opened=lambda x: x.click_button(YES))

        self.assertEqual(tester.result, YES)

    @unittest.skipIf(no_modal_dialog_tester, "ModalDialogTester unavailable")
    @unittest.skipIf(is_pyqt5,
                     "Confirmation dialog click tests don't work on pyqt5.")
    @unittest.skipIf(
        is_pyqt4_linux,
        "Confirmation dialog click tests don't work reliably on linux.  Issue #282.",
    )
    def test_confirm_no(self):
        # test that no works as expected
        tester = ModalDialogTester(lambda: self.window.confirm("message"))
        tester.open_and_wait(when_opened=lambda x: x.click_button(NO))

        self.assertEqual(tester.result, NO)

    @unittest.skipIf(no_modal_dialog_tester, "ModalDialogTester unavailable")
    @unittest.skipIf(is_pyqt5,
                     "Confirmation dialog click tests don't work on pyqt5.")
    @unittest.skipIf(
        is_pyqt4_linux,
        "Confirmation dialog click tests don't work reliably on linux.  Issue #282.",
    )
    def test_confirm_cancel(self):
        # test that cncel works as expected
        tester = ModalDialogTester(
            lambda: self.window.confirm("message", cancel=True))
        tester.open_and_wait(when_opened=lambda x: x.click_button(CANCEL))

        self.assertEqual(tester.result, CANCEL)

    @unittest.skipIf(no_modal_dialog_tester, "ModalDialogTester unavailable")
    def test_information_accept(self):
        self._check_message_dialog_accept(self.window.information)

    @unittest.skipIf(no_modal_dialog_tester, "ModalDialogTester unavailable")
    @unittest.skipIf(is_pyqt5,
                     "Message dialog click tests don't work on pyqt5.")
    @unittest.skipIf(
        is_pyqt4_linux,
        "Message dialog click tests don't work reliably on linux.  Issue #282.",
    )
    def test_information_ok(self):
        self._check_message_dialog_ok(self.window.information)

    @unittest.skipIf(no_modal_dialog_tester, "ModalDialogTester unavailable")
    def test_warning_accept(self):
        self._check_message_dialog_accept(self.window.warning)

    @unittest.skipIf(no_modal_dialog_tester, "ModalDialogTester unavailable")
    @unittest.skipIf(is_pyqt5,
                     "Message dialog click tests don't work on pyqt5.")
    @unittest.skipIf(
        is_pyqt4_linux,
        "Message dialog click tests don't work reliably on linux.  Issue #282.",
    )
    def test_warning_ok(self):
        self._check_message_dialog_ok(self.window.warning)

    @unittest.skipIf(no_modal_dialog_tester, "ModalDialogTester unavailable")
    def test_error_accept(self):
        self._check_message_dialog_accept(self.window.error)

    @unittest.skipIf(no_modal_dialog_tester, "ModalDialogTester unavailable")
    @unittest.skipIf(is_pyqt5,
                     "Message dialog click tests don't work on pyqt5.")
    @unittest.skipIf(
        is_pyqt4_linux,
        "Message dialog click tests don't work reliably on linux.  Issue #282.",
    )
    def test_error_ok(self):
        self._check_message_dialog_ok(self.window.error)

    def _check_message_dialog_ok(self, method):
        tester = self._setup_tester(method)
        tester.open_and_wait(when_opened=lambda x: x.click_button(OK))

        self.assertIsNone(tester.result)

    def _check_message_dialog_accept(self, method):
        tester = self._setup_tester(method)
        tester.open_and_run(when_opened=lambda x: x.close(accept=True))

        self.assertIsNone(tester.result)

    def _setup_tester(self, method):
        kwargs = {
            "title": "Title",
            "detail": "Detail",
            "informative": "Informative",
        }
        tester = ModalDialogTester(lambda: method("message", **kwargs))
        return tester