Skip to content

Commit 243072c

Browse files
authored
most tests
1 parent 4028320 commit 243072c

File tree

4 files changed

+583
-0
lines changed

4 files changed

+583
-0
lines changed
Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
import commands2
2+
import commands2.button
3+
4+
from util import Counter
5+
import pytest
6+
7+
8+
class MyButton(commands2.button.Button):
9+
def __init__(self):
10+
super().__init__(self.isPressed)
11+
self.pressed = False
12+
13+
def isPressed(self) -> bool:
14+
return self.pressed
15+
16+
def setPressed(self, value: bool):
17+
self.pressed = value
18+
19+
20+
def test_when_pressed_coroutine(scheduler: commands2.CommandScheduler):
21+
button = MyButton()
22+
23+
class state: pass
24+
state.executed = False
25+
def cmd1():
26+
state.executed = True
27+
return
28+
yield
29+
30+
button.setPressed(False)
31+
button.whenPressed(cmd1)
32+
scheduler.run()
33+
34+
assert not state.executed
35+
36+
button.setPressed(True)
37+
scheduler.run()
38+
scheduler.run()
39+
40+
assert state.executed
41+
42+
43+
def test_when_released_coroutine(scheduler: commands2.CommandScheduler):
44+
button = MyButton()
45+
46+
class state: pass
47+
state.executed = False
48+
def cmd1():
49+
state.executed = True
50+
return
51+
yield
52+
53+
button.setPressed(True)
54+
button.whenReleased(cmd1)
55+
scheduler.run()
56+
57+
assert not state.executed
58+
59+
button.setPressed(False)
60+
scheduler.run()
61+
scheduler.run()
62+
63+
assert state.executed
64+
65+
def test_while_held_coroutine(scheduler: commands2.CommandScheduler):
66+
button = MyButton()
67+
68+
class state: pass
69+
state.executed = 0
70+
def cmd1():
71+
state.executed += 1
72+
return
73+
yield
74+
75+
button.setPressed(False)
76+
button.whileHeld(cmd1)
77+
scheduler.run()
78+
79+
assert not state.executed
80+
81+
button.setPressed(True)
82+
scheduler.run()
83+
scheduler.run()
84+
assert state.executed == 2
85+
86+
button.setPressed(False)
87+
scheduler.run()
88+
89+
assert state.executed == 2
90+
91+
def test_when_held_coroutine(scheduler: commands2.CommandScheduler):
92+
button = MyButton()
93+
94+
class state: pass
95+
state.executed = 0
96+
def cmd1():
97+
while True:
98+
state.executed += 1
99+
yield
100+
101+
button.setPressed(False)
102+
button.whenHeld(cmd1())
103+
scheduler.run()
104+
105+
assert not state.executed
106+
107+
button.setPressed(True)
108+
scheduler.run()
109+
scheduler.run()
110+
assert state.executed == 2
111+
112+
button.setPressed(False)
113+
114+
assert state.executed == 2
115+
116+
def test_toggle_when_pressed_coroutine(scheduler: commands2.CommandScheduler):
117+
button = MyButton()
118+
119+
class state: pass
120+
state.executed = 0
121+
def cmd1():
122+
while True:
123+
state.executed += 1
124+
yield
125+
126+
button.setPressed(False)
127+
128+
button.toggleWhenPressed(cmd1)
129+
scheduler.run()
130+
131+
assert not state.executed
132+
133+
button.setPressed(True)
134+
scheduler.run()
135+
136+
assert state.executed
137+
138+
139+
def test_function_bindings_coroutine(scheduler: commands2.CommandScheduler):
140+
141+
buttonWhenPressed = MyButton()
142+
buttonWhileHeld = MyButton()
143+
buttonWhenReleased = MyButton()
144+
145+
buttonWhenPressed.setPressed(False)
146+
buttonWhileHeld.setPressed(True)
147+
buttonWhenReleased.setPressed(True)
148+
149+
counter = Counter()
150+
151+
def increment():
152+
counter.increment()
153+
return
154+
yield
155+
156+
buttonWhenPressed.whenPressed(increment)
157+
buttonWhileHeld.whileHeld(increment)
158+
buttonWhenReleased.whenReleased(increment)
159+
160+
scheduler.run()
161+
buttonWhenPressed.setPressed(True)
162+
buttonWhenReleased.setPressed(False)
163+
scheduler.run()
164+
165+
assert counter.value == 4

