예제 #1
0
    def run_synchronous_tests(self, obj):
        # We can't test that coercion works correctly unless the server has
        # sent us introspection data. Java doesn't :-/
        have_signatures = True

        # "Single tests"
        if have_signatures:
            self.assert_method_eq(INTERFACE_SINGLE_TESTS, 6, 'Sum', [1, 2, 3])
            self.assert_method_eq(INTERFACE_SINGLE_TESTS, 6, 'Sum',
                                  ['\x01', '\x02', '\x03'])
        self.assert_method_eq(INTERFACE_SINGLE_TESTS, 6, 'Sum',
                              [Byte(1), Byte(2), Byte(3)])
        self.assert_method_eq(INTERFACE_SINGLE_TESTS, 6, 'Sum',
                              ByteArray('\x01\x02\x03'))

        # Main tests
        self.assert_method_eq(INTERFACE_TESTS, String(u'foo', variant_level=1),
                              'Identity', String('foo'))
        self.assert_method_eq(INTERFACE_TESTS, String(u'foo', variant_level=1),
                              'Identity', UTF8String('foo'))
        self.assert_method_eq(INTERFACE_TESTS, Byte(42, variant_level=1),
                              'Identity', Byte(42))
        self.assert_method_eq(INTERFACE_TESTS, Byte(42, variant_level=23),
                              'Identity', Byte(42, variant_level=23))
        self.assert_method_eq(INTERFACE_TESTS, Double(42.5, variant_level=1),
                              'Identity', 42.5)
        self.assert_method_eq(INTERFACE_TESTS, Double(-42.5, variant_level=1),
                              'Identity', -42.5)

        if have_signatures:
            self.assert_method_eq(INTERFACE_TESTS,
                                  String(u'foo', variant_level=1), 'Identity',
                                  'foo')
            self.assert_method_eq(INTERFACE_TESTS, Byte(42, variant_level=1),
                                  'Identity', Byte(42))
            self.assert_method_eq(INTERFACE_TESTS, Double(42.5,
                                                          variant_level=1),
                                  'Identity', Double(42.5))
            self.assert_method_eq(INTERFACE_TESTS,
                                  Double(-42.5, variant_level=1), 'Identity',
                                  -42.5)

        for i in (0, 42, 255):
            self.assert_method_eq(INTERFACE_TESTS, Byte(i), 'IdentityByte',
                                  Byte(i))
        for i in (True, False):
            self.assert_method_eq(INTERFACE_TESTS, i, 'IdentityBool', i)

        for i in (-0x8000, 0, 42, 0x7fff):
            self.assert_method_eq(INTERFACE_TESTS, i, 'IdentityInt16',
                                  Int16(i))
        for i in (0, 42, 0xffff):
            self.assert_method_eq(INTERFACE_TESTS, i, 'IdentityUInt16',
                                  UInt16(i))
        for i in (-0x7fffffff - 1, 0, 42, 0x7fffffff):
            self.assert_method_eq(INTERFACE_TESTS, i, 'IdentityInt32',
                                  Int32(i))
        for i in (0L, 42L, 0xffffffffL):
            self.assert_method_eq(INTERFACE_TESTS, i, 'IdentityUInt32',
                                  UInt32(i))
예제 #2
0
    def set_pairable(self, enabled, timeout=None):
        """Makes the BT subsystem pairable with other BT devices. Timeout is
        in seconds, or pass None for no timeout.
        """

        if not self._started:
            raise InvalidOperationError("Not started.")
        if not self._connected:
            raise InvalidOperationError("No suitable adapter available.")

        try:
            self._adapter_proxy.set("Pairable", enabled)
            self._adapter_proxy.set("PairableTimeout", UInt32(timeout or 0))
        except Exception as e:
            raise CommandError(e)
예제 #3
0
    def set_discoverable(self, enabled, timeout=None):
        """Toggles visibility of the BT subsystem to other searching BT devices.
        Timeout is in seconds, or pass None for no timeout.
        """

        if not self._started:
            raise InvalidOperationError("Not started.")
        if not self._connected:
            raise InvalidOperationError("No suitable adapter available.")

        try:
            self._adapter_proxy.set("Discoverable", enabled)
            self._adapter_proxy.set("DiscoverableTimeout", UInt32(timeout
                                                                  or 0))
        except Exception as e:
            raise CommandError(e)
