test_events.py
45 lines
| 1.3 KiB
| text/x-python
|
PythonLexer
Thomas Kluyver
|
r15601 | import unittest | |
try: # Python 3.3 + | |||
from unittest.mock import Mock | |||
except ImportError: | |||
from mock import Mock | |||
Thomas Kluyver
|
r15605 | from IPython.core import events | |
Thomas Kluyver
|
r15601 | import IPython.testing.tools as tt | |
def ping_received(): | |||
pass | |||
class CallbackTests(unittest.TestCase): | |||
def setUp(self): | |||
Thomas Kluyver
|
r15605 | self.em = events.EventManager(get_ipython(), {'ping_received': ping_received}) | |
Thomas Kluyver
|
r15601 | ||
def test_register_unregister(self): | |||
cb = Mock() | |||
Thomas Kluyver
|
r15605 | self.em.register('ping_received', cb) | |
self.em.trigger('ping_received') | |||
Thomas Kluyver
|
r15601 | self.assertEqual(cb.call_count, 1) | |
Thomas Kluyver
|
r15605 | self.em.unregister('ping_received', cb) | |
self.em.trigger('ping_received') | |||
Thomas Kluyver
|
r15601 | self.assertEqual(cb.call_count, 1) | |
def test_reset(self): | |||
cb = Mock() | |||
Thomas Kluyver
|
r15605 | self.em.register('ping_received', cb) | |
self.em.reset('ping_received') | |||
self.em.trigger('ping_received') | |||
Thomas Kluyver
|
r15601 | assert not cb.called | |
def test_reset_all(self): | |||
cb = Mock() | |||
Thomas Kluyver
|
r15605 | self.em.register('ping_received', cb) | |
self.em.reset_all() | |||
self.em.trigger('ping_received') | |||
Thomas Kluyver
|
r15601 | assert not cb.called | |
def test_cb_error(self): | |||
cb = Mock(side_effect=ValueError) | |||
Thomas Kluyver
|
r15605 | self.em.register('ping_received', cb) | |
Thomas Kluyver
|
r15601 | with tt.AssertPrints("Error in callback"): | |
Thomas Kluyver
|
r15605 | self.em.trigger('ping_received') |