summaryrefslogtreecommitdiff
path: root/test/test-standalone.py
diff options
context:
space:
mode:
authorSimon McVittie <smcv@celebrin.pseudorandom.co.uk>2006-09-26 20:50:58 +0100
committerSimon McVittie <smcv@celebrin.pseudorandom.co.uk>2006-09-26 20:50:58 +0100
commit97d01a1d540e5ec31b752c31ad9f2b794eddf472 (patch)
treed051434908459155611c5a35d631365759acde58 /test/test-standalone.py
parente0552c3d9cfe22e9ea1b3c2874dc4f79d6948b21 (diff)
Throughout dbus-python: Use the C implementation.
Add document API_CHANGES.txt listing visible API changes. Add more test cases, for low-level Python <-> D-Bus type mappings. Amend existing test cases to cope with the API changes.
Diffstat (limited to 'test/test-standalone.py')
-rwxr-xr-xtest/test-standalone.py126
1 files changed, 126 insertions, 0 deletions
diff --git a/test/test-standalone.py b/test/test-standalone.py
new file mode 100755
index 0000000..454c6aa
--- /dev/null
+++ b/test/test-standalone.py
@@ -0,0 +1,126 @@
+#!/usr/bin/env python
+import sys
+import os
+import unittest
+import time
+
+builddir = os.environ["DBUS_TOP_BUILDDIR"]
+pydir = builddir
+
+sys.path.insert(0, pydir)
+sys.path.insert(0, pydir + 'dbus')
+
+import _dbus_bindings
+import dbus
+import dbus.types as types
+
+pkg = dbus.__file__
+if not pkg.startswith(pydir):
+ raise Exception("DBus modules (%s) are not being picked up from the package"%pkg)
+
+if not _dbus_bindings.__file__.startswith(pydir):
+ raise Exception("DBus modules (%s) are not being picked up from the package"%_dbus_bindings.__file__)
+
+class TestTypes(unittest.TestCase):
+
+ def test_append(self):
+ aeq = self.assertEquals
+ from _dbus_bindings import SignalMessage
+ s = SignalMessage('/', 'foo.bar', 'baz')
+ s.append([types.Byte(1)], signature='ay')
+ aeq(s.get_signature(), 'ay')
+ aeq(s.get_args_list(), [[types.Byte(1)]])
+
+ s = SignalMessage('/', 'foo.bar', 'baz')
+ s.append([], signature='ay')
+ aeq(s.get_args_list(), [[]])
+
+ def test_append_ByteArray(self):
+ aeq = self.assertEquals
+ from _dbus_bindings import SignalMessage
+ s = SignalMessage('/', 'foo.bar', 'baz')
+ s.append(types.ByteArray('ab'), signature='ay')
+ aeq(s.get_args_list(), [[types.Byte('a'), types.Byte('b')]])
+ s = SignalMessage('/', 'foo.bar', 'baz')
+ s.append(types.ByteArray('ab'), signature='av')
+ aeq(s.get_args_list(), [[types.Variant(types.Byte('a')),
+ types.Variant(types.Byte('b'))]])
+
+ def test_append_Variant(self):
+ a = self.assert_
+ aeq = self.assertEquals
+ from _dbus_bindings import SignalMessage
+ s = SignalMessage('/', 'foo.bar', 'baz')
+ s.append(types.Variant(1, signature='i'),
+ types.Variant('a', signature='s'),
+ types.Variant([(types.Variant('a', signature='y'), 'b'),
+ (types.Variant(123, signature='u'), 1)],
+ signature='a(vy)'))
+ aeq(s.get_signature(), 'vvv')
+ args = s.get_args_list()
+ aeq(args[0].__class__, types.Variant)
+ aeq(args[0].signature, 'i')
+ aeq(args[0].object.__class__, types.Int32)
+ aeq(args[0].object, 1)
+ aeq(args[1].__class__, types.Variant)
+ aeq(args[1].signature, 's')
+ a(isinstance(args[1].object, unicode))
+ aeq(args[2].__class__, types.Variant)
+ aeq(args[1].object, 'a')
+ aeq(args[2].signature, 'a(vy)')
+ avy = args[2].object
+ aeq(avy.__class__, types.Array)
+ aeq(len(avy), 2)
+ aeq(avy[0].__class__, tuple)
+ aeq(len(avy[0]), 2)
+ aeq(avy[0][0].__class__, types.Variant)
+ aeq(avy[0][0].signature, 'y')
+ aeq(avy[0][0].object.__class__, types.Byte)
+ aeq(avy[0][0].object, types.Byte('a'))
+ aeq(avy[0][1].__class__, types.Byte)
+ aeq(avy[0][1], types.Byte('b'))
+ aeq(avy[1].__class__, tuple)
+ aeq(len(avy[1]), 2)
+ aeq(avy[1][0].__class__, types.Variant)
+ aeq(avy[1][0].signature, 'u')
+ aeq(avy[1][0].object.__class__, types.UInt32)
+ aeq(avy[1][0].object, 123)
+ aeq(avy[1][1].__class__, types.Byte)
+ aeq(avy[1][1], types.Byte(1))
+
+ def test_Variant(self):
+ Variant = types.Variant
+ a = self.assert_
+ a(Variant(1, 'i') == Variant(1, 'i'))
+ a(not (Variant(1, 'i') == Variant(1, 'u')))
+ a(not (Variant(1, 'i') == Variant(2, 'i')))
+ a(not (Variant(1, 'i') == Variant(2, 'u')))
+ a(not (Variant(1, 'i') != Variant(1, 'i')))
+ a(Variant(1, 'i') != Variant(1, 'u'))
+ a(Variant(1, 'i') != Variant(2, 'i'))
+ a(Variant(1, 'i') != Variant(2, 'u'))
+
+ def test_Signature(self):
+ self.assertRaises(Exception, types.Signature, 'a')
+ self.assertEquals(types.Signature('ab'), 'ab')
+ self.assert_(isinstance(types.Signature('ab'), str))
+ self.assertEquals(tuple(types.Signature('ab(xt)a{sv}')),
+ ('ab', '(xt)', 'a{sv}'))
+ self.assert_(isinstance(tuple(types.Signature('ab'))[0],
+ types.Signature))
+
+ def test_guess_signature(self):
+ aeq = self.assertEquals
+ from _dbus_bindings import Message
+ aeq(Message.guess_signature(('a','b')), '(ss)')
+ aeq(Message.guess_signature('a','b'), 'ss')
+ aeq(Message.guess_signature(['a','b']), 'as')
+ aeq(Message.guess_signature(('a',)), '(s)')
+ aeq(Message.guess_signature('abc'), 's')
+ aeq(Message.guess_signature(types.Int32(123)), 'i')
+ aeq(Message.guess_signature(('a',)), '(s)')
+ aeq(Message.guess_signature(['a']), 'as')
+ aeq(Message.guess_signature({'a':'b'}), 'a{ss}')
+
+if __name__ == '__main__':
+ unittest.main()