##// END OF EJS Templates
STY: line wrap test init to make more readable
Thomas A Caswell -
Show More
@@ -1,85 +1,87 b''
1 from backcall import callback_prototype
1 from backcall import callback_prototype
2 import unittest
2 import unittest
3 from unittest.mock import Mock
3 from unittest.mock import Mock
4 import nose.tools as nt
4 import nose.tools as nt
5
5
6 from IPython.core import events
6 from IPython.core import events
7 import IPython.testing.tools as tt
7 import IPython.testing.tools as tt
8
8
9
9
10 @events._define_event
10 @events._define_event
11 def ping_received():
11 def ping_received():
12 pass
12 pass
13
13
14
14
15 @events._define_event
15 @events._define_event
16 def event_with_argument(argument):
16 def event_with_argument(argument):
17 pass
17 pass
18
18
19
19
20 class CallbackTests(unittest.TestCase):
20 class CallbackTests(unittest.TestCase):
21 def setUp(self):
21 def setUp(self):
22 self.em = events.EventManager(get_ipython(), {'ping_received': ping_received, 'event_with_argument': event_with_argument})
22 self.em = events.EventManager(get_ipython(),
23
23 {'ping_received': ping_received,
24 'event_with_argument': event_with_argument})
25
24 def test_register_unregister(self):
26 def test_register_unregister(self):
25 cb = Mock()
27 cb = Mock()
26
28
27 self.em.register('ping_received', cb)
29 self.em.register('ping_received', cb)
28 self.em.trigger('ping_received')
30 self.em.trigger('ping_received')
29 self.assertEqual(cb.call_count, 1)
31 self.assertEqual(cb.call_count, 1)
30
32
31 self.em.unregister('ping_received', cb)
33 self.em.unregister('ping_received', cb)
32 self.em.trigger('ping_received')
34 self.em.trigger('ping_received')
33 self.assertEqual(cb.call_count, 1)
35 self.assertEqual(cb.call_count, 1)
34
36
35 def test_bare_function_missed_unregister(self):
37 def test_bare_function_missed_unregister(self):
36 def cb1():
38 def cb1():
37 ...
39 ...
38
40
39 def cb2():
41 def cb2():
40 ...
42 ...
41
43
42 self.em.register('ping_received', cb1)
44 self.em.register('ping_received', cb1)
43 nt.assert_raises(ValueError, self.em.unregister, 'ping_received', cb2)
45 nt.assert_raises(ValueError, self.em.unregister, 'ping_received', cb2)
44 self.em.unregister('ping_received', cb1)
46 self.em.unregister('ping_received', cb1)
45
47
46 def test_cb_error(self):
48 def test_cb_error(self):
47 cb = Mock(side_effect=ValueError)
49 cb = Mock(side_effect=ValueError)
48 self.em.register('ping_received', cb)
50 self.em.register('ping_received', cb)
49 with tt.AssertPrints("Error in callback"):
51 with tt.AssertPrints("Error in callback"):
50 self.em.trigger('ping_received')
52 self.em.trigger('ping_received')
51
53
52 def test_unregister_during_callback(self):
54 def test_unregister_during_callback(self):
53 invoked = [False] * 3
55 invoked = [False] * 3
54
56
55 def func1(*_):
57 def func1(*_):
56 invoked[0] = True
58 invoked[0] = True
57 self.em.unregister('ping_received', func1)
59 self.em.unregister('ping_received', func1)
58 self.em.register('ping_received', func3)
60 self.em.register('ping_received', func3)
59
61
60 def func2(*_):
62 def func2(*_):
61 invoked[1] = True
63 invoked[1] = True
62 self.em.unregister('ping_received', func2)
64 self.em.unregister('ping_received', func2)
63
65
64 def func3(*_):
66 def func3(*_):
65 invoked[2] = True
67 invoked[2] = True
66
68
67 self.em.register('ping_received', func1)
69 self.em.register('ping_received', func1)
68 self.em.register('ping_received', func2)
70 self.em.register('ping_received', func2)
69
71
70 self.em.trigger('ping_received')
72 self.em.trigger('ping_received')
71 self.assertEqual([True, True, False], invoked)
73 self.assertEqual([True, True, False], invoked)
72 self.assertEqual([func3], self.em.callbacks['ping_received'])
74 self.assertEqual([func3], self.em.callbacks['ping_received'])
73
75
74 def test_ignore_event_arguments_if_no_argument_required(self):
76 def test_ignore_event_arguments_if_no_argument_required(self):
75 call_count = [0]
77 call_count = [0]
76 def event_with_no_argument():
78 def event_with_no_argument():
77 call_count[0] += 1
79 call_count[0] += 1
78
80
79 self.em.register('event_with_argument', event_with_no_argument)
81 self.em.register('event_with_argument', event_with_no_argument)
80 self.em.trigger('event_with_argument', 'the argument')
82 self.em.trigger('event_with_argument', 'the argument')
81 self.assertEqual(call_count[0], 1)
83 self.assertEqual(call_count[0], 1)
82
84
83 self.em.unregister('event_with_argument', event_with_no_argument)
85 self.em.unregister('event_with_argument', event_with_no_argument)
84 self.em.trigger('ping_received')
86 self.em.trigger('ping_received')
85 self.assertEqual(call_count[0], 1)
87 self.assertEqual(call_count[0], 1)
General Comments 0
You need to be logged in to leave comments. Login now