Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions subprojects/robotpy-wpilib/gen/Joystick.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,9 @@ classes:
GetTopReleased:
Top:
GetMagnitude:
GetDirectionRadians:
GetDirectionDegrees:
GetDirection:
ignore: true
rename: getDirectionRadians
inline_code: |
.def("getDirectionDegrees", [](const Joystick &self) -> units::degree_t {
return self.GetDirection();
})
144 changes: 144 additions & 0 deletions subprojects/robotpy-wpilib/tests/test_joystick.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
import math

from wpilib import Joystick
from wpilib.simulation import JoystickSim


def test_getX() -> None:
joy = Joystick(1)
joysim = JoystickSim(joy)

joysim.setX(0.25)
joysim.notifyNewData()
assert math.isclose(joy.getX(), 0.25)

joysim.setX(0)
joysim.notifyNewData()
assert math.isclose(joy.getX(), 0.0)


def test_getY() -> None:
joy = Joystick(1)
joysim = JoystickSim(joy)

joysim.setY(0.25)
joysim.notifyNewData()
assert math.isclose(joy.getY(), 0.25)

joysim.setY(0)
joysim.notifyNewData()
assert math.isclose(joy.getY(), 0.0)


def test_getZ() -> None:
joy = Joystick(1)
joysim = JoystickSim(joy)

joysim.setZ(0.25)
joysim.notifyNewData()
assert math.isclose(joy.getZ(), 0.25)

joysim.setZ(0)
joysim.notifyNewData()
assert math.isclose(joy.getZ(), 0.0)


def test_getTwist() -> None:
joy = Joystick(1)
joysim = JoystickSim(joy)

joysim.setTwist(0.25)
joysim.notifyNewData()
assert math.isclose(joy.getTwist(), 0.25)

joysim.setTwist(0)
joysim.notifyNewData()
assert math.isclose(joy.getTwist(), 0.0)


def test_getThrottle() -> None:
joy = Joystick(1)
joysim = JoystickSim(joy)

joysim.setThrottle(0.25)
joysim.notifyNewData()
assert math.isclose(joy.getThrottle(), 0.25)

joysim.setThrottle(0)
joysim.notifyNewData()
assert math.isclose(joy.getThrottle(), 0.0)


def test_getTrigger() -> None:
joy = Joystick(1)
joysim = JoystickSim(joy)

joysim.setTrigger(True)
joysim.notifyNewData()
assert joy.getTrigger()

joysim.setTrigger(False)
joysim.notifyNewData()
assert not joy.getTrigger()


def test_getTop() -> None:
joy = Joystick(1)
joysim = JoystickSim(joy)

joysim.setTop(True)
joysim.notifyNewData()
assert joy.getTop()

joysim.setTop(False)
joysim.notifyNewData()
assert not joy.getTop()


def test_getMagnitude() -> None:
joy = Joystick(1)
joysim = JoystickSim(joy)

# X Only
joysim.setX(0.5)
joysim.setY(0.0)
joysim.notifyNewData()
assert math.isclose(joy.getMagnitude(), 0.5)

# Y Only
joysim.setX(0.0)
joysim.setY(-0.5)
joysim.notifyNewData()
assert math.isclose(joy.getMagnitude(), 0.5)

# Both
joysim.setX(0.5)
joysim.setY(-0.5)
joysim.notifyNewData()
assert math.isclose(joy.getMagnitude(), 0.70710678118)


def test_getDirection() -> None:
joy = Joystick(1)
joysim = JoystickSim(joy)

# X Only
joysim.setX(0.5)
joysim.setY(0.0)
joysim.notifyNewData()
assert math.isclose(joy.getDirectionDegrees(), 90)
assert math.isclose(joy.getDirectionRadians(), math.radians(90))

# Y Only
joysim.setX(0.0)
joysim.setY(-0.5)
joysim.notifyNewData()
assert math.isclose(joy.getDirectionDegrees(), 0)
assert math.isclose(joy.getDirectionRadians(), math.radians(0))

# Both
joysim.setX(0.5)
joysim.setY(-0.5)
joysim.notifyNewData()
assert math.isclose(joy.getDirectionDegrees(), 45)
assert math.isclose(joy.getDirectionRadians(), math.radians(45))
Loading