Пример #1
0
def test_events_stream_in_thread_child_error():
    parent = events.EventHandler()
    child = events.EventHandler()
    child.pipe(parent)

    def send_event():
        child.emit_error(DummyExcpetion("Test stream event errors"))

    strm = parent.stream()
    threading.Thread(target=send_event).start()
    with pytest.raises(Exception):
        strm.__next__()
Пример #2
0
def test_wait_for_self_emit_error_no_raise():
    parent = events.EventHandler()
    child = events.EventHandler()

    parent.pipe(child)

    def send_event():
        time.sleep(0.1)
        parent.emit_error(DummyExcpetion("from parent"))

    Task(send_event).start()
    rsp = child.wait_for("test_event", timeout=1, raise_errors=False)
    assert isinstance(rsp, DummyExcpetion)
Пример #3
0
def test_wait_for_self_emit_error():
    parent = events.EventHandler()
    child = events.EventHandler()

    parent.pipe(child)

    def send_event():
        time.sleep(0.1)
        parent.emit_error(DummyExcpetion("from parent"))

    Task(send_event).start()
    with pytest.raises(DummyExcpetion):
        child.wait_for("test_event", timeout=1)
Пример #4
0
def test_event_handler_pipe():
    parent = events.EventHandler()

    completed = False

    def check_event_origin(event: events.Event):
        nonlocal completed
        completed = True
        assert event.sender is parent, "Invalid sender for event object"

    child = events.EventHandler(on_event=check_event_origin)
    parent.pipe(child)
    parent.emit("check")

    assert completed, "Event did not propagate"
Пример #5
0
def test_event_handler_event_invalid_arg_list():
    hndl = events.EventHandler()
    hndl.on("test_event", lambda: print("ok"))
    with pytest.raises(Exception):
        hndl.emit("test_event", True)
    with pytest.raises(Exception):
        hndl.emit("test_event", named_arg=True)
Пример #6
0
def test_events_with_multiple_allowed_stream_preload():
    hndl = events.EventHandler()
    strm = hndl.stream(["a", "b"], timeout=0.1)
    hndl.emit("a")
    hndl.emit("b")
    assert strm.__next__().name == "a"
    assert strm.__next__().name == "b"
Пример #7
0
def test_wait_for_self_predict():
    parent = events.EventHandler()
    child = events.EventHandler()

    parent.pipe(child)

    def send_event():
        time.sleep(0.1)
        parent.emit("test_event", 22)

    def predict(sender: events.EventHandler, event: events.Event):
        assert sender != event.sender
        assert event.name == "test_event"
        return True

    # asyncio will not work here :)
    Task(send_event).start()
    child.wait_for(predict=predict, timeout=1)
Пример #8
0
def test_wait_for_self():
    hndl = events.EventHandler()

    def send_event():
        time.sleep(0.1)
        hndl.emit("test_event")

    # asyncio will not work here :)
    Task(send_event).start()
    hndl.wait_for("test_event", timeout=1)
Пример #9
0
def test_wait_for_events_none():
    hndl = events.EventHandler()

    def send_event():
        time.sleep(0.1)
        hndl.emit("test_event")

    Task(send_event).start()
    rslt = hndl.wait_for_events(None, [hndl], timeout=1)
    assert rslt[0] is hndl, "Did not return correct handler"
Пример #10
0
def test_wait_for_events():
    hndl = events.EventHandler()

    def send_event():
        time.sleep(0.1)
        hndl.emit("test_event")

    # asyncio will not work here :)
    Task(send_event).start()
    rslt = hndl.wait_for_events("test_event", [hndl], timeout=1)
    assert rslt[0] is hndl, "Did not return correct handler"
Пример #11
0
def test_events_stream_in_thread_error():
    hndl = events.EventHandler()

    def send_event():
        time.sleep(0.01)
        hndl.emit_error(DummyExcpetion("Test stream event errors"))

    threading.Thread(target=send_event).start()
    strm = hndl.stream()
    with pytest.raises(Exception):
        strm.__next__()
Пример #12
0
def test_events_stream_in_thread():
    hndl = events.EventHandler()

    def send_event():
        time.sleep(0.01)
        hndl.emit("test_event")

    threading.Thread(target=send_event).start()
    strm = hndl.stream(timeout=0.1)

    assert strm.__next__() is not None
Пример #13
0
def test_events_stream_no_throw_errors():
    hndl = events.EventHandler()

    def send_event():
        time.sleep(0.01)
        hndl.emit_error(DummyExcpetion("Test stream event errors"))
        hndl.emit("test_event")

    threading.Thread(target=send_event).start()
    strm = hndl.stream(throw_errors=False)
    assert strm.__next__() is not None
Пример #14
0
async def test_events_stream_in_corutine_asyncio():
    hndl = events.EventHandler()
    strm = hndl.stream(timeout=0.1, use_async_loop=True)

    async def send_event():
        hndl.emit("test_event")
        hndl.stop_all_streams()

    Task(send_event).start()
    await asyncio.sleep(0.01)  # allow the other task to execute.
    assert (await strm.__anext__()).name == "test_event"
Пример #15
0
def test_wait_for_events_predict():
    hndl = events.EventHandler()

    def send_event():
        time.sleep(0.1)
        hndl.emit("test_event")

    Task(send_event).start()
    rslt = hndl.wait_for_events(
        lambda sender, event: event.name == "test_event", [hndl], timeout=1)
    assert rslt[0] is hndl, "Did not return correct handler"
Пример #16
0
async def test_events_stream_stop_asyncio():
    hndl = events.EventHandler()

    async def send_event():
        await asyncio.sleep(0.01)
        hndl.stop_all_streams()

    # asyncio will not work here :)
    Task(send_event).start()
    strm = hndl.stream(timeout=1)

    for v in strm:
        pass
Пример #17
0
def test_wait_for_self_with_predict_error():
    hndl = events.EventHandler()

    def send_event():
        time.sleep(0.1)
        hndl.emit("test_event")

    def predict(sender: events.EventHandler, event: events.Event):
        raise DummyExcpetion("error")

    # asyncio will not work here :)
    Task(send_event).start()
    with pytest.raises(DummyExcpetion):
        hndl.wait_for(predict, timeout=1)
Пример #18
0
def test_events_streams_using_threads():
    hndl = events.EventHandler()

    def do_emit():
        for i in range(0, 4):
            hndl.emit("test")
            time.sleep(0.001)
        hndl.stop_all_streams()

    event_stream = hndl.stream("test")
    Task(do_emit).start()
    col = []
    for ev in event_stream:
        col.append(ev)
    assert len(col) == 4
Пример #19
0
def test_event_handler_args():
    hndl = events.EventHandler()

    rslt = {
        "arg": None,
        "named_arg": None,
    }

    def handler_method(arg, named_arg=None):
        rslt["arg"] = arg
        rslt["named_arg"] = named_arg

    hndl.on("test_event", handler_method)
    hndl.emit("test_event", True, named_arg=True)

    assert rslt["arg"] is True, "Arg list not passed to event"
    assert rslt["named_arg"] is True, "Named arg list not passed to event"
Пример #20
0
def test_event_handler_event():
    hndl = events.EventHandler()
    hndl.on("test_event", lambda: print("ok"))
    hndl.emit("test_event")
Пример #21
0
def test_events_stream_preload():
    hndl = events.EventHandler()
    strm = hndl.stream(timeout=0.1)
    hndl.emit("test_event")
    assert strm.__next__() is not None
Пример #22
0
async def test_events_stream_preload_asyncio():
    hndl = events.EventHandler()
    strm = hndl.stream(timeout=0.1, use_async_loop=True)
    hndl.emit("test_event")
    assert await strm.__anext__() is not None