Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
 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
Exemplo n.º 4
0
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()
Exemplo n.º 5
0
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
Exemplo n.º 6
0
 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
Exemplo n.º 7
0
 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
Exemplo n.º 8
0
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']
Exemplo n.º 9
0
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}
Exemplo n.º 10
0
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')
Exemplo n.º 11
0
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')
Exemplo n.º 12
0
 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
Exemplo n.º 13
0
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']
Exemplo n.º 14
0
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
Exemplo n.º 15
0
def test_async_handler():
    handler = Handler(KINDS.UNSET, handler=dummy_async, name='test_async')
    assert handler.run_async is True
Exemplo n.º 16
0
def test_handler_set_fuzzy():
    handler = Handler(KINDS.UNSET, handler=dummy, name='test', fuzzy=True)
Exemplo n.º 17
0
def test_handler_set_parse():
    handler = Handler(KINDS.UNSET, handler=dummy, name='test', parse=True)
Exemplo n.º 18
0
def test_handler_fails_on_both_parse_and_fuzzy():
    handler = Handler(KINDS.UNSET, handler=dummy, name='test',
                      fuzzy=True, parse=True)
Exemplo n.º 19
0
def test_handler_fails_on_invalid_meta():
    handler = Handler(KINDS.UNSET, handler=dummy, name='test', meta='nonsense')
Exemplo n.º 20
0
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)
Exemplo n.º 21
0
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)
Exemplo n.º 22
0
 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
Exemplo n.º 23
0
def test_handler_fails_on_invalid_handler():
    handler = Handler(KINDS.UNSET, handler='obviously not a callable', name='test')