예제 #4
0
    def run_synchronous_tests(self, obj):
        # We can't test that coercion works correctly unless the server has
        # sent us introspection data. Java doesn't :-/
        have_signatures = True

        # "Single tests"
        if have_signatures:
            self.assert_method_eq(INTERFACE_SINGLE_TESTS, 6, 'Sum', [1, 2, 3])
            self.assert_method_eq(INTERFACE_SINGLE_TESTS, 6, 'Sum',
                                  [b'\x01', b'\x02', b'\x03'])
        self.assert_method_eq(INTERFACE_SINGLE_TESTS, 6, 'Sum',
                              [Byte(1), Byte(2), Byte(3)])
        self.assert_method_eq(INTERFACE_SINGLE_TESTS, 6, 'Sum',
                              ByteArray(b'\x01\x02\x03'))

        # Main tests
        self.assert_method_eq(INTERFACE_TESTS, String('foo', variant_level=1),
                              'Identity', String('foo'))
        if is_py2:
            self.assert_method_eq(INTERFACE_TESTS,
                                  String('foo', variant_level=1), 'Identity',
                                  UTF8String('foo'))
        self.assert_method_eq(INTERFACE_TESTS, Byte(42, variant_level=1),
                              'Identity', Byte(42))
        self.assert_method_eq(INTERFACE_TESTS, Byte(42, variant_level=23),
                              'Identity', Byte(42, variant_level=23))
        self.assert_method_eq(INTERFACE_TESTS, Double(42.5, variant_level=1),
                              'Identity', 42.5)
        self.assert_method_eq(INTERFACE_TESTS, Double(-42.5, variant_level=1),
                              'Identity', -42.5)

        if have_signatures:
            self.assert_method_eq(INTERFACE_TESTS,
                                  String('foo', variant_level=1), 'Identity',
                                  'foo')
            self.assert_method_eq(INTERFACE_TESTS, Byte(42, variant_level=1),
                                  'Identity', Byte(42))
            self.assert_method_eq(INTERFACE_TESTS, Double(42.5,
                                                          variant_level=1),
                                  'Identity', Double(42.5))
            self.assert_method_eq(INTERFACE_TESTS,
                                  Double(-42.5, variant_level=1), 'Identity',
                                  -42.5)

        for i in (0, 42, 255):
            self.assert_method_eq(INTERFACE_TESTS, Byte(i), 'IdentityByte',
                                  Byte(i))
        for i in (True, False):
            self.assert_method_eq(INTERFACE_TESTS, i, 'IdentityBool', i)

        for i in (-0x8000, 0, 42, 0x7fff):
            self.assert_method_eq(INTERFACE_TESTS, i, 'IdentityInt16',
                                  Int16(i))
        for i in (0, 42, 0xffff):
            self.assert_method_eq(INTERFACE_TESTS, i, 'IdentityUInt16',
                                  UInt16(i))
        for i in (-0x7fffffff - 1, 0, 42, 0x7fffffff):
            self.assert_method_eq(INTERFACE_TESTS, i, 'IdentityInt32',
                                  Int32(i))
        for i in (0, 42, 0xffffffff):
            i = make_long(i)
            self.assert_method_eq(INTERFACE_TESTS, i, 'IdentityUInt32',
                                  UInt32(i))
        MANY = 1
        for n in (0x8000, 0x10000, 0x10000, 0x10000):
            MANY *= make_long(n)
        for i in (-MANY, 0, 42, MANY - 1):
            self.assert_method_eq(INTERFACE_TESTS, i, 'IdentityInt64',
                                  Int64(i))
        for i in (0, 42, 2 * MANY - 1):
            self.assert_method_eq(INTERFACE_TESTS, i, 'IdentityUInt64',
                                  UInt64(i))

        self.assert_method_eq(INTERFACE_TESTS, 42.3, 'IdentityDouble', 42.3)
        for i in ('', 'foo'):
            self.assert_method_eq(INTERFACE_TESTS, i, 'IdentityString', i)
        for i in ('\xa9', b'\xc2\xa9'):
            self.assert_method_eq(INTERFACE_TESTS, '\xa9', 'IdentityString', i)

        if have_signatures:
            self.assert_method_eq(INTERFACE_TESTS, Byte(0x42), 'IdentityByte',
                                  b'\x42')
            self.assert_method_eq(INTERFACE_TESTS, True, 'IdentityBool', 42)
            self.assert_method_eq(INTERFACE_TESTS, 42, 'IdentityInt16', 42)
            self.assert_method_eq(INTERFACE_TESTS, 42, 'IdentityUInt16', 42)
            self.assert_method_eq(INTERFACE_TESTS, 42, 'IdentityInt32', 42)
            self.assert_method_eq(INTERFACE_TESTS, 42, 'IdentityUInt32', 42)
            self.assert_method_eq(INTERFACE_TESTS, 42, 'IdentityInt64', 42)
            self.assert_method_eq(INTERFACE_TESTS, 42, 'IdentityUInt64', 42)
            self.assert_method_eq(INTERFACE_TESTS, 42.0, 'IdentityDouble', 42)

        self.assert_method_eq(
            INTERFACE_TESTS, [
                Byte(b'\x01', variant_level=1),
                Byte(b'\x02', variant_level=1),
                Byte(b'\x03', variant_level=1)
            ], 'IdentityArray',
            Array([Byte(b'\x01'), Byte(b'\x02'),
                   Byte(b'\x03')], signature='v'))

        self.assert_method_eq(
            INTERFACE_TESTS, [
                Int32(1, variant_level=1),
                Int32(2, variant_level=1),
                Int32(3, variant_level=1)
            ], 'IdentityArray',
            Array([Int32(1), Int32(2), Int32(3)], signature='v'))
        self.assert_method_eq(
            INTERFACE_TESTS, [
                String('a', variant_level=1),
                String('b', variant_level=1),
                String('c', variant_level=1)
            ], 'IdentityArray',
            Array([String('a'), String('b'),
                   String('c')], signature='v'))

        if have_signatures:
            self.assert_method_eq(INTERFACE_TESTS, [
                Byte(b'\x01', variant_level=1),
                Byte(b'\x02', variant_level=1),
                Byte(b'\x03', variant_level=1)
            ], 'IdentityArray', ByteArray(b'\x01\x02\x03'))
            self.assert_method_eq(
                INTERFACE_TESTS, [
                    Int32(1, variant_level=1),
                    Int32(2, variant_level=1),
                    Int32(3, variant_level=1)
                ], 'IdentityArray',
                [Int32(1), Int32(2), Int32(3)])
            self.assert_method_eq(INTERFACE_TESTS, [
                String('a', variant_level=1),
                String('b', variant_level=1),
                String('c', variant_level=1)
            ], 'IdentityArray', ['a', 'b', 'c'])

        self.assert_method_eq(INTERFACE_TESTS,
                              [Byte(1), Byte(2), Byte(3)], 'IdentityByteArray',
                              ByteArray(b'\x01\x02\x03'))
        if have_signatures:
            self.assert_method_eq(INTERFACE_TESTS, [1, 2, 3],
                                  'IdentityByteArray',
                                  [b'\x01', b'\x02', b'\x03'])
        self.assert_method_eq(INTERFACE_TESTS, [False, True],
                              'IdentityBoolArray', [False, True])
        if have_signatures:
            self.assert_method_eq(INTERFACE_TESTS, [False, True, True],
                                  'IdentityBoolArray', [0, 1, 2])

        self.assert_method_eq(
            INTERFACE_TESTS, [1, 2, 3], 'IdentityInt16Array',
            [Int16(1), Int16(2), Int16(3)])
        self.assert_method_eq(
            INTERFACE_TESTS, [1, 2, 3], 'IdentityUInt16Array',
            [UInt16(1), UInt16(2), UInt16(3)])
        self.assert_method_eq(
            INTERFACE_TESTS, [1, 2, 3], 'IdentityInt32Array',
            [Int32(1), Int32(2), Int32(3)])
        self.assert_method_eq(
            INTERFACE_TESTS, [1, 2, 3], 'IdentityUInt32Array',
            [UInt32(1), UInt32(2), UInt32(3)])
        self.assert_method_eq(
            INTERFACE_TESTS, [1, 2, 3], 'IdentityInt64Array',
            [Int64(1), Int64(2), Int64(3)])
        self.assert_method_eq(
            INTERFACE_TESTS, [1, 2, 3], 'IdentityUInt64Array',
            [UInt64(1), UInt64(2), UInt64(3)])

        if have_signatures:
            self.assert_method_eq(INTERFACE_TESTS, [1, 2, 3],
                                  'IdentityInt16Array', [1, 2, 3])
            self.assert_method_eq(INTERFACE_TESTS, [1, 2, 3],
                                  'IdentityUInt16Array', [1, 2, 3])
            self.assert_method_eq(INTERFACE_TESTS, [1, 2, 3],
                                  'IdentityInt32Array', [1, 2, 3])
            self.assert_method_eq(INTERFACE_TESTS, [1, 2, 3],
                                  'IdentityUInt32Array', [1, 2, 3])
            self.assert_method_eq(INTERFACE_TESTS, [1, 2, 3],
                                  'IdentityInt64Array', [1, 2, 3])
            self.assert_method_eq(INTERFACE_TESTS, [1, 2, 3],
                                  'IdentityUInt64Array', [1, 2, 3])

        self.assert_method_eq(INTERFACE_TESTS, [1.0, 2.5, 3.1],
                              'IdentityDoubleArray', [1.0, 2.5, 3.1])
        if have_signatures:
            self.assert_method_eq(INTERFACE_TESTS, [1.0, 2.5, 3.1],
                                  'IdentityDoubleArray', [1, 2.5, 3.1])
        self.assert_method_eq(INTERFACE_TESTS, ['a', 'b', 'c'],
                              'IdentityStringArray', ['a', 'b', 'c'])
        self.assert_method_eq(
            INTERFACE_TESTS, 6, 'Sum',
            [Int32(1), Int32(2), Int32(3)])
        if have_signatures:
            self.assert_method_eq(INTERFACE_TESTS, 6, 'Sum', [1, 2, 3])

        self.assert_InvertMapping_eq(INTERFACE_TESTS, {
            'fps': ['unreal', 'quake'],
            'rts': ['warcraft']
        }, 'InvertMapping', {
            'unreal': 'fps',
            'quake': 'fps',
            'warcraft': 'rts'
        })

        self.assert_method_eq(INTERFACE_TESTS, ('a', 1, 2), 'DeStruct',
                              ('a', UInt32(1), Int16(2)))
        self.assert_method_eq(INTERFACE_TESTS,
                              Array([String('x', variant_level=1)]),
                              'Primitize', [String('x', variant_level=1)])
        self.assert_method_eq(INTERFACE_TESTS,
                              Array([String('x', variant_level=1)]),
                              'Primitize', [String('x', variant_level=23)])
        self.assert_method_eq(
            INTERFACE_TESTS,
            Array([
                String('x', variant_level=1),
                Byte(1, variant_level=1),
                Byte(2, variant_level=1)
            ]), 'Primitize',
            Array([String('x'), Byte(1), Byte(2)], signature='v'))
        self.assert_method_eq(
            INTERFACE_TESTS,
            Array([
                String('x', variant_level=1),
                Byte(1, variant_level=1),
                Byte(2, variant_level=1)
            ]), 'Primitize',
            Array([String('x'), Array([Byte(1), Byte(2)])], signature='v'))
        self.assert_method_eq(INTERFACE_TESTS, Boolean(False), 'Invert', True)
        self.assert_method_eq(INTERFACE_TESTS, Boolean(True), 'Invert', False)
        if have_signatures:
            self.assert_method_eq(INTERFACE_TESTS, Boolean(False), 'Invert',
                                  42)
            self.assert_method_eq(INTERFACE_TESTS, Boolean(True), 'Invert', 0)
