summaryrefslogtreecommitdiff
path: root/test/cross-test-client.py
diff options
context:
space:
mode:
authorSimon McVittie <smcv@celebrin.pseudorandom.co.uk>2006-10-02 15:28:00 +0100
committerSimon McVittie <smcv@celebrin.pseudorandom.co.uk>2006-10-02 15:28:00 +0100
commit6a9cafc90a31cf1d396b8a492fc1d618ef03dc65 (patch)
tree85e78597f8cc345b1a23c1b4dd8c490827151972 /test/cross-test-client.py
parentdf50fee665eb68d27394123ca79475bd37a0c528 (diff)
test/cross-test-client.py: Add more workarounds for odd dbus-java behaviour. Compare InvertMapping results better.
Diffstat (limited to 'test/cross-test-client.py')
-rw-r--r--test/cross-test-client.py75
1 files changed, 54 insertions, 21 deletions
diff --git a/test/cross-test-client.py b/test/cross-test-client.py
index d3561a0..1bf21ec 100644
--- a/test/cross-test-client.py
+++ b/test/cross-test-client.py
@@ -35,16 +35,10 @@ from crosstest import CROSS_TEST_PATH, CROSS_TEST_BUS_NAME,\
logging.basicConfig()
+logging.getLogger().setLevel(1)
logger = logging.getLogger('cross-test-client')
-class ListInAnyOrder(list):
- def __eq__(self, other):
- return sorted(other) == sorted(self)
- def __ne__(self, other):
- return sorted(other) != sorted(self)
-
-
class Client(SignalTestsImpl):
fail_id = 0
expected = Set()
@@ -86,7 +80,7 @@ class Client(SignalTestsImpl):
print "%s.Trigger pass" % INTERFACE_SIGNAL_TESTS
self.quit()
- def assert_method_eq(self, interface, ret, member, *args):
+ def assert_method_matches(self, interface, check_fn, check_arg, member, *args):
if_obj = Interface(self.obj, interface)
method = getattr(if_obj, member)
try:
@@ -94,22 +88,46 @@ class Client(SignalTestsImpl):
except Exception, e:
self.fail_id += 1
print "%s.%s fail %d" % (interface, member, self.fail_id)
- s = ("report %d: %s.%s%r: expected %r, raised %r \"%s\""
- % (self.fail_id, interface, member, args, ret, e, e))
+ s = ("report %d: %s.%s%r: raised %r \"%s\""
+ % (self.fail_id, interface, member, args, e, e))
print s
logger.error(s)
__import__('traceback').print_exc()
return
- if real_ret != ret:
+ try:
+ check_fn(real_ret, check_arg)
+ except Exception, e:
self.fail_id += 1
print "%s.%s fail %d" % (interface, member, self.fail_id)
- s = ("report %d: %s.%s%r: expected %r, got %r"
- % (self.fail_id, interface, member, args, ret, real_ret))
+ s = ("report %d: %s.%s%r: %s"
+ % (self.fail_id, interface, member, args, e))
print s
logger.error(s)
return
print "%s.%s pass" % (interface, member)
+ def assert_method_eq(self, interface, ret, member, *args):
+ def equals(real_ret, exp):
+ if real_ret != exp:
+ raise AssertionError('expected %r, got %r' % (exp, real_ret))
+ self.assert_method_matches(interface, equals, ret, member, *args)
+
+ def assert_InvertMapping_eq(self, interface, expected, member, mapping):
+ def check(real_ret, exp):
+ for key in exp:
+ if key not in real_ret:
+ raise AssertionError('missing key %r' % key)
+ for key in real_ret:
+ if key not in exp:
+ raise AssertionError('unexpected key %r' % key)
+ got = list(real_ret[key])
+ wanted = list(exp[key])
+ got.sort()
+ wanted.sort()
+ if got != wanted:
+ raise AssertionError('expected %r => %r, got %r'
+ % (key, wanted, got))
+ self.assert_method_matches(interface, check, expected, member, mapping)
def triggered_cb(self, param, sender_path):
logger.info("method/signal: Triggered(%r) by %r",
@@ -137,7 +155,7 @@ class Client(SignalTestsImpl):
# Callback tests
logger.info("signal/callback: Emitting signal to trigger callback")
self.expected.add('%s.Trigger' % INTERFACE_SIGNAL_TESTS)
- self.Trigger(42, 23)
+ self.Trigger(UInt16(42), 23.0)
logger.info("signal/callback: Emitting signal returned")
def run_client(self):
@@ -158,7 +176,7 @@ class Client(SignalTestsImpl):
path_keyword='sender_path')
logger.info("method/signal: Triggering signal")
self.expected.add('%s.Trigger' % INTERFACE_TESTS)
- Interface(obj, INTERFACE_TESTS).Trigger('/Where/Ever', 42, reply_handler=self.trigger_returned_cb, error_handler=self.trigger_error_handler)
+ Interface(obj, INTERFACE_TESTS).Trigger(u'/Where/Ever', dbus.UInt64(42), reply_handler=self.trigger_returned_cb, error_handler=self.trigger_error_handler)
def trigger_error_handler(self, e):
logger.error("method/signal: %s %s", e.__class__, e)
@@ -264,19 +282,34 @@ class Client(SignalTestsImpl):
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_method_eq(INTERFACE_TESTS, {'fps': ListInAnyOrder(['unreal', 'quake']), 'rts': ['warcraft']}, 'InvertMapping', {'unreal': 'fps', 'quake': 'fps', 'warcraft': 'rts'})
+
+ 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, [Variant('x')], 'Primitize', [Variant(Variant(['x']))])
- self.assert_method_eq(INTERFACE_TESTS, [Variant('x'), Variant(Byte(1)), Variant(Byte(2))], 'Primitize', [Variant([Variant(['x']), Array([Byte(1), Byte(2)])])])
- self.assert_method_eq(INTERFACE_TESTS, False, 'Invert', 42)
- self.assert_method_eq(INTERFACE_TESTS, True, 'Invert', 0)
+ self.assert_method_eq(INTERFACE_TESTS, [Variant('x')], 'Primitize', [Variant('x')])
+ if 0: self.assert_method_eq(INTERFACE_TESTS,
+ [Variant('x'), Variant(Byte(1)), Variant(Byte(2))],
+ 'Primitize',
+ [Variant([Variant(['x']),
+ Variant(Array([Byte(1),
+ Byte(2)]))])])
+ if 0:
+ self.assert_method_eq(INTERFACE_TESTS, [Variant('x')], 'Primitize', [Variant(Variant(['x']))])
+ self.assert_method_eq(INTERFACE_TESTS, [Variant('x'), Variant(Byte(1)), Variant(Byte(2))], 'Primitize', [Variant([Variant(['x']), Array([Byte(1), Byte(2)])])])
+ self.assert_method_eq(INTERFACE_TESTS, False, 'Invert', True)
+ self.assert_method_eq(INTERFACE_TESTS, True, 'Invert', False)
+ if have_signatures:
+ self.assert_method_eq(INTERFACE_TESTS, False, 'Invert', 42)
+ self.assert_method_eq(INTERFACE_TESTS, True, 'Invert', 0)
if __name__ == '__main__':
# FIXME: should be possible to export objects without a bus name
bus_name = BusName('com.example.Argh')
- client = Client(bus_name, '/Client')
+ if 0:
+ client = Client(bus_name, '/Client')
+ else:
+ client = Client(bus_name, '/Test')
gobject.idle_add(client.run_client)
loop = gobject.MainLoop()