##// END OF EJS Templates
Add tests for callback infrastructure
Thomas Kluyver -
Show More
@@ -0,0 +1,46 b''
1 import unittest
2 try: # Python 3.3 +
3 from unittest.mock import Mock
4 except ImportError:
5 from mock import Mock
6
7 from IPython.core import callbacks
8 import IPython.testing.tools as tt
9
10 def ping_received():
11 pass
12
13 class CallbackTests(unittest.TestCase):
14 def setUp(self):
15 self.cbm = callbacks.CallbackManager(get_ipython(), {'ping_received': ping_received})
16
17 def test_register_unregister(self):
18 cb = Mock()
19
20 self.cbm.register('ping_received', cb)
21 self.cbm.fire('ping_received')
22 self.assertEqual(cb.call_count, 1)
23
24 self.cbm.unregister('ping_received', cb)
25 self.cbm.fire('ping_received')
26 self.assertEqual(cb.call_count, 1)
27
28 def test_reset(self):
29 cb = Mock()
30 self.cbm.register('ping_received', cb)
31 self.cbm.reset('ping_received')
32 self.cbm.fire('ping_received')
33 assert not cb.called
34
35 def test_reset_all(self):
36 cb = Mock()
37 self.cbm.register('ping_received', cb)
38 self.cbm.reset_all()
39 self.cbm.fire('ping_received')
40 assert not cb.called
41
42 def test_cb_error(self):
43 cb = Mock(side_effect=ValueError)
44 self.cbm.register('ping_received', cb)
45 with tt.AssertPrints("Error in callback"):
46 self.cbm.fire('ping_received') No newline at end of file
General Comments 0
You need to be logged in to leave comments. Login now