Beispiel #1
0
    async def test_once_emit_after_remove(self) -> None:
        mock = Mock()

        emitter.on(Event, Global, mock, once=True)
        emitter.remove(None, Global)

        e = Event("0")
        results = await asyncio.gather(
            emitter.emit(e, Global),
            emitter.emit(e, Global),
            emitter.emit(e, Global),
            emitter.emit(e, Global),
            emitter.emit(e, Global),
        )
        self.assertListEqual([False, False, False, False, False], results)
        mock.assert_not_called()
Beispiel #2
0
    async def test_once_emit_before_remove(self) -> None:
        e = Event("0")
        mock = Mock()

        emitter.on(Event, Global, mock, once=True)
        emit_task = asyncio.gather(
            emitter.emit(e, Global),
            emitter.emit(e, Global),
            emitter.emit(e, Global),
            emitter.emit(e, Global),
            emitter.emit(e, Global),
        )
        emitter.remove(None, Global)

        results = await emit_task
        self.assertIn(True, results)
        results.remove(True)
        self.assertListEqual([False, False, False, False], results)
        mock.assert_called_once_with(e)
Beispiel #3
0
def emit(segments: List[emitter.Segment]) -> bytes:
    ret = binascii.unhexlify(b"cf702b56")
    for segment in segments:
        handled_segment = False
        for emitter in emitters:
            if not emitter.handles(segment):
                continue
            handled_segment = True
            ret += emitter.emit(segment)
            break
        if not handled_segment:
            raise ValueError("This is a compiler bug.")
    return ret
Beispiel #4
0
    def test_emit_sync(self) -> None:
        mock = Mock()

        @emitter.on(Event, Global)
        def listener(event: Event) -> None:
            self.assertEqual("Wowow", event.data)
            mock(event)

        @emitter.on(Event, Global)
        async def listener(event: Event) -> None:
            await asyncio.sleep(0)
            self.assertEqual("Wowow", event.data)
            mock(event)

        e = Event("Wowow")
        self.assertTrue(emitter.emit(e, Global, sync=True))

        mock.assert_called_once_with(e)