コード例 #1
0
ファイル: test_BcpSocketClient.py プロジェクト: tylervz/mpf
    def test_encode_command_string(self):
        # test strings
        command = 'play'
        kwargs = dict(some_value='7', another_value='2')
        expected_strings = ('play?some_value=7&another_value=2',
                            'play?another_value=2&some_value=7')

        actual_string = encode_command_string(command, **kwargs)

        self.assertIn(actual_string, expected_strings)

        # test ints, floats, bools, and none
        command = 'play'
        kwargs = dict(some_int=7,
                      some_float=2.0,
                      some_none=None,
                      some_true=True,
                      some_false=False)
        expected_snippets = ('play?', 'some_int=int:7', 'some_float=float:2.0',
                             'some_none=NoneType:', 'some_true=bool:True',
                             'some_false=bool:False')

        actual_string = encode_command_string(command, **kwargs)

        for snippet in expected_snippets:
            self.assertIn(snippet, actual_string)
コード例 #2
0
    def testConnect(self):
        # check that server was opened
        self.assertTrue(self.mock_server.is_bound)

        # add client
        client = MockQueueSocket()
        self.mock_server.add_client(client)
        self.advance_time_and_run()

        # check hello
        self.assertEqual(1, len(client.send_queue))
        cmd, kwargs = decode_command_string(
            client.send_queue.pop()[0:-1].decode())
        self.assertEqual("hello", cmd)

        # test trigger
        self.mock_event("test_event")
        client.recv_queue.append(
            (encode_command_string("trigger", name="test_event") +
             '\n').encode())
        self.advance_time_and_run()
        self.assertEqual(1, self._events['test_event'])

        # register for event/trigger
        client.recv_queue.append(
            (encode_command_string("register_trigger", event="test_trigger") +
             '\n').encode())
        self.advance_time_and_run()
        self.assertEqual(0, len(client.send_queue))

        # post trigger event
        self.post_event("test_trigger")
        self.advance_time_and_run()
        self.assertEqual(1, len(client.send_queue))
        cmd, kwargs = decode_command_string(
            client.send_queue.pop()[0:-1].decode())
        self.assertEqual("trigger", cmd)
        self.assertEqual("test_trigger", kwargs['name'])

        # send goodbye. machine should continue to run.
        client.close = MagicMock()
        client.recv_queue.append(
            (encode_command_string("goodbye") + '\n').encode())
        self.advance_time_and_run()

        client.close.assert_called_with()

        self.assertFalse(self.machine._done)
コード例 #3
0
 def test_roundtrip(self):
     test_kwargs = {
         "registered_handlers": [{
             "calling_context":
             "logicblock_baby_bonus_hit{count%10==5}"
         }]
     }
     encoded_cmd = encode_command_string("test", **test_kwargs)
     decoded_cmd, decoded_cmd_kwargs = decode_command_string(encoded_cmd)
     self.assertEqual(decoded_cmd_kwargs, test_kwargs)
コード例 #4
0
    def test_json_encoding_decoding_with_hashtags(self):
        # see: https://github.com/missionpinball/mpf/issues/1495
        command = 'play'
        kwargs = dict()
        kwargs['dict1'] = dict(key1='value1 #', key2='value2 #')

        encoded_string = encode_command_string(command, **kwargs)
        decoded_command, decoded_dict = decode_command_string(encoded_string)

        self.assertEqual('play', decoded_command)
        self.assertIn('dict1', decoded_dict)
        self.assertEqual(decoded_dict['dict1']['key1'], 'value1 #')
        self.assertEqual(decoded_dict['dict1']['key2'], 'value2 #')
コード例 #5
0
ファイル: test_BcpSocketClient.py プロジェクト: tylervz/mpf
    def test_json_encoding_decoding(self):
        # test with dicts
        command = 'play'
        kwargs = dict()
        kwargs['dict1'] = dict(key1='value1', key2='value2')
        kwargs['dict2'] = dict(key3='value3', key4='value4')

        encoded_string = encode_command_string(command, **kwargs)
        decoded_command, decoded_dict = decode_command_string(encoded_string)

        self.assertEqual('play', decoded_command)
        self.assertIn('dict1', decoded_dict)
        self.assertIn('dict2', decoded_dict)
        self.assertEqual(decoded_dict['dict1']['key1'], 'value1')
        self.assertEqual(decoded_dict['dict1']['key2'], 'value2')
        self.assertEqual(decoded_dict['dict2']['key3'], 'value3')
        self.assertEqual(decoded_dict['dict2']['key4'], 'value4')

        # test with list
        command = 'play'
        kwargs = dict()
        kwargs['dict1'] = dict(key1='value1', key2='value2')
        kwargs['dict2'] = list()
        kwargs['dict2'].append(dict(key3='value3', key4='value4'))
        kwargs['dict2'].append(dict(key3='value5', key4='value6'))

        encoded_string = encode_command_string(command, **kwargs)
        decoded_command, decoded_dict = decode_command_string(encoded_string)

        self.assertEqual('play', decoded_command)
        self.assertIn('dict1', decoded_dict)
        self.assertIn('dict2', decoded_dict)
        self.assertEqual(decoded_dict['dict1']['key1'], 'value1')
        self.assertEqual(decoded_dict['dict1']['key2'], 'value2')
        self.assertEqual(decoded_dict['dict2'][0],
                         dict(key3='value3', key4='value4'))
        self.assertEqual(decoded_dict['dict2'][1],
                         dict(key3='value5', key4='value6'))
コード例 #6
0
    def test_from_show_via_bcp(self):
        from mpf.core.bcp.bcp_socket_client import encode_command_string

        show_slide_section = dict()
        show_slide_section['widgets'] = list()

        show_slide_section['widgets'].append(dict(
            type='text', text='TEST FROM SHOW'))

        player = McSlidePlayer(self.mc)
        show_slide_section = player._validate_config_item('slide1', show_slide_section)

        bcp_string = encode_command_string('trigger', name='slides_play', context='test_context', priority=1,
                                           settings=show_slide_section)

        self.mc.bcp_processor.receive_bcp_message(bcp_string)
        self.advance_time()
コード例 #7
0
    def send(self, bcp_command, callback=None, rawbytes=None, **kwargs):
        """Sends a BCP command to the connected pinball controller.

        Note that if the BCP server is not running, this method will just throw
        the BCP away. (It will still call the callback in that case.

        Args:
            bcp_command: String of the BCP command name.
            callback: Optional callback method that will be called when the
                command is sent.
            **kwargs: Optional additional kwargs will be added to the BCP
                command string.

        """
        if self.enabled:
            if not self.mc.bcp_client_connected:
                raise AssertionError("Not connected to MPF.")

            self.sending_queue.put(
                (bcp.encode_command_string(bcp_command, **kwargs), rawbytes))

        if callback:
            callback()
コード例 #8
0
ファイル: test_VPX.py プロジェクト: krayon/pinball-mpf
 def _encode_and_send(self, cmd, **kwargs):
     self.client.recv_queue.append(
         (encode_command_string("vpcom_bridge", subcommand=cmd, **kwargs) +
          '\n').encode())
コード例 #9
0
 def _encode_and_send(self, client, cmd, **kwargs):
     client.recv_queue.append((encode_command_string(cmd, **kwargs) + '\n').encode())
コード例 #10
0
 def send(self, bcp_command, **kwargs):
     self.sending_queue.put(bcp.encode_command_string(
         bcp_command, **kwargs))