File tree Expand file tree Collapse file tree 2 files changed +57
-0
lines changed Expand file tree Collapse file tree 2 files changed +57
-0
lines changed Original file line number Diff line number Diff line change @@ -65,6 +65,35 @@ async def generate_events():
65
65
for e in events :
66
66
assert e .change == 'focus'
67
67
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
+
68
97
@pytest .mark .asyncio
69
98
async def test_marks (self , i3 ):
70
99
await self .fresh_workspace ()
Original file line number Diff line number Diff line change @@ -61,6 +61,34 @@ def on_window(i3, e):
61
61
for e in events :
62
62
assert e .change == 'focus'
63
63
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
+
64
92
def test_resize (self , i3 ):
65
93
self .fresh_workspace ()
66
94
self .open_window ()
You can’t perform that action at this time.
0 commit comments