예제 #5
0
        if have_signatures:
            self.assert_method_eq(INTERFACE_TESTS, [False, True, True],
                                  'IdentityBoolArray', [0, 1, 2])

        self.assert_method_eq(
            INTERFACE_TESTS, [1, 2, 3], 'IdentityInt16Array',
            [Int16(1), Int16(2), Int16(3)])
        self.assert_method_eq(
            INTERFACE_TESTS, [1, 2, 3], 'IdentityUInt16Array',
            [UInt16(1), UInt16(2), UInt16(3)])
        self.assert_method_eq(
            INTERFACE_TESTS, [1, 2, 3], 'IdentityInt32Array',
            [Int32(1), Int32(2), Int32(3)])
        self.assert_method_eq(
            INTERFACE_TESTS, [1, 2, 3], 'IdentityUInt32Array',
            [UInt32(1), UInt32(2), UInt32(3)])
        self.assert_method_eq(
            INTERFACE_TESTS, [1, 2, 3], 'IdentityInt64Array',
            [Int64(1), Int64(2), Int64(3)])
        self.assert_method_eq(
            INTERFACE_TESTS, [1, 2, 3], 'IdentityUInt64Array',
            [UInt64(1), UInt64(2), UInt64(3)])

        if have_signatures:
            self.assert_method_eq(INTERFACE_TESTS, [1, 2, 3],
                                  'IdentityInt16Array', [1, 2, 3])
            self.assert_method_eq(INTERFACE_TESTS, [1, 2, 3],
                                  'IdentityUInt16Array', [1, 2, 3])
            self.assert_method_eq(INTERFACE_TESTS, [1, 2, 3],
                                  'IdentityInt32Array', [1, 2, 3])
            self.assert_method_eq(INTERFACE_TESTS, [1, 2, 3],