Skip to content

Commit 28c362b

Browse files
committed
Add tests for event handlers decorator syntax
1 parent 6cbfa91 commit 28c362b

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed

test/aio/test_window.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,35 @@ async def generate_events():
6565
for e in events:
6666
assert e.change == 'focus'
6767

68+
@pytest.mark.asyncio
69+
async def test_detailed_window_event_decorator(self, i3):
70+
events = []
71+
72+
async def generate_events():
73+
win1 = self.open_window()
74+
win2 = self.open_window()
75+
await i3.command(f'[id={win1}] kill; [id={win2}] kill')
76+
# TODO sync protocol
77+
await asyncio.sleep(0.01)
78+
i3.main_quit()
79+
80+
@i3.on(Event.WINDOW_NEW)
81+
@i3.on(Event.WINDOW_FOCUS)
82+
async def on_window(i3, e):
83+
nonlocal events
84+
events.append(e)
85+
86+
asyncio.ensure_future(generate_events())
87+
await i3.main()
88+
89+
assert len(events)
90+
for e in events:
91+
assert e.change in ['new', 'focus']
92+
assert len([e for e in events if e.change == 'new'])
93+
assert len([e for e in events if e.change == 'focus'])
94+
95+
i3.off(on_window)
96+
6897
@pytest.mark.asyncio
6998
async def test_marks(self, i3):
7099
await self.fresh_workspace()

test/test_window.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,34 @@ def on_window(i3, e):
6161
for e in events:
6262
assert e.change == 'focus'
6363

64+
def test_detailed_window_event_decorator(self, i3):
65+
events = []
66+
67+
def generate_events():
68+
win1 = self.open_window()
69+
win2 = self.open_window()
70+
i3.command(f'[id={win1}] kill; [id={win2}] kill')
71+
# TODO sync protocol
72+
time.sleep(0.01)
73+
i3.main_quit()
74+
75+
@i3.on(Event.WINDOW_NEW)
76+
@i3.on(Event.WINDOW_FOCUS)
77+
def on_window(i3, e):
78+
nonlocal events
79+
events.append(e)
80+
81+
Timer(0.01, generate_events).start()
82+
i3.main(timeout=2)
83+
84+
assert len(events)
85+
for e in events:
86+
assert e.change in ['new', 'focus']
87+
assert len([e for e in events if e.change == 'new'])
88+
assert len([e for e in events if e.change == 'focus'])
89+
90+
i3.off(on_window)
91+
6492
def test_resize(self, i3):
6593
self.fresh_workspace()
6694
self.open_window()

0 commit comments

Comments
 (0)