git reimport
This commit is contained in:
51
tests/zvk/event/test_registration.py
Normal file
51
tests/zvk/event/test_registration.py
Normal file
@@ -0,0 +1,51 @@
|
||||
import asyncio
|
||||
|
||||
import pytest
|
||||
|
||||
from zvk.bot.event_type import BotEventType
|
||||
from zvk.event.consumer import event_consumer
|
||||
from zvk.event.event import Event
|
||||
from zvk.event.periodic import periodic
|
||||
from zvk.event.queue import EventQueue
|
||||
|
||||
|
||||
@periodic(period_secs=0.1)
|
||||
async def loop1():
|
||||
yield Event('inc')
|
||||
|
||||
|
||||
@periodic(period_secs=0.1)
|
||||
async def loop2():
|
||||
yield Event('inc')
|
||||
|
||||
|
||||
@event_consumer(consumes=['inc'])
|
||||
async def inc(counter):
|
||||
counter[0] += 1
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_event_cancellation():
|
||||
event_queue = EventQueue()
|
||||
|
||||
counter = [0]
|
||||
|
||||
event_queue.register_consumer(loop1)
|
||||
event_queue.register_consumer(loop2)
|
||||
event_queue.register_consumer(inc)
|
||||
|
||||
starting_events = [Event(BotEventType.STARTUP, counter=counter)]
|
||||
|
||||
queue_task = asyncio.create_task(event_queue.run(starting_events))
|
||||
|
||||
await asyncio.sleep(0.15)
|
||||
assert counter[0] == 4
|
||||
|
||||
event_queue.deregister_consumer(loop2)
|
||||
await asyncio.sleep(0.2)
|
||||
assert counter[0] == 6
|
||||
|
||||
event_queue.omae_wa_mou_shindeiru()
|
||||
await queue_task
|
||||
|
||||
assert counter[0] == 6
|
Reference in New Issue
Block a user