def test_close_screen(self):
        screen = UIScreen()

        App.initialize()
        App.get_scheduler().schedule_screen(screen)
        # Program will quit in close_screen when stack is empty
        App.get_scheduler().schedule_screen(UIScreen())
        screen.close()
    def test_basic_connect(self):
        connect_screen = UIScreen()

        App.initialize(scheduler=MagicMock())
        connect_screen.connect(TestSignal, self._callback)
        App.get_event_loop().enqueue_signal(TestSignal(self))
        App.get_event_loop().process_signals()

        self.assertTrue(self.callback_called)
    def test_create_signal(self):
        connect_screen = UIScreen()

        App.initialize(scheduler=MagicMock())
        signal = connect_screen.create_signal(TestSignal, priority=20)

        self.assertEqual(signal.priority, 20)
        self.assertTrue(isinstance(signal, TestSignal))
        # source is set by create_signal
        self.assertEqual(signal.source, connect_screen)
Exemplo n.º 4
0
    def test_replace_screen_with_args(self):
        self.create_scheduler_with_stack()

        old_screen = UIScreen()
        screen = UIScreen()
        self.scheduler.schedule_screen(old_screen)
        self.scheduler.replace_screen(screen, "test")
        test_screen = self.pop_last_item()
        self.assertEqual(test_screen.ui_screen, screen)
        self.assertEqual(test_screen.args, "test")
        # The old_screen was replaced so the stack is empty now
        self.assertTrue(self.stack.empty())
Exemplo n.º 5
0
    def test_switch_screen_modal(self, _):
        self.create_scheduler_with_stack()

        screen = UIScreen()
        new_screen = UIScreen()
        self.scheduler.schedule_screen(screen)
        self.scheduler.push_screen_modal(new_screen)

        test_screen = self.pop_last_item()
        self.assertEqual(test_screen.ui_screen, new_screen)
        self.assertEqual(test_screen.args, None)
        self.assertEqual(test_screen.execute_new_loop, True)
Exemplo n.º 6
0
    def test_replace_screen(self):
        self.create_scheduler_with_stack()

        old_screen = UIScreen()
        screen = UIScreen()
        self.scheduler.schedule_screen(old_screen)
        self.scheduler.replace_screen(screen)
        self.assertEqual(self.pop_last_item(False).ui_screen, screen)

        new_screen = UIScreen()
        self.scheduler.replace_screen(new_screen)
        self.assertEqual(self.pop_last_item().ui_screen, new_screen)
        # The old_screen was replaced so the stack is empty now
        self.assertTrue(self.stack.empty())
Exemplo n.º 7
0
    def test_uiscreen_default_concurrency_check(self,
                                                input_handler_class_mock):
        # Replace default InputHandler instance created by InputManager by our mock to have
        # it stored after use.
        input_handler_instance_mock = InputHandlerMock()
        input_handler_class_mock.return_value = input_handler_instance_mock

        screen = UIScreen()
        screen.get_user_input("test")

        self.assertFalse(screen.input_manager.skip_concurrency_check)
        # Check that the created InputHandler instance has the flag correctly set.
        # We don't need to check the concurrency check functionality, it is tested
        # elsewhere already.
        self.assertFalse(input_handler_instance_mock.skip_concurrency_check)
Exemplo n.º 8
0
    def test_switch_screen_with_args(self):
        self.create_scheduler_with_stack()

        screen = UIScreen()
        self.scheduler.push_screen(screen, args="test")
        self.assertEqual(self.pop_last_item(False).ui_screen, screen)
        self.assertEqual(self.pop_last_item().args, "test")
