Throughout dbus-python: Use the C implementation.
[dbus-python-phuang.git] / test / test-standalone.py
blob454c6aa5c83ec50a8f66c75bf822d6e40a8ab572
1 #!/usr/bin/env python
2 import sys
3 import os
4 import unittest
5 import time
7 builddir = os.environ["DBUS_TOP_BUILDDIR"]
8 pydir = builddir
10 sys.path.insert(0, pydir)
11 sys.path.insert(0, pydir + 'dbus')
13 import _dbus_bindings
14 import dbus
15 import dbus.types as types
17 pkg = dbus.__file__
18 if not pkg.startswith(pydir):
19 raise Exception("DBus modules (%s) are not being picked up from the package"%pkg)
21 if not _dbus_bindings.__file__.startswith(pydir):
22 raise Exception("DBus modules (%s) are not being picked up from the package"%_dbus_bindings.__file__)
24 class TestTypes(unittest.TestCase):
26 def test_append(self):
27 aeq = self.assertEquals
28 from _dbus_bindings import SignalMessage
29 s = SignalMessage('/', 'foo.bar', 'baz')
30 s.append([types.Byte(1)], signature='ay')
31 aeq(s.get_signature(), 'ay')
32 aeq(s.get_args_list(), [[types.Byte(1)]])
34 s = SignalMessage('/', 'foo.bar', 'baz')
35 s.append([], signature='ay')
36 aeq(s.get_args_list(), [[]])
38 def test_append_ByteArray(self):
39 aeq = self.assertEquals
40 from _dbus_bindings import SignalMessage
41 s = SignalMessage('/', 'foo.bar', 'baz')
42 s.append(types.ByteArray('ab'), signature='ay')
43 aeq(s.get_args_list(), [[types.Byte('a'), types.Byte('b')]])
44 s = SignalMessage('/', 'foo.bar', 'baz')
45 s.append(types.ByteArray('ab'), signature='av')
46 aeq(s.get_args_list(), [[types.Variant(types.Byte('a')),
47 types.Variant(types.Byte('b'))]])
49 def test_append_Variant(self):
50 a = self.assert_
51 aeq = self.assertEquals
52 from _dbus_bindings import SignalMessage
53 s = SignalMessage('/', 'foo.bar', 'baz')
54 s.append(types.Variant(1, signature='i'),
55 types.Variant('a', signature='s'),
56 types.Variant([(types.Variant('a', signature='y'), 'b'),
57 (types.Variant(123, signature='u'), 1)],
58 signature='a(vy)'))
59 aeq(s.get_signature(), 'vvv')
60 args = s.get_args_list()
61 aeq(args[0].__class__, types.Variant)
62 aeq(args[0].signature, 'i')
63 aeq(args[0].object.__class__, types.Int32)
64 aeq(args[0].object, 1)
65 aeq(args[1].__class__, types.Variant)
66 aeq(args[1].signature, 's')
67 a(isinstance(args[1].object, unicode))
68 aeq(args[2].__class__, types.Variant)
69 aeq(args[1].object, 'a')
70 aeq(args[2].signature, 'a(vy)')
71 avy = args[2].object
72 aeq(avy.__class__, types.Array)
73 aeq(len(avy), 2)
74 aeq(avy[0].__class__, tuple)
75 aeq(len(avy[0]), 2)
76 aeq(avy[0][0].__class__, types.Variant)
77 aeq(avy[0][0].signature, 'y')
78 aeq(avy[0][0].object.__class__, types.Byte)
79 aeq(avy[0][0].object, types.Byte('a'))
80 aeq(avy[0][1].__class__, types.Byte)
81 aeq(avy[0][1], types.Byte('b'))
82 aeq(avy[1].__class__, tuple)
83 aeq(len(avy[1]), 2)
84 aeq(avy[1][0].__class__, types.Variant)
85 aeq(avy[1][0].signature, 'u')
86 aeq(avy[1][0].object.__class__, types.UInt32)
87 aeq(avy[1][0].object, 123)
88 aeq(avy[1][1].__class__, types.Byte)
89 aeq(avy[1][1], types.Byte(1))
91 def test_Variant(self):
92 Variant = types.Variant
93 a = self.assert_
94 a(Variant(1, 'i') == Variant(1, 'i'))
95 a(not (Variant(1, 'i') == Variant(1, 'u')))
96 a(not (Variant(1, 'i') == Variant(2, 'i')))
97 a(not (Variant(1, 'i') == Variant(2, 'u')))
98 a(not (Variant(1, 'i') != Variant(1, 'i')))
99 a(Variant(1, 'i') != Variant(1, 'u'))
100 a(Variant(1, 'i') != Variant(2, 'i'))
101 a(Variant(1, 'i') != Variant(2, 'u'))
103 def test_Signature(self):
104 self.assertRaises(Exception, types.Signature, 'a')
105 self.assertEquals(types.Signature('ab'), 'ab')
106 self.assert_(isinstance(types.Signature('ab'), str))
107 self.assertEquals(tuple(types.Signature('ab(xt)a{sv}')),
108 ('ab', '(xt)', 'a{sv}'))
109 self.assert_(isinstance(tuple(types.Signature('ab'))[0],
110 types.Signature))
112 def test_guess_signature(self):
113 aeq = self.assertEquals
114 from _dbus_bindings import Message
115 aeq(Message.guess_signature(('a','b')), '(ss)')
116 aeq(Message.guess_signature('a','b'), 'ss')
117 aeq(Message.guess_signature(['a','b']), 'as')
118 aeq(Message.guess_signature(('a',)), '(s)')
119 aeq(Message.guess_signature('abc'), 's')
120 aeq(Message.guess_signature(types.Int32(123)), 'i')
121 aeq(Message.guess_signature(('a',)), '(s)')
122 aeq(Message.guess_signature(['a']), 'as')
123 aeq(Message.guess_signature({'a':'b'}), 'a{ss}')
125 if __name__ == '__main__':
126 unittest.main()