tests/test_button_coroutines.py

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
import commands2
2+
import commands2.button
3+
4+
from util import Counter
5+
import pytest
6+
7+
8+
class MyButton(commands2.button.Button):
9+
def __init__(self):
10+
super().__init__(self.isPressed)
11+
self.pressed = False
12+
13+
def isPressed(self) -> bool:
14+
return self.pressed
15+
16+
def setPressed(self, value: bool):
17+
self.pressed = value
18+
19+
20+
def test_when_pressed_coroutine(scheduler: commands2.CommandScheduler):
21+
button = MyButton()
22+
23+
class state: pass
24+
state.executed = False
25+
def cmd1():
26+
state.executed = True
27+
return
28+
yield
29+
30+
button.setPressed(False)
31+
button.whenPressed(cmd1())
32+
scheduler.run()
33+
34+
assert not state.executed
35+
36+
button.setPressed(True)
37+
scheduler.run()
38+
scheduler.run()
39+
40+
assert state.executed
41+
42+
43+
def test_when_released_coroutine(scheduler: commands2.CommandScheduler):
44+
button = MyButton()
45+
46+
class state: pass
47+
state.executed = False
48+
def cmd1():
49+
state.executed = True
50+
return
51+
yield
52+
53+
button.setPressed(True)
54+
button.whenReleased(cmd1())
55+
scheduler.run()
56+
57+
assert not state.executed
58+
59+
button.setPressed(False)
60+
scheduler.run()
61+
scheduler.run()
62+
63+
assert state.executed
64+
65+
@pytest.mark.xfail(strict=True)
66+
def test_while_held_coroutine(scheduler: commands2.CommandScheduler):
67+
button = MyButton()
68+
69+
class state: pass
70+
state.executed = 0
71+
def cmd1():
72+
state.executed += 1
73+
return
74+
yield
75+
76+
button.setPressed(False)
77+
button.whileHeld(cmd1())
78+
scheduler.run()
79+
80+
assert not state.executed
81+
82+
button.setPressed(True)
83+
scheduler.run()
84+
scheduler.run()
85+
assert state.executed == 2
86+
87+
button.setPressed(False)
88+
scheduler.run()
89+
90+
assert state.executed == 2
91+
92+
def test_when_held_coroutine(scheduler: commands2.CommandScheduler):
93+
button = MyButton()
94+
95+
class state: pass
96+
state.executed = 0
97+
def cmd1():
98+
while True:
99+
state.executed += 1
100+
yield
101+
102+
button.setPressed(False)
103+
button.whenHeld(cmd1())
104+
scheduler.run()
105+
106+
assert not state.executed
107+
108+
button.setPressed(True)
109+
scheduler.run()
110+
scheduler.run()
111+
assert state.executed == 2
112+
113+
button.setPressed(False)
114+
115+
assert state.executed == 2
116+
117+
def test_toggle_when_pressed_coroutine(scheduler: commands2.CommandScheduler):
118+
button = MyButton()
119+
120+
class state: pass
121+
state.executed = 0
122+
def cmd1():
123+
while True:
124+
state.executed += 1
125+
yield
126+
127+
button.setPressed(False)
128+
129+
button.toggleWhenPressed(cmd1())
130+
scheduler.run()
131+
132+
assert not state.executed
133+
134+
button.setPressed(True)
135+
scheduler.run()
136+
137+
assert state.executed
138+
139+
@pytest.mark.xfail(strict=True)
140+
def test_function_bindings_coroutine(scheduler: commands2.CommandScheduler):
141+
142+
buttonWhenPressed = MyButton()
143+
buttonWhileHeld = MyButton()
144+
buttonWhenReleased = MyButton()
145+
146+
buttonWhenPressed.setPressed(False)
147+
buttonWhileHeld.setPressed(True)
148+
buttonWhenReleased.setPressed(True)
149+
150+
counter = Counter()
151+
152+
def increment():
153+
counter.increment()
154+
return
155+
yield
156+
157+
buttonWhenPressed.whenPressed(increment())
158+
buttonWhileHeld.whileHeld(increment())
159+
buttonWhenReleased.whenReleased(increment())
160+
161+
scheduler.run()
162+
buttonWhenPressed.setPressed(True)
163+
buttonWhenReleased.setPressed(False)
164+
scheduler.run()
165+
166+
assert counter.value == 4

0 commit comments

Comments
 (0)