from nose.tools import with_setup, raises from csdl import init, InitFlags from csdl.internal import SDLError from csdl.events import * def get_mm_event(): mm_event = MouseMotionEvent(type=EventType.MOUSEMOTION, window_id=1, state=1, x=31, y=14, x_rel=1, y_rel=1) return Event(type=EventType.MOUSEMOTION, motion=mm_event) def setup_clean_queue(): init(InitFlags.VIDEO) flush_events(EventType.FIRSTEVENT, EventType.LASTEVENT) @with_setup(setup_clean_queue) def test_has_events(): assert not has_events(EventType.FIRSTEVENT, EventType.LASTEVENT) push_event(get_mm_event()) assert has_events(EventType.FIRSTEVENT, EventType.LASTEVENT) @with_setup(setup_clean_queue) def test_has_event(): assert not has_event(EventType.MOUSEMOTION) push_event(get_mm_event()) assert has_event(EventType.MOUSEMOTION) @with_setup(setup_clean_queue) def test_poll_event(): # push 3 on push_event(get_mm_event()) push_event(get_mm_event()) push_event(get_mm_event()) # pull 4 off, last should be None first = poll_event() second = poll_event() third = poll_event() too_many = poll_event() assert first and second and third assert not too_many @with_setup(setup_clean_queue) def test_wait_event_timeout(): # push one on push_event(get_mm_event()) # pull two off, should timeout for second one first = wait_event(1) too_many = wait_event(1) assert first assert not too_many def test_register_events(): first = register_events(100) assert first == EventType.USEREVENT next = register_events(1) assert next == first+100 @raises(SDLError) def test_register_events_exception(): too_many = register_events(100000)