mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-20 00:51:42 +00:00
[wpilibc] Add more unit tests (#3494)
This commit is contained in:
@@ -7,11 +7,13 @@
|
||||
#include <hal/Accelerometer.h>
|
||||
#include <hal/HAL.h>
|
||||
|
||||
#include "callback_helpers/TestCallbackHelpers.h"
|
||||
#include "frc/BuiltInAccelerometer.h"
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
using namespace frc::sim;
|
||||
namespace frc::sim {
|
||||
|
||||
TEST(AcclerometerSimTests, TestActiveCallback) {
|
||||
TEST(AcclerometerSimTest, ActiveCallback) {
|
||||
HAL_Initialize(500, 0);
|
||||
|
||||
BuiltInAccelerometerSim sim;
|
||||
@@ -34,4 +36,103 @@ TEST(AcclerometerSimTests, TestActiveCallback) {
|
||||
|
||||
EXPECT_TRUE(wasTriggered);
|
||||
EXPECT_TRUE(lastValue);
|
||||
EXPECT_TRUE(sim.GetActive());
|
||||
}
|
||||
|
||||
TEST(AcclerometerSimTest, SetX) {
|
||||
HAL_Initialize(500, 0);
|
||||
BuiltInAccelerometerSim sim;
|
||||
sim.ResetData();
|
||||
|
||||
DoubleCallback callback;
|
||||
constexpr double kTestValue = 1.91;
|
||||
|
||||
BuiltInAccelerometer accel;
|
||||
auto cb = sim.RegisterXCallback(callback.GetCallback(), false);
|
||||
sim.SetX(kTestValue);
|
||||
EXPECT_EQ(kTestValue, accel.GetX());
|
||||
EXPECT_EQ(kTestValue, sim.GetX());
|
||||
EXPECT_TRUE(callback.WasTriggered());
|
||||
EXPECT_EQ(kTestValue, callback.GetLastValue());
|
||||
}
|
||||
|
||||
TEST(AcclerometerSimTest, SetY) {
|
||||
HAL_Initialize(500, 0);
|
||||
BuiltInAccelerometerSim sim;
|
||||
sim.ResetData();
|
||||
|
||||
DoubleCallback callback;
|
||||
constexpr double kTestValue = 2.29;
|
||||
|
||||
BuiltInAccelerometer accel;
|
||||
auto cb = sim.RegisterYCallback(callback.GetCallback(), false);
|
||||
sim.SetY(kTestValue);
|
||||
EXPECT_EQ(kTestValue, accel.GetY());
|
||||
EXPECT_EQ(kTestValue, sim.GetY());
|
||||
EXPECT_TRUE(callback.WasTriggered());
|
||||
EXPECT_EQ(kTestValue, callback.GetLastValue());
|
||||
}
|
||||
|
||||
TEST(AcclerometerSimTest, SetZ) {
|
||||
HAL_Initialize(500, 0);
|
||||
|
||||
BuiltInAccelerometer accel;
|
||||
BuiltInAccelerometerSim sim(accel);
|
||||
sim.ResetData();
|
||||
|
||||
DoubleCallback callback;
|
||||
constexpr double kTestValue = 3.405;
|
||||
|
||||
auto cb = sim.RegisterZCallback(callback.GetCallback(), false);
|
||||
sim.SetZ(kTestValue);
|
||||
EXPECT_EQ(kTestValue, accel.GetZ());
|
||||
EXPECT_EQ(kTestValue, sim.GetZ());
|
||||
EXPECT_TRUE(callback.WasTriggered());
|
||||
EXPECT_EQ(kTestValue, callback.GetLastValue());
|
||||
}
|
||||
|
||||
TEST(AcclerometerSimTest, SetRange) {
|
||||
HAL_Initialize(500, 0);
|
||||
|
||||
BuiltInAccelerometerSim sim;
|
||||
sim.ResetData();
|
||||
|
||||
EnumCallback callback;
|
||||
|
||||
Accelerometer::Range range = Accelerometer::kRange_4G;
|
||||
auto cb = sim.RegisterRangeCallback(callback.GetCallback(), false);
|
||||
BuiltInAccelerometer accel(range);
|
||||
EXPECT_TRUE(callback.WasTriggered());
|
||||
EXPECT_EQ(static_cast<int>(range), sim.GetRange());
|
||||
EXPECT_EQ(static_cast<int>(range), callback.GetLastValue());
|
||||
|
||||
// 2G
|
||||
callback.Reset();
|
||||
range = Accelerometer::kRange_2G;
|
||||
accel.SetRange(range);
|
||||
EXPECT_TRUE(callback.WasTriggered());
|
||||
EXPECT_EQ(static_cast<int>(range), sim.GetRange());
|
||||
EXPECT_EQ(static_cast<int>(range), callback.GetLastValue());
|
||||
|
||||
// 4G
|
||||
callback.Reset();
|
||||
range = Accelerometer::kRange_4G;
|
||||
accel.SetRange(range);
|
||||
EXPECT_TRUE(callback.WasTriggered());
|
||||
EXPECT_EQ(static_cast<int>(range), sim.GetRange());
|
||||
EXPECT_EQ(static_cast<int>(range), callback.GetLastValue());
|
||||
|
||||
// 8G
|
||||
callback.Reset();
|
||||
range = Accelerometer::kRange_8G;
|
||||
accel.SetRange(range);
|
||||
EXPECT_TRUE(callback.WasTriggered());
|
||||
EXPECT_EQ(static_cast<int>(range), sim.GetRange());
|
||||
EXPECT_EQ(static_cast<int>(range), callback.GetLastValue());
|
||||
|
||||
// 16G - Not supported
|
||||
callback.Reset();
|
||||
EXPECT_THROW(accel.SetRange(Accelerometer::kRange_16G), std::runtime_error);
|
||||
EXPECT_FALSE(callback.WasTriggered());
|
||||
}
|
||||
} // namespace frc::sim
|
||||
|
||||
Reference in New Issue
Block a user