def test_validate_handler(): dummy_handler = Handler(kind=KINDS.UNSET, name='test', handler=dummy) validated_handler = validate_handler(dummy_handler) assert validated_handler == dummy_handler
def test_states_with_callback(): def _trigger_frame_handler(frame, handler, internal): assert frame assert handler assert internal return handler(frame) def test_handler(state): assert state.name == 'the_answer' assert state.data.value in [42, 0] return True states = States() a_handler = Handler(KINDS.STATE, 'the_answer', test_handler) states.add_handler('the_answer', handler=a_handler) states.remove_handler('the_answer', handler=a_handler) states.add_handler('the_answer', handler=a_handler) states.the_answer = Field() states.callback = _trigger_frame_handler assert states.callback == _trigger_frame_handler states.the_answer = 42 assert states['the_answer'] == 42 states['the_answer'] = 0 assert states['the_answer'] == 0 states['not_the_answer'] = 'lol cats' assert states['not_the_answer'] == 'lol cats' del states['not_the_answer'] assert 'not_the_answer' not in states del states.the_answer assert 'the_answer' not in states
def wrapper(handler): name = str(interval) handler_obj = Handler(kind=KINDS.TIMER, name=name, handler=handler, **kwargs) if hasattr(handler, 'meta'): handler.meta.append(handler_obj) else: handler.meta = [handler_obj] return handler
def test_handler_registry_fuzzy(): handler = Handler(KINDS.EVENT, 'dummy', handler=dummy, fuzzy=True) registry = HandlerRegistry() registry.add_handler('test-event', handler) frame_, handlers_ = registry.match(frame=Event('test event')) assert handlers_ == {handler} # set frame_1, handlers_1 = registry.match(frame=Event('something else')) assert handlers_1 == set()
def test_handler(): handler = Handler(KINDS.UNSET, handler=dummy, name='test', meta={'a': 'b'}) assert handler() is True assert handler.name == 'test' assert handler.kind == KINDS.UNSET assert handler.meta == {'a': 'b'} assert handler.match_exact is True assert handler.match_parse is False assert handler.match_fuzzy is False assert handler.run_async is False
def wrapper(handler): handler_obj = Handler(kind=KINDS.EVENT, name=name, handler=handler, exact=exact, parse=parse, fuzzy=fuzzy, ignore_case=ignore_case, **kwargs) self.events.add_handler(name, handler_obj) return handler
def wrapper(handler): handler_obj = Handler(kind=KINDS.MESSAGE, name=name, handler=handler, exact=exact, parse=parse, fuzzy=fuzzy, ignore_case=ignore_case, **kwargs) self.messages.add_handler(name, handler_obj) return handler
def test_registry_remove_handler(): handler_exact = Handler(KINDS.EVENT, 'dummy', handler=dummy) handler_parse = Handler(KINDS.EVENT, 'dummy', handler=dummy, parse=True) handler_fuzzy = Handler(KINDS.EVENT, 'dummy', handler=dummy, fuzzy=True) registry = HandlerRegistry() # Exact registry.add_handler('test-event', handler_exact) assert handler_exact in registry._handlers['test-event'] registry.remove_handler('test-event', handler_exact) assert handler_exact not in registry._handlers['test-event'] # Parse registry.add_handler('test-event', handler_parse) assert handler_parse in registry._handlers['test-event'] registry.remove_handler('test-event', handler_parse) assert handler_parse not in registry._handlers['test-event'] # Fuzzy registry.add_handler('test-event', handler_fuzzy) assert handler_fuzzy in registry._handlers['test-event'] registry.remove_handler('test-event', handler_fuzzy) assert handler_fuzzy not in registry._handlers['test-event']
def test_handler_registry_parse(): handler = Handler(KINDS.EVENT, 'dummy', handler=dummy, parse=True) registry = HandlerRegistry() registry.add_handler('{what}-event', handler) registry.add_handler('not this event', handler) frame_, handlers_ = registry.match(frame=Event('test-event')) assert handlers_ == {handler} # set frame_1, handlers_1 = registry.match(frame=Event('something else')) assert handlers_1 == set() frame_2, handlers_2 = registry.match(frame=Event('not this event')) assert handlers_2 == {handler}
def test_events_return_value_from_event_fails(): def trigger_frame_handler(frame, handler, internal): return handler(frame) def test_handler(event): assert event.name == 'ping' return True events = Events(callback=trigger_frame_handler) handler = Handler(KINDS.STATE, 'the_answer', test_handler) events.add_handler('ping', handler=handler) events.emit('ping')
def test_events_set_callback_later(): def trigger_frame_handler(frame, handler, internal): return handler(frame) def test_handler(event): assert event.name == 'ping' events = Events() events.callback = trigger_frame_handler assert events.callback == trigger_frame_handler handler = Handler(KINDS.STATE, 'the_answer', test_handler) events.add_handler('ping', handler=handler) events.emit('ping')
def wrapper(handler): handler_obj = Handler(kind=KINDS.MESSAGE, name=name, handler=handler, exact=exact, parse=parse, fuzzy=fuzzy, ignore_case=ignore_case, **kwargs) if hasattr(handler, 'meta'): handler.meta.append(handler_obj) else: handler.meta = [handler_obj] return handler
def test_events(): def trigger_frame_handler(frame, handler, internal): assert frame assert handler assert internal is False return handler(frame) def test_handler(event): assert event.name == 'ping' events = Events(callback=trigger_frame_handler) handler = Handler(KINDS.STATE, 'the_answer', test_handler) events.add_handler('ping', handler=handler) events.emit('ping') assert handler in events._registry._handlers['ping'] events.remove_handler('ping', handler=handler) assert handler not in events._registry._handlers['ping']
def test_states_with_callback_fails(): def _trigger_frame_handler(frame, handler, internal): assert frame assert handler assert internal return handler(frame) def test_handler(state): assert state.name == 'the_answer' assert state.data.value in [42, 0] states = States() a_handler = Handler(KINDS.STATE, 'the_answer', test_handler) states.add_handler('the_answer', handler=a_handler) states.the_answer = Field() states.callback = _trigger_frame_handler assert states.callback == _trigger_frame_handler states.the_answer = 42
def test_async_handler(): handler = Handler(KINDS.UNSET, handler=dummy_async, name='test_async') assert handler.run_async is True
def test_handler_set_fuzzy(): handler = Handler(KINDS.UNSET, handler=dummy, name='test', fuzzy=True)
def test_handler_set_parse(): handler = Handler(KINDS.UNSET, handler=dummy, name='test', parse=True)
def test_handler_fails_on_both_parse_and_fuzzy(): handler = Handler(KINDS.UNSET, handler=dummy, name='test', fuzzy=True, parse=True)
def test_handler_fails_on_invalid_meta(): handler = Handler(KINDS.UNSET, handler=dummy, name='test', meta='nonsense')
def test_add_handler_fails_if_match_already_assigned(): handler = Handler(KINDS.EVENT, 'dummy', handler=dummy) registry = HandlerRegistry() registry.add_handler('test-event', handler) registry.add_handler('test-event', handler)
def test_add_handler_fails_on_bad_match_values(): handler = Handler(KINDS.EVENT, 'dummy', handler=dummy, exact=False) registry = HandlerRegistry() registry.add_handler('test-event', handler)
def wrapper(handler): name = str(interval) handler_obj = Handler(kind=KINDS.TIMER, name=name, handler=handler) self.timers.add_handler(name, handler_obj) return handler
def test_handler_fails_on_invalid_handler(): handler = Handler(KINDS.UNSET, handler='obviously not a callable', name='test')