forked from robotpy/pyfrc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathold_test_tests.py
162 lines (116 loc) · 3.91 KB
/
old_test_tests.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
import contextlib
import hal
import wpilib
import pytest
from pyfrc.test_support.pytest_plugin import PyFrcPlugin
from pyfrc.tests.basic import test_practice as _test_practice
@contextlib.contextmanager
def get_plugin(cls):
wpilib.DriverStation._reset()
plugin = PyFrcPlugin(cls, None, None)
plugin.pytest_runtest_setup()
try:
yield plugin, plugin.get_control()
finally:
plugin.pytest_runtest_teardown(None)
class SampleRobotInit(wpilib.SampleRobot):
def robotInit(self):
assert False
class SampleAutonomous(wpilib.SampleRobot):
def autonomous(self):
assert False
class SampleTeleop(wpilib.SampleRobot):
def operatorControl(self):
assert False
class IterativeRobotInit(wpilib.IterativeRobot):
def robotInit(self):
assert False
class IterativeAutoInit(wpilib.IterativeRobot):
def autonomousInit(self):
assert False
class IterativeAutoPeriodic(wpilib.IterativeRobot):
def autonomousPeriodic(self):
assert False
class IterativeTeleopInit(wpilib.IterativeRobot):
def teleopInit(self):
assert False
class IterativeTeleopPeriodic(wpilib.IterativeRobot):
def teleopPeriodic(self):
assert False
@pytest.mark.parametrize(
"cls",
[
SampleRobotInit,
SampleAutonomous,
IterativeRobotInit,
IterativeAutoInit,
IterativeAutoPeriodic,
],
)
def test_auto_failure(cls):
"""Ensure that failures can be detected in autonomous mode"""
with get_plugin(cls) as (plugin, control):
control.set_autonomous(enabled=True)
with pytest.raises(AssertionError):
control.run_test(lambda tm: tm < 15)
@pytest.mark.parametrize(
"cls",
[
SampleRobotInit,
SampleTeleop,
IterativeRobotInit,
IterativeTeleopInit,
IterativeTeleopPeriodic,
],
)
def test_teleop_failure(cls):
"""Ensure that failures can be detected in teleop mode"""
with get_plugin(cls) as (plugin, control):
control.set_operator_control(enabled=True)
with pytest.raises(AssertionError):
control.run_test(lambda tm: tm < 15)
class Iterative(wpilib.IterativeRobot):
def robotInit(self):
self.did_robot_init = True
def disabledInit(self):
self.did_disabled_init = True
def disabledPeriodic(self):
self.did_disabled_periodic = True
def autonomousInit(self):
self.did_auto_init = True
def autonomousPeriodic(self):
self.did_auto_periodic = True
def teleopInit(self):
self.did_teleop_init = True
def teleopPeriodic(self):
self.did_teleop_periodic = True
def test_iterative():
"""Ensure that all states of the iterative robot run"""
with get_plugin(Iterative) as (plugin, control):
_test_practice(plugin.get_control(), plugin.get_fake_time(), plugin.get_robot())
robot = plugin.get_robot()
assert robot.did_robot_init == True
assert robot.did_disabled_init == True
assert robot.did_disabled_periodic == True
assert robot.did_auto_init == True
assert robot.did_auto_periodic == True
assert robot.did_teleop_init == True
assert robot.did_teleop_periodic == True
class Sample(wpilib.SampleRobot):
def robotInit(self):
self.did_robot_init = True
def disabled(self):
self.did_robot_disabled = True
def autonomous(self):
self.did_autonomous = True
def operatorControl(self):
self.did_operator = True
def test_sample():
"""Ensure that all states of the sample robot run"""
with get_plugin(Sample) as (plugin, control):
_test_practice(plugin.get_control(), plugin.get_fake_time(), plugin.get_robot())
robot = plugin.get_robot()
assert robot.did_robot_init == True
assert robot.did_robot_disabled == True
assert robot.did_autonomous == True
assert robot.did_operator == True