Exemplo n.º 9
0
    def test_schedule_screen(self):
        self.create_scheduler_with_stack()

        screen = UIScreen()
        self.scheduler.schedule_screen(screen)
        test_screen = self.pop_last_item(False)
        self.assertEqual(test_screen.ui_screen, screen)
        self.assertEqual(test_screen.args, None)  # empty field - no arguments
        self.assertFalse(test_screen.execute_new_loop)

        # Schedule another screen, new one will be added to the bottom of the stack
        new_screen = UIScreen()
        self.scheduler.schedule_screen(new_screen)
        # Here should still be the old screen
        self.assertEqual(self.pop_last_item().ui_screen, screen)
        # After removing the first we would find the second screen
        self.assertEqual(self.pop_last_item().ui_screen, new_screen)
Exemplo n.º 10
0
    def test_switch_screen(self):
        self.create_scheduler_with_stack()

        screen = UIScreen()
        new_screen = UIScreen()

        self.scheduler.schedule_screen(screen)
        self.scheduler.push_screen(new_screen)

        test_screen = self.pop_last_item()
        self.assertEqual(test_screen.ui_screen, new_screen)
        self.assertEqual(test_screen.args, None)
        self.assertEqual(test_screen.execute_new_loop, False)

        # We popped the new_screen so the old screen should stay here
        self.assertEqual(self.pop_last_item().ui_screen, screen)
        self.assertTrue(self.stack.empty())
Exemplo n.º 11
0
    def test_nothing_to_render(self):
        self.create_scheduler_with_stack()

        self.assertTrue(self.scheduler.nothing_to_render)
        self.assertTrue(self.stack.empty())

        self.scheduler.schedule_screen(UIScreen())
        self.assertFalse(self.scheduler.nothing_to_render)
        self.assertFalse(self.stack.empty())
    def test_continue_input(self, mock_stdin, mock_stdout):
        mock_stdin.return_value = "c"
        screen = UIScreen()
        screen2 = EmptyScreenMock()

        App.get_scheduler().schedule_screen(screen)
        App.get_scheduler().schedule_screen(screen2)
        App.run()

        self.assertTrue(screen.screen_ready)
        self.assertTrue(screen.screen_ready)
    def test_emit(self):
        connect_screen = UIScreen()

        App.initialize(scheduler=MagicMock())
        connect_screen.connect(SignalMock, self._callback)
        connect_screen.emit(SignalMock(self))
        App.get_event_loop().process_signals()

        self.assertTrue(self.callback_called)
Exemplo n.º 14
0
    def test_replace_screen_with_empty_stack(self):
        self.create_scheduler_with_stack()

        with self.assertRaises(ScreenStackEmptyException):
            self.scheduler.replace_screen(UIScreen())
Exemplo n.º 15
0
 def refresh(self, args=None):
     """Put everything to display into self.window list."""
     UIScreen.refresh(self, args)
Exemplo n.º 16
0
    def test_switch_screen_modal_empty_stack(self, _):
        self.create_scheduler_with_stack()

        screen = UIScreen()
        self.scheduler.push_screen_modal(screen)
        self.assertEqual(self.pop_last_item().ui_screen, screen)
 def _prepare(self):
     self.ui_screen = UIScreen()
Exemplo n.º 18
0
 def __init__(self, data):
     UIScreen.__init__(self)
     common.UIObject.__init__(self, data)
     self.title = u"Default title"
Exemplo n.º 19
0
 def refresh(self, args=None):
     """Put everything to display into self.window list."""
     UIScreen.refresh(self, args)
 def test_close_screen_closed_from_other_source_error(self):
     App.initialize()
     App.get_scheduler().schedule_screen(UIScreen())
     with self.assertRaises(RenderUnexpectedError):
         App.get_scheduler().close_screen(closed_from=mock.MagicMock())
Exemplo n.º 21
0
 def __init__(self, data):
     UIScreen.__init__(self)
     common.UIObject.__init__(self, data)
     self.title = "Default title"
    def test_quit_input(self, mock_stdin, mock_stdout):
        mock_stdin.return_value = "q"
        screen = UIScreen()

        App.get_scheduler().schedule_screen(screen)
        App.run()