def test_reset_removed_button_and_analog_handlers_and_clears_stored_data(
            self):
        mock = Mock()
        rc = RemoteController()
        rc.tick(RemoteControllerCommand(buttons=[False] * 32, analog=[]))

        rc.on_analog_values([2, 4], mock)
        rc.on_analog_values([3], mock)

        rc.on_button_pressed(5, mock)

        rc.tick(
            RemoteControllerCommand(
                buttons=[True] * 32,
                analog=[255, 254, 253, 123, 43, 65, 45, 42]))

        self.assertEqual(3, mock.call_count)
        self.assertEqual(254, rc.analog_value(1))
        self.assertTrue(rc.is_button_pressed(1))

        mock.reset_mock()

        rc.reset()

        self.assertEqual(0, rc.analog_value(1))
        self.assertFalse(rc.is_button_pressed(1))

        rc.tick(
            RemoteControllerCommand(
                buttons=[True] * 32,
                analog=[255, 254, 253, 123, 43, 65, 45, 42]))

        self.assertEqual(0, mock.call_count)
示例#2
0
    def test_requested_channels_are_passed_to_analog_handlers(self):
        rc = RemoteController()
        mock24 = Mock()
        mock3 = Mock()
        mock_invalid = Mock()

        rc.on_analog_values([2, 4], mock24)
        rc.on_analog_values([3], mock3)
        rc.on_analog_values([3, 11], mock_invalid)

        rc.tick(RemoteControllerCommand(buttons=[False] * 32, analog=[255, 254, 253, 123, 43, 65, 45, 42]))

        self.assertEqual(mock24.call_count, 1)
        self.assertEqual(mock3.call_count, 1)

        # invalid channels are silently ignored
        self.assertEqual(mock_invalid.call_count, 0)

        self.assertEqual(mock24.call_args[0][0], [253, 43])
        self.assertEqual(mock3.call_args[0][0], [123])