89 lines
1.9 KiB
Python
89 lines
1.9 KiB
Python
import pytest
|
|
|
|
from i3pystatus import IntervalModule
|
|
import time
|
|
|
|
left_click = 1
|
|
right_click = 3
|
|
scroll_up = 4
|
|
scroll_down = 5
|
|
|
|
|
|
@pytest.mark.parametrize("events, expected", [
|
|
# Fast click
|
|
(((0, left_click),),
|
|
'no action'),
|
|
|
|
# Slow click
|
|
(((0.4, left_click),),
|
|
'leftclick'),
|
|
|
|
# Slow double click
|
|
(((0.4, left_click),
|
|
(0.4, left_click),),
|
|
'leftclick'),
|
|
|
|
# Fast double click
|
|
(((0.2, left_click),
|
|
(0, left_click),),
|
|
'doubleleftclick'),
|
|
|
|
# Fast double click + Slow click
|
|
(((0.2, left_click),
|
|
(0, left_click),
|
|
(0.3, left_click),),
|
|
'leftclick'),
|
|
|
|
# Alternate double click
|
|
(((0.2, left_click),
|
|
(0, right_click),),
|
|
'leftclick'),
|
|
|
|
# Slow click, no callback
|
|
(((0.4, right_click),),
|
|
'no action'),
|
|
|
|
# Fast double click
|
|
(((0.2, right_click),
|
|
(0, right_click),),
|
|
'doublerightclick'),
|
|
|
|
# Fast double click
|
|
(((0, scroll_down),
|
|
(0, scroll_down),),
|
|
'downscroll'),
|
|
|
|
# Slow click
|
|
(((0.4, scroll_up),),
|
|
'upscroll'),
|
|
|
|
# Fast double click
|
|
(((0, scroll_up),
|
|
(0, scroll_up),),
|
|
'doubleupscroll'),
|
|
])
|
|
def test_clicks(events, expected):
|
|
class TestClicks(IntervalModule):
|
|
def set_action(self, action):
|
|
self._action = action
|
|
|
|
on_leftclick = [set_action, "leftclick"]
|
|
on_doubleleftclick = [set_action, "doubleleftclick"]
|
|
|
|
# on_rightclick = [set_action, "rightclick"]
|
|
on_doublerightclick = [set_action, "doublerightclick"]
|
|
|
|
on_upscroll = [set_action, "upscroll"]
|
|
on_doubleupscroll = [set_action, "doubleupscroll"]
|
|
|
|
on_downscroll = [set_action, "downscroll"]
|
|
# on_doubledownscroll = [set_action, "doubledownscroll"]
|
|
|
|
_action = 'no action'
|
|
|
|
m = TestClicks()
|
|
for sl, ev in events:
|
|
m.on_click(ev)
|
|
time.sleep(sl)
|
|
assert m._action == expected
|