Skip to content

Commit 767ecf8

Browse files
authored
Merge pull request #123 from robotpy/joy-direction
wpilib: Restore Joystick getDirection methods
2 parents d04bea2 + 9956693 commit 767ecf8

File tree

2 files changed

+149
-3
lines changed

2 files changed

+149
-3
lines changed

subprojects/robotpy-wpilib/gen/Joystick.yml

+5-3
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,9 @@ classes:
4040
GetTopReleased:
4141
Top:
4242
GetMagnitude:
43-
GetDirectionRadians:
44-
GetDirectionDegrees:
4543
GetDirection:
46-
ignore: true
44+
rename: getDirectionRadians
45+
inline_code: |
46+
.def("getDirectionDegrees", [](const Joystick &self) -> units::degree_t {
47+
return self.GetDirection();
48+
})
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
import math
2+
3+
from wpilib import Joystick
4+
from wpilib.simulation import JoystickSim
5+
6+
7+
def test_getX() -> None:
8+
joy = Joystick(1)
9+
joysim = JoystickSim(joy)
10+
11+
joysim.setX(0.25)
12+
joysim.notifyNewData()
13+
assert math.isclose(joy.getX(), 0.25)
14+
15+
joysim.setX(0)
16+
joysim.notifyNewData()
17+
assert math.isclose(joy.getX(), 0.0)
18+
19+
20+
def test_getY() -> None:
21+
joy = Joystick(1)
22+
joysim = JoystickSim(joy)
23+
24+
joysim.setY(0.25)
25+
joysim.notifyNewData()
26+
assert math.isclose(joy.getY(), 0.25)
27+
28+
joysim.setY(0)
29+
joysim.notifyNewData()
30+
assert math.isclose(joy.getY(), 0.0)
31+
32+
33+
def test_getZ() -> None:
34+
joy = Joystick(1)
35+
joysim = JoystickSim(joy)
36+
37+
joysim.setZ(0.25)
38+
joysim.notifyNewData()
39+
assert math.isclose(joy.getZ(), 0.25)
40+
41+
joysim.setZ(0)
42+
joysim.notifyNewData()
43+
assert math.isclose(joy.getZ(), 0.0)
44+
45+
46+
def test_getTwist() -> None:
47+
joy = Joystick(1)
48+
joysim = JoystickSim(joy)
49+
50+
joysim.setTwist(0.25)
51+
joysim.notifyNewData()
52+
assert math.isclose(joy.getTwist(), 0.25)
53+
54+
joysim.setTwist(0)
55+
joysim.notifyNewData()
56+
assert math.isclose(joy.getTwist(), 0.0)
57+
58+
59+
def test_getThrottle() -> None:
60+
joy = Joystick(1)
61+
joysim = JoystickSim(joy)
62+
63+
joysim.setThrottle(0.25)
64+
joysim.notifyNewData()
65+
assert math.isclose(joy.getThrottle(), 0.25)
66+
67+
joysim.setThrottle(0)
68+
joysim.notifyNewData()
69+
assert math.isclose(joy.getThrottle(), 0.0)
70+
71+
72+
def test_getTrigger() -> None:
73+
joy = Joystick(1)
74+
joysim = JoystickSim(joy)
75+
76+
joysim.setTrigger(True)
77+
joysim.notifyNewData()
78+
assert joy.getTrigger()
79+
80+
joysim.setTrigger(False)
81+
joysim.notifyNewData()
82+
assert not joy.getTrigger()
83+
84+
85+
def test_getTop() -> None:
86+
joy = Joystick(1)
87+
joysim = JoystickSim(joy)
88+
89+
joysim.setTop(True)
90+
joysim.notifyNewData()
91+
assert joy.getTop()
92+
93+
joysim.setTop(False)
94+
joysim.notifyNewData()
95+
assert not joy.getTop()
96+
97+
98+
def test_getMagnitude() -> None:
99+
joy = Joystick(1)
100+
joysim = JoystickSim(joy)
101+
102+
# X Only
103+
joysim.setX(0.5)
104+
joysim.setY(0.0)
105+
joysim.notifyNewData()
106+
assert math.isclose(joy.getMagnitude(), 0.5)
107+
108+
# Y Only
109+
joysim.setX(0.0)
110+
joysim.setY(-0.5)
111+
joysim.notifyNewData()
112+
assert math.isclose(joy.getMagnitude(), 0.5)
113+
114+
# Both
115+
joysim.setX(0.5)
116+
joysim.setY(-0.5)
117+
joysim.notifyNewData()
118+
assert math.isclose(joy.getMagnitude(), 0.70710678118)
119+
120+
121+
def test_getDirection() -> None:
122+
joy = Joystick(1)
123+
joysim = JoystickSim(joy)
124+
125+
# X Only
126+
joysim.setX(0.5)
127+
joysim.setY(0.0)
128+
joysim.notifyNewData()
129+
assert math.isclose(joy.getDirectionDegrees(), 90)
130+
assert math.isclose(joy.getDirectionRadians(), math.radians(90))
131+
132+
# Y Only
133+
joysim.setX(0.0)
134+
joysim.setY(-0.5)
135+
joysim.notifyNewData()
136+
assert math.isclose(joy.getDirectionDegrees(), 0)
137+
assert math.isclose(joy.getDirectionRadians(), math.radians(0))
138+
139+
# Both
140+
joysim.setX(0.5)
141+
joysim.setY(-0.5)
142+
joysim.notifyNewData()
143+
assert math.isclose(joy.getDirectionDegrees(), 45)
144+
assert math.isclose(joy.getDirectionRadians(), math.radians(45))

0 commit comments

Comments
 (0)