def test_with_abstract_handler(): reactor = IOEventReactor() handler = AbstractIOEventHandler() assert not reactor.running assert handler.event_count == 0 assert handler.last_event_time == 0 @raises(NotImplementedError) def test_abstract_meth(meth, *args, **kws): meth(*args, **kws) for i, event in enumerate((POLLIN, POLLPRI, POLLOUT, POLLHUP, POLLNVAL, POLLERR, (POLLHUP | POLLNVAL), )): args = dict(reactor=None, fd=1, eventmask=event, timestamp=1) test_abstract_meth(handler, **args) # __call__ alias test_abstract_meth(handler.handle_event, **args) assert handler.event_count == (i+1)*2 assert handler.last_event_time test_abstract_meth(handler._handle_read_event, 0) test_abstract_meth(handler._handle_write_event, 0) test_abstract_meth(handler._close_descriptor, 0) for fd in xrange(1, 10): handler._register_fd_with_reactor(fd=fd, reactor=reactor) assert reactor.get_handler(fd) == handler reactor.unregister(fd) # this is raising and handling # exceptions internally, as the reactor # hasn't been started try: reactor.get_handler(fd) except KeyError: pass for fd in xrange(1, 10): handler._register_fd_with_reactor(fd=fd, reactor=reactor) reactor._cull_any_bad_descriptors()