def test_event_dispatch(): q = Queue.Queue() def callback(event): q.put(event) for tc_id, tc in enumerate(dispatch_test_cases): print "Launching test case {0}".format(tc_id) q.queue.clear() listeners = {} for event in tc['register_events']: listener = gem.event.PyListener(callback) event.register(listener) listeners.setdefault(event, []).append(listener) for event in tc['raise_events']: event.notify_observers() for event in tc['listen_events']: raised_event = q.get() assert raised_event == event for event, listeners in listeners.iteritems(): for l in listeners: event.unregister(l) event.notify_observers() assert q.empty()
def test_event_dispatch_object(): q = Queue.Queue() class CBClass(object): def callback(self, event, arg1, arg2): q.put(event) q.put(arg1) q.put(arg2) obj = CBClass() for tc_id, tc in enumerate(args_test_cases): print "Launching test case {0}".format(tc_id) q.queue.clear() listeners = {} for event in tc['register_events']: listener = gem.event.PyListener(obj.callback) event.register(listener) listeners.setdefault(event, []).append(listener) for event in tc['raise_events']: event.notify_observers(tc['arg1'], tc['arg2']) for event in tc['listen_events']: raised_event = q.get() assert raised_event == event assert q.get() == tc['arg1'] assert q.get() == tc['arg2'] for event, listeners in listeners.iteritems(): for l in listeners: event.unregister(l) event.notify_observers() assert q.empty()
def new_del(self): for event, handles in event_handles.iteritems(): for handle in handles: event.unregister(handle) if orig_del: orig_del(self)