|
15 | 15 | import re
|
16 | 16 | import time
|
17 | 17 | import sys
|
| 18 | +import functools |
18 | 19 | import liblo
|
19 | 20 |
|
20 | 21 |
|
@@ -191,6 +192,37 @@ def foo(path, args, *varargs):
|
191 | 192 | self.assertIsInstance(self.cb_varargs[1], liblo.Address)
|
192 | 193 | self.assertEqual(self.cb_varargs[2], 'spam')
|
193 | 194 |
|
| 195 | + def testCallbackCallable(self): |
| 196 | + class Foo: |
| 197 | + def __init__(self): |
| 198 | + self.a = None |
| 199 | + def __call__(self, path, args): |
| 200 | + self.a = args[0] |
| 201 | + foo = Foo() |
| 202 | + self.server.add_method('/foo', 'i', foo) |
| 203 | + self.server.send(1234, '/foo', 23) |
| 204 | + self.assertTrue(self.server.recv()) |
| 205 | + self.assertEqual(foo.a, 23) |
| 206 | + |
| 207 | + def testCallbackPartial(self): |
| 208 | + def foo(partarg, path, args, types, src, data): |
| 209 | + self.cb = Arguments(path, args, types, src, data) |
| 210 | + self.cb_partarg = partarg |
| 211 | + self.server.add_method('/foo', 'i', functools.partial(foo, 'blubb')) |
| 212 | + self.server.send(1234, '/foo', 23) |
| 213 | + self.assertTrue(self.server.recv()) |
| 214 | + self.assertEqual(self.cb_partarg, 'blubb') |
| 215 | + self.assertEqual(self.cb.path, '/foo') |
| 216 | + self.assertEqual(self.cb.args[0], 23) |
| 217 | + |
| 218 | + self.server.add_method('/foo2', 'i', functools.partial(foo, 'bla', data='blubb')) |
| 219 | + self.server.send(1234, '/foo2', 42) |
| 220 | + self.assertTrue(self.server.recv()) |
| 221 | + self.assertEqual(self.cb_partarg, 'bla') |
| 222 | + self.assertEqual(self.cb.path, '/foo2') |
| 223 | + self.assertEqual(self.cb.args[0], 42) |
| 224 | + self.assertEqual(self.cb.data, 'blubb') |
| 225 | + |
194 | 226 | def testBundleCallbacksFire(self):
|
195 | 227 | def bundle_start_cb(timestamp, user_data):
|
196 | 228 | self.assertIsInstance(timestamp, float)
|
|
0 commit comments