Example #1
0
def test_constructor_failures():
    with pytest.raises(TypeError):
        Reactor()
        pytest.fail()
    with pytest.raises(AssertionError):
        Reactor(None)
        pytest.fail()
    with pytest.raises(AssertionError):
        Reactor(123)
        pytest.fail()
    with pytest.raises(AssertionError):
        Reactor('test', condition=123)
        pytest.fail()
Example #2
0
def test_constructor():
    r = Reactor(greet)
    assert r.reaction_function == greet
    assert r.condition_function is None
    assert r.last_reaction_timestamp is None
    assert r.id_last_event_reacted is None
    assert r.reactions_count == 0
Example #3
0
def test_exception_bubbling():
    # do propagate
    cfg['reactors']['propagate_exceptions'] = True
    brq = Baroque()
    brq.config = cfg

    def reaction_raising_error(evt):
        raise FileNotFoundError()

    r = Reactor(reaction_raising_error)
    brq.on(GenericEventType()).run(r)
    with pytest.raises(FileNotFoundError):
        brq.publish(Event(GenericEventType()))
        pytest.fail()

    # do not propagate
    cfg['reactors']['propagate_exceptions'] = False
    brq = Baroque()
    brq.config = cfg

    brq.on(GenericEventType()).run(r)
    try:
        brq.publish(Event(GenericEventType()))
    except FileNotFoundError:
        pytest.fail()
Example #4
0
def test_only_if():
    r = Reactor(greet)
    assert r.condition_function is None
    cond = lambda x: False
    r.only_if(cond)
    assert r.condition_function is not None
    with pytest.raises(AssertionError):
        r = Reactor(greet)
        r.only_if('not-a-function')
        pytest.fail()
Example #5
0
def test_react():
    r = Reactor(greet)
    evt = Event(GenericEventType())
    r.react(evt)
    assert r.count_reactions() == 1
    assert r.last_event_reacted() is not None
    assert r.last_reacted_on() is not None
Example #6
0
def test_condition_met():
    r = Reactor(greet)
    evt = Event(GenericEventType(), payload=dict())
    # no condition set
    is_met = r._condition_met(evt)
    assert is_met
    # condition is not met
    r.only_if(only_test_events)
    is_met = r._condition_met(evt)
    assert not is_met
    # condition is met
    evt.payload['test'] = 'value'
    is_met = r._condition_met(evt)
    assert is_met
Example #7
0
def test_print():
    print(Reactor(lambda x: 1))
Example #8
0
def test_react_conditionally():
    r = Reactor(greet, condition=only_test_events)
    evt = Event(GenericEventType())
    # condition is not met
    r.react_conditionally(evt)
    assert r.count_reactions() == 0
    assert r.last_event_reacted() is None
    assert r.last_reacted_on() is None
    # condition is met
    evt.payload = {'test': 'value'}
    r.react_conditionally(evt)
    assert r.count_reactions() == 1
    assert r.last_event_reacted() is not None
    assert r.last_reacted_on() is not None