示例#1
0
def test_future_raise_now():
    fut = Future()
    events = []
    corocc.start(raise_now(events.append), future=fut)
    assert events == [1]
    assert fut.done()
    with pytest.raises(ZeroDivisionError):
        fut.result()
示例#2
0
def test_future_result_later():
    fut = Future()
    cont_store = []
    corocc.start(result_later(cont_store.append), future=fut)
    assert not fut.done()
    cont_store[0]()
    assert fut.done()
    assert fut.result() == 42
示例#3
0
def test_thread():
    events = []
    corocc.start(thread_coro(events.append))
    assert len(events) == 1
    assert events[0][0] == 'a'
    time.sleep(.05)
    assert [x for (x, _y) in events] == ['a', 'b', 'c']
    assert len(set(y for (_x, y) in events)) == 3
示例#4
0
def _block(coro):
    # utility function shared by several tests: start the coroutine,
    # block until it's done, and return the future containing its
    # result
    future = Future()
    corocc.start(coro, future=future)
    concurrent.futures.wait([future])
    return future
示例#5
0
def test_nested_unfinished():
    events = []
    cont_store = []
    corocc.start(outer2(events.append, cont_store.append))
    assert events == ['o 1', 'i 1', 'i 2']
    cont, = cont_store
    cont()
    assert events == ['o 1', 'i 1', 'i 2', 'i 3', 'o 2']
示例#6
0
def test_unfinished():
    events = []
    cont_store = []
    corocc.start(unfinished_coro(events.append, cont_store.append))
    assert events == [1, 2, 3, 4]
    cont, = cont_store
    cont()
    assert events == [1, 2, 3, 4, 5]
示例#7
0
def test_raise_later():
    events = []
    cont_store = []
    corocc.start(raise_later(events.append, cont_store.append))
    assert events == [1]
    cont, = cont_store
    with pytest.raises(ZeroDivisionError):
        cont()
    assert events == [1, 2]
示例#8
0
def test_future_wait():
    fut = Future()
    events = []
    corocc.start(future_finish_later(events.append), future=fut)
    assert not fut.done()
    assert events == [1]
    concurrent.futures.wait([fut])
    assert events == [1, 2]
    assert fut.result() == 42
示例#9
0
def test_unfinished():
    events = []
    cont_store = []
    corocc.start(unfinished_coro(events.append, cont_store.append))
    assert events == [1, 2]
    cont, = cont_store
    assert not hasattr(cont, 'result')
    cont(3)
    assert events == [1, 2, 3]
    assert cont.result == 3
示例#10
0
def test_cont_again():
    events = []
    cont_store = []
    corocc.start(cont_again_coro(events.append, cont_store.append))
    assert events == [1, 2, 3]
    cont, = cont_store
    cont()
    assert events == [1, 2, 3, 4]
    with pytest.raises(RuntimeError):
        cont()
    assert events == [1, 2, 3, 4]
示例#11
0
def test_send_exc():
    events = []
    cont_store = []
    corocc.start(send_exc_coro(events.append, cont_store.append))
    assert events == [1, 2]
    cont = cont_store.pop()
    cont.throw(ZeroDivisionError())
    assert events == [1, 2, 4, 7]
    cont = cont_store.pop()
    cont()
    assert events == [1, 2, 4, 7, 8]
示例#12
0
def test_future_raise_later():
    fut = Future()
    events = []
    cont_store = []
    corocc.start(raise_later(events.append, cont_store.append), future=fut)
    assert not fut.done()
    assert events == [1]
    cont_store[0]()
    assert events == [1, 2]
    assert fut.done()
    with pytest.raises(ZeroDivisionError):
        fut.result()
示例#13
0
def test_raise_now():
    events = []
    with pytest.raises(ZeroDivisionError):
        corocc.start(raise_now(events.append))
    assert events == [1]
示例#14
0
def test_null():
    events = []
    corocc.start(null_coro(events.append))
    assert events == [1]
示例#15
0
def test_nested():
    events = []
    corocc.start(outer(events.append))
    assert events == ['o 1', 'o 2', 'o 3', 'i 1', 'i 2', 'i 3', 'o 4']
示例#16
0
def test_simple():
    events = []
    corocc.start(simple_coro(events.append))
    assert events == [1, 2, 'retval']
示例#17
0
def test_future_result_now():
    fut = Future()
    assert not fut.done()
    corocc.start(result_now(), future=fut)
    assert fut.done()
    assert fut.result() == 42
示例#18
0
def test_different_cont_again():
    events = []
    with pytest.raises(RuntimeError):
        corocc.start(different_cont_again_coro(events.append))
    assert events == [1, 2, 3]
示例#19
0
def test_nested_suspending():
    events = []
    with pytest.raises(RuntimeError):
        corocc.start(nested_suspending(events.append))
    assert events == [1, 2]
示例#20
0
def test_cont_now():
    events = []
    corocc.start(cont_now(events.append))
    assert events == [1, 2, 3, 4]