[wpilibc] Add unit-aware Joystick.GetDirection() (#5319)

This commit is contained in:
Ryan Blue
2023-05-26 00:43:52 -04:00
committed by GitHub
parent 073d19cb69
commit 282c032b60
3 changed files with 65 additions and 0 deletions

View File

@@ -23,3 +23,46 @@ AXIS_TEST(Joystick, Twist)
BUTTON_TEST(Joystick, Trigger)
BUTTON_TEST(Joystick, Top)
TEST(JoystickTest, GetMagnitude) {
Joystick joy{1};
sim::JoystickSim joysim{1};
joysim.SetX(0.5);
joysim.SetY(0);
joysim.NotifyNewData();
ASSERT_NEAR(0.5, joy.GetMagnitude(), 0.001);
joysim.SetX(0);
joysim.SetY(-.5);
joysim.NotifyNewData();
ASSERT_NEAR(0.5, joy.GetMagnitude(), 0.001);
joysim.SetX(0.5);
joysim.SetY(-0.5);
joysim.NotifyNewData();
ASSERT_NEAR(0.70710678118, joy.GetMagnitude(), 0.001);
}
TEST(JoystickTest, GetDirection) {
Joystick joy{1};
sim::JoystickSim joysim{1};
joysim.SetX(0.5);
joysim.SetY(0);
joysim.NotifyNewData();
ASSERT_NEAR(units::radian_t{90_deg}.value(), joy.GetDirection().value(),
0.001);
joysim.SetX(0);
joysim.SetY(-.5);
joysim.NotifyNewData();
ASSERT_NEAR(units::radian_t{0_deg}.value(), joy.GetDirection().value(),
0.001);
joysim.SetX(0.5);
joysim.SetY(-0.5);
joysim.NotifyNewData();
ASSERT_NEAR(units::radian_t{45_deg}.value(), joy.GetDirection().value(),
0.001);
}