[wpilib] Rewrite DutyCycleEncoder and AnalogEncoder (#6398)

This commit is contained in:
Thad House
2024-05-24 11:53:56 -07:00
committed by GitHub
parent 294c9946ae
commit d05c7c125b
18 changed files with 638 additions and 883 deletions

View File

@@ -17,12 +17,10 @@
TEST(AnalogEncoderSimTest, Basic) {
frc::AnalogInput ai(0);
frc::AnalogEncoder encoder{ai};
frc::AnalogEncoder encoder{ai, 360, 0};
frc::sim::AnalogEncoderSim encoderSim{encoder};
encoderSim.SetPosition(180_deg);
EXPECT_NEAR(encoder.Get().value(), 0.5, 1E-8);
EXPECT_NEAR(encoderSim.GetTurns().value(), 0.5, 1E-8);
EXPECT_NEAR(encoderSim.GetPosition().Radians().value(), std::numbers::pi,
1E-8);
encoderSim.Set(180);
EXPECT_NEAR(encoder.Get(), 180, 1E-8);
EXPECT_NEAR(encoderSim.Get(), 180, 1E-8);
}

View File

@@ -15,42 +15,14 @@ namespace frc::sim {
TEST(DutyCycleEncoderSimTest, Set) {
HAL_Initialize(500, 0);
DutyCycleEncoder enc{0};
DutyCycleEncoder enc{0, 10, 0};
DutyCycleEncoderSim sim(enc);
constexpr units::turn_t kTestValue{5.67};
constexpr double kTestValue{5.67};
sim.Set(kTestValue);
EXPECT_EQ(kTestValue, enc.Get());
}
TEST(DutyCycleEncoderSimTest, SetDistance) {
HAL_Initialize(500, 0);
DutyCycleEncoder enc{0};
DutyCycleEncoderSim sim(enc);
sim.SetDistance(19.1);
EXPECT_EQ(19.1, enc.GetDistance());
}
TEST(DutyCycleEncoderSimTest, SetDistancePerRotation) {
HAL_Initialize(500, 0);
DutyCycleEncoder enc{0};
DutyCycleEncoderSim sim(enc);
sim.Set(units::turn_t{1.5});
enc.SetDistancePerRotation(42);
EXPECT_EQ(63, enc.GetDistance());
}
TEST(DutyCycleEncoderSimTest, SetAbsolutePosition) {
HAL_Initialize(500, 0);
DutyCycleEncoder enc{0};
DutyCycleEncoderSim sim(enc);
sim.SetAbsolutePosition(0.75);
EXPECT_EQ(0.75, enc.GetAbsolutePosition());
}
TEST(DutyCycleEncoderSimTest, SetIsConnected) {
HAL_Initialize(500, 0);
@@ -62,15 +34,4 @@ TEST(DutyCycleEncoderSimTest, SetIsConnected) {
EXPECT_FALSE(enc.IsConnected());
}
TEST(DutyCycleEncoderSimTest, Reset) {
HAL_Initialize(500, 0);
DutyCycleEncoder enc{0};
DutyCycleEncoderSim sim(enc);
sim.SetDistance(2.5);
EXPECT_EQ(2.5, enc.GetDistance());
enc.Reset();
EXPECT_EQ(0, enc.GetDistance());
}
} // namespace frc::sim