def test_handle_scrollwheel(self,
                                mock_get_scroll):
        """Scroll wheel produces events."""
        pipe = mock.MagicMock()
        listener = inputs.QuartzMouseBaseListener(pipe)

        # We begin with no evdev events
        self.assertEqual(listener.events, [])

        # We (pretend that we) have a Quartz event
        event = mock.MagicMock()

        # Let's call the method that we care about
        listener.handle_scrollwheel(event)

        # Now let's see what happened

        # get_scroll was called
        mock_get_scroll.assert_called_once()

        # Do we have events
        self.assertEqual(len(listener.events), 2)

        first_event = next(inputs.iter_unpack(
            listener.events[0]))
        self.assertEqual(first_event[2:], (2, 6, 2))

        second_event = next(inputs.iter_unpack(
            listener.events[1]))
        self.assertEqual(second_event[2:], (2, 8, 2))
    def test_handle_relative(self,
                             mock_get_deltas):
        """Relative position is processed."""
        pipe = mock.MagicMock()
        listener = inputs.AppKitMouseBaseListener(pipe)
        # Events begin empty
        self.assertEqual(listener.events, [])

        event = mock.MagicMock()
        # Run the method under test
        listener.handle_relative(event)

        # Check that we have events
        self.assertEqual(len(listener.events), 3)

        first_event = next(inputs.iter_unpack(
            listener.events[0]))
        self.assertEqual(first_event[2:], (2, 0, 5))

        second_event = next(inputs.iter_unpack(
            listener.events[1]))
        self.assertEqual(second_event[2:], (2, 1, 5))

        third_event = next(inputs.iter_unpack(
            listener.events[2]))
        self.assertEqual(third_event[2:], (2, 2, 5))

        mock_get_deltas.assert_called_once_with(event)
    def test_handle_relative(self, mock_get_relative):
        """Relative mouse movement produces events."""
        pipe = mock.MagicMock()
        listener = inputs.QuartzMouseBaseListener(pipe)

        # We begin with no evdev events
        self.assertEqual(listener.events, [])

        # We have a Quartz event
        event = mock.MagicMock()

        # Let's call the method that we care about
        listener.handle_relative(event)

        # Now let's see what happened

        # get_relative was called
        mock_get_relative.assert_called_once()

        # Do we have events
        self.assertEqual(len(listener.events), 2)

        first_event = next(inputs.iter_unpack(
            listener.events[0]))
        self.assertEqual(first_event[2:], (2, 0, 600))

        second_event = next(inputs.iter_unpack(
            listener.events[1]))
        self.assertEqual(second_event[2:], (2, 1, 400))
    def test_handle_middle_button(self,
                                  mock_get_mouse_button_number,
                                  mock_get_click_state):
        """Convert quartz events to evdev events."""
        pipe = mock.MagicMock()
        listener = inputs.QuartzMouseBaseListener(pipe)

        # We begin with no events
        self.assertEqual(listener.events, [])
        event = mock.MagicMock()
        listener.handle_button(event, 26)

        # _get_mouse_button_number was called
        mock_get_mouse_button_number.assert_called_once()

        # get_click_state was called
        mock_get_click_state.assert_called_once()

        # Now there are three events
        self.assertEqual(len(listener.events), 3)

        first_event = next(inputs.iter_unpack(
            listener.events[0]))
        self.assertEqual(first_event[2:], (4, 4, 589827))
        second_event = next(inputs.iter_unpack(
            listener.events[1]))
        self.assertEqual(second_event[2:], (1, 274, 0))
        third_event = next(inputs.iter_unpack(
            listener.events[2]))
        self.assertEqual(third_event[2:], (20, 2, 1))
    def test_emulate_abs(self):
        """Returns absolute mouse event."""
        pipe = mock.MagicMock()
        listener = inputs.BaseListener(pipe)

        x_list, y_list = listener.emulate_abs(1324, 246, (100, 1))
        x_info = next(inputs.iter_unpack(x_list))
        self.assertEqual(x_info, (100, 1, 3, 0, 1324))
        y_info = next(inputs.iter_unpack(y_list))
        self.assertEqual(y_info, (100, 1, 3, 1, 246))
    def test_emulate_wheel_x(self):
        """Returns an event list for the x mouse wheel turn."""
        pipe = mock.MagicMock()
        listener = inputs.BaseListener(pipe)
        eventlist = listener.emulate_wheel(20, 'x', (100, 1))
        event_info = next(inputs.iter_unpack(eventlist))
        self.assertEqual(event_info, (100, 1, 2, 6, 20))

        eventlist = listener.emulate_wheel(-20, 'x', (100, 1))
        event_info = next(inputs.iter_unpack(eventlist))
        self.assertEqual(event_info, (100, 1, 2, 6, -20))
    def test_sync_marker(self):
        """Returns a sync marker."""
        pipe = mock.MagicMock()
        listener = inputs.BaseListener(pipe)

        sync_list = listener.sync_marker((100, 1))
        sync_info = next(inputs.iter_unpack(sync_list))
        self.assertEqual(sync_info, (100, 1, 0, 0, 0))

        sync_list = listener.sync_marker((200, 2))
        sync_info = next(inputs.iter_unpack(sync_list))
        self.assertEqual(sync_info, (200, 2, 0, 0, 0))
    def test_emulate_press_up(self):
        """Returns an event list for button."""
        pipe = mock.MagicMock()
        listener = inputs.BaseListener(pipe)

        scan_list, button_list = listener.emulate_press(
            272, 589825, 0, (100, 1))
        scan_info = next(inputs.iter_unpack(scan_list))
        button_info = next(inputs.iter_unpack(button_list))

        self.assertEqual(scan_info, (100, 1, 4, 4, 589825))
        self.assertEqual(button_info, (100, 1, 1, 272, 0))
    def test_emulate_wheel_win(self):
        """Returns an event list for the mouse wheel turn on Windows."""
        inputs.WIN = True
        pipe = mock.MagicMock()
        listener = inputs.BaseListener(pipe)
        eventlist = listener.emulate_wheel(240, 'x', (100, 1))
        event_info = next(inputs.iter_unpack(eventlist))
        self.assertEqual(event_info, (100, 1, 2, 6, 2))

        eventlist = listener.emulate_wheel(-240, 'x', (100, 1))
        event_info = next(inputs.iter_unpack(eventlist))
        self.assertEqual(event_info, (100, 1, 2, 6, -2))
        inputs.WIN = False
 def test_handle_button(self, mock_get_mouse_button_number):
     """Mouse click produces an event."""
     pipe = mock.MagicMock()
     listener = inputs.AppKitMouseBaseListener(pipe)
     # Events begin empty
     self.assertEqual(listener.events, [])
     event = mock.MagicMock(return_value=1)
     listener.handle_button(event, 25)
     self.assertEqual(len(listener.events), 2)
     first_event = next(inputs.iter_unpack(
         listener.events[0]))
     self.assertEqual(first_event[2:], (4, 4, 589827))
     second_event = next(inputs.iter_unpack(
         listener.events[1]))
     self.assertEqual(second_event[2:], (1, 274, 1))
    def test_emulate_repeat(self):
        """Returns a repeat event, e.g. doubleclick, triple click."""
        pipe = mock.MagicMock()
        listener = inputs.BaseListener(pipe)

        repeat_list = listener.emulate_repeat(1, (100, 1))
        repeat_info = next(inputs.iter_unpack(repeat_list))
        self.assertEqual(repeat_info, (100, 1, 20, 2, 1))

        repeat_list = listener.emulate_repeat(2, (100, 1))
        repeat_info = next(inputs.iter_unpack(repeat_list))
        self.assertEqual(repeat_info, (100, 1, 20, 2, 2))

        repeat_list = listener.emulate_repeat(3, (100, 1))
        repeat_info = next(inputs.iter_unpack(repeat_list))
        self.assertEqual(repeat_info, (100, 1, 20, 2, 3))
 def test_create_key_event_object(self):
     """It should create an evdev object."""
     pipe = mock.MagicMock()
     listener = inputs.BaseListener(pipe)
     eventlist = listener.create_event_object("Key", 30, 1, (100, 0))
     event_info = next(inputs.iter_unpack(eventlist))
     self.assertEqual(event_info, (100, 0, 1, 30, 1))
 def test_create_mouse_event_object(self):
     """It also should create an evdev object."""
     pipe = mock.MagicMock()
     listener = inputs.BaseListener(pipe)
     eventlist = listener.create_event_object("Absolute", 0, 285, (100, 1))
     event_info = next(inputs.iter_unpack(eventlist))
     self.assertEqual(event_info, (100, 1, 3, 0, 285))
Beispiel #14
0
 def _do_iter(self):
     read_size = self._get_total_read_size()
     data = self._get_data(read_size)
     if not data:
         time.sleep(0.0001)
         return None
     evdev_objects = iter_unpack(data)
     events = [self._make_event(*event) for event in evdev_objects]
     return events
 def test_create_ev_wo_timeval(self):
     """It should create an evdev object."""
     pipe = mock.MagicMock()
     listener = inputs.BaseListener(pipe)
     eventlist = listener.create_event_object("Key", 30, 1)
     event_info = next(inputs.iter_unpack(eventlist))
     self.assertTrue(event_info[0] > 0)
     self.assertTrue(event_info[1] > 0)
     self.assertEqual(event_info[2:], (1, 30, 1))
    def test_emulate_rel(self):
        """Returns an event list for relative mouse movement."""
        pipe = mock.MagicMock()
        listener = inputs.BaseListener(pipe)

        eventlist = listener.emulate_rel(0, 1, (100, 1))
        event_info = next(inputs.iter_unpack(eventlist))
        self.assertEqual(event_info, (100, 1, 2, 0, 1))

        eventlist = listener.emulate_rel(0, -5, (100, 1))
        event_info = next(inputs.iter_unpack(eventlist))
        self.assertEqual(event_info, (100, 1, 2, 0, -5))

        eventlist = listener.emulate_rel(1, 44, (100, 1))
        event_info = next(inputs.iter_unpack(eventlist))
        self.assertEqual(event_info, (100, 1, 2, 1, 44))

        eventlist = listener.emulate_rel(1, -10, (100, 1))
        event_info = next(inputs.iter_unpack(eventlist))
        self.assertEqual(event_info, (100, 1, 2, 1, -10))
Beispiel #17
0
 def test_led_make_event(self, mock_write_device):
     """inputs.LED._make_event sends an event to the write device."""
     led = inputs.LED(None, PATH, NAME)
     led._make_event(1, 2, 3)
     self.assertEqual(len(mock_write_device.method_calls), 2)
     flush_call = mock_write_device.method_calls[1]
     self.assertEqual(flush_call[0], 'flush')
     write_call = mock_write_device.method_calls[0]
     self.assertEqual(write_call[0], 'write')
     eventlist = write_call[1][0]
     event_info = next(inputs.iter_unpack(eventlist))
     self.assertTrue(event_info[0] > 0)
     self.assertTrue(event_info[1] > 0)
     self.assertEqual(event_info[2:], (1, 2, 3))
Beispiel #18
0
 def test_sled_make_event(self, mock_write_device):
     """inputs.SLED._make_event sends an event to the write device."""
     manager = setup_mock_manager()
     led = inputs.SystemLED(manager, SLED_PATH, SLED_NAME)
     led._make_event(1)
     self.assertEqual(len(mock_write_device.method_calls), 2)
     flush_call = mock_write_device.method_calls[1]
     self.assertEqual(flush_call[0], 'flush')
     write_call = mock_write_device.method_calls[0]
     self.assertEqual(write_call[0], 'write')
     eventlist = write_call[1][0]
     event_info = next(inputs.iter_unpack(eventlist))
     self.assertTrue(event_info[0] > 0)
     self.assertTrue(event_info[1] > 0)
     self.assertEqual(event_info[2:], (17, 1, 1))
    def test_handle_absolute(self,
                             mock_get_absolute):
        """Absolute mouse event is processed."""
        pipe = mock.MagicMock()
        listener = inputs.AppKitMouseBaseListener(pipe)
        # Events begin empty
        self.assertEqual(listener.events, [])

        event = mock.MagicMock()
        # Run the method under test
        listener.handle_absolute(event)

        # Check that we have events
        self.assertEqual(len(listener.events), 2)

        first_event = next(inputs.iter_unpack(
            listener.events[0]))
        self.assertEqual(first_event[2:], (3, 0, 600))

        second_event = next(inputs.iter_unpack(
            listener.events[1]))
        self.assertEqual(second_event[2:], (3, 1, 400))

        mock_get_absolute.assert_called_once_with(event)
 def test_handle_input_unknown_code(self,
                                    mock_get_event_key_code,
                                    mock_get_event_type,
                                    mock_get_flags,
                                    mock_write_to_pipe):
     """Mac Keyboard events are processed."""
     pipe = mock.MagicMock()
     listener = inputs.AppKitKeyboardListener(pipe)
     event = mock.MagicMock()
     listener.handle_input(event)
     self.assertEqual(len(listener.events), 3)
     event_info = inputs.iter_unpack(listener.events[1])
     self.assertEqual(next(event_info)[2:], (1, 0, 1))
     mock_get_event_key_code.assert_called_once_with(event)
     mock_get_event_type.assert_called_once_with(event)
     mock_write_to_pipe.assert_called_once_with(listener.events)
    def test_handle_input(self,
                          mock_handle_button,
                          mock_handle_absolute,
                          mock_handle_relative):
        """Input events from Quartz are handled with the correct method."""
        pipe = mock.MagicMock()
        listener = inputs.QuartzMouseBaseListener(pipe)
        event = mock.MagicMock()
        listener.handle_input(None, 1, event, None)

        # So what happened?

        # The functions were called
        mock_handle_button.assert_called_once_with(event, 1)
        mock_handle_absolute.assert_called_once_with(event)
        mock_handle_relative.assert_called_once_with(event)

        # The sync marker was added
        self.assertEqual(len(listener.events), 1)
        first_event = next(inputs.iter_unpack(
            listener.events[0]))
        self.assertEqual(first_event[2:], (0, 0, 0))