import unittest2 import testlib import mitogen.core class Thing: pass class ListenFireTest(testlib.TestCase): def test_no_args(self): thing = Thing() latch = mitogen.core.Latch() mitogen.core.listen(thing, 'event', lambda: latch.put('event fired')) mitogen.core.fire(thing, 'event') self.assertEquals('event fired', latch.get()) self.assertTrue(latch.empty()) def test_with_args(self): thing = Thing() latch = mitogen.core.Latch() mitogen.core.listen(thing, 'event', latch.put) mitogen.core.fire(thing, 'event', 'event fired') self.assertEquals('event fired', latch.get()) self.assertTrue(latch.empty()) def test_two_listeners(self): thing = Thing() latch = mitogen.core.Latch() latch2 = mitogen.core.Latch() mitogen.core.listen(thing, 'event', latch.put) mitogen.core.listen(thing, 'event', latch2.put) mitogen.core.fire(thing, 'event', 'event fired') self.assertEquals('event fired', latch.get()) self.assertEquals('event fired', latch2.get()) self.assertTrue(latch.empty()) self.assertTrue(latch2.empty()) if __name__ == '__main__': unittest2.main()