def test_events_on_async():
    e = Events('foo')
    m = mock.MagicMock()

    @asyncio.coroutine
    def foo():
        m()

    e.on('foo', foo())
    yield from e.emit('foo')
    assert m.called
def test_events_on_async():
    e = Events('foo')
    m = mock.MagicMock()

    @asyncio.coroutine
    def foo():
        m()

    e.on('foo', foo())
    yield from e.emit('foo')
    assert m.called
def test_events_on_typecheck():
    e = Events('foo')
    with pytest.raises(ValueError):
        e.on('anything', 10)
def test_events_constructor_nonempty():
    e = Events('foo')
    with pytest.raises(KeyError):
        e.on('anything', lambda: print())
def test_events_constructor_empty():
    e = Events()
    e.on('anything', lambda: print())
def test_events_on():
    e = Events('foo')
    m = mock.MagicMock()
    e.on('foo', m)
    yield from e.emit('foo')
    assert m.called
def test_events_on_typecheck():
    e = Events('foo')
    with pytest.raises(ValueError):
        e.on('anything', 10)
def test_events_constructor_nonempty():
    e = Events('foo')
    with pytest.raises(KeyError):
        e.on('anything', lambda: print())
def test_events_constructor_empty():
    e = Events()
    e.on('anything', lambda: print())
def test_events_on():
    e = Events('foo')
    m = mock.MagicMock()
    e.on('foo', m)
    yield from e.emit('foo')
    assert m.called