Files
allwpilib/wpilibc/src/test/native/cpp/JoystickTest.cpp

69 lines
1.7 KiB
C++

// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
#include "frc/Joystick.h" // NOLINT(build/include_order)
#include "JoystickTestMacros.h"
#include "frc/simulation/JoystickSim.h"
#include "gtest/gtest.h"
using namespace frc;
// https://github.com/wpilibsuite/allwpilib/issues/1550
TEST(JoystickTest, FastDeconstruction) {
Joystick joystick{0};
}
AXIS_TEST(Joystick, X)
AXIS_TEST(Joystick, Y)
AXIS_TEST(Joystick, Z)
AXIS_TEST(Joystick, Throttle)
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);
}