[hal,tests] Use waitForProgramStart in tests (#8429)

Change setProgramStarted to accept a boolean so it can be set back to
false by tests. This allows properly waiting for program start in tests.
This commit is contained in:
Peter Johnson
2025-11-29 10:10:01 -08:00
committed by GitHub
parent 32d3ec0218
commit a4aad63dd4
23 changed files with 84 additions and 49 deletions

View File

@@ -31,9 +31,10 @@ class ArmSimulationTest : public testing::TestWithParam<wpi::units::degree_t> {
public:
void SetUp() override {
wpi::sim::PauseTiming();
wpi::sim::SetProgramStarted(false);
m_thread = std::thread([&] { m_robot.StartCompetition(); });
wpi::sim::StepTiming(0.0_ms); // Wait for Notifiers
wpi::sim::WaitForProgramStart();
}
void TearDown() override {

View File

@@ -25,11 +25,11 @@ class DigitalCommunicationTest : public testing::TestWithParam<T> {
void SetUp() override {
wpi::sim::PauseTiming();
wpi::sim::SetProgramStarted(false);
wpi::sim::DriverStationSim::ResetData();
m_thread = std::thread([&] { m_robot.StartCompetition(); });
wpi::sim::StepTiming(0.0_ms);
// SimHooks.stepTiming(0.0); // Wait for Notifiers
wpi::sim::WaitForProgramStart();
}
void TearDown() override {

View File

@@ -33,9 +33,10 @@ class ElevatorSimulationTest : public testing::Test {
public:
void SetUp() override {
wpi::sim::PauseTiming();
wpi::sim::SetProgramStarted(false);
m_thread = std::thread([&] { m_robot.StartCompetition(); });
wpi::sim::StepTiming(0.0_ms); // Wait for Notifiers
wpi::sim::WaitForProgramStart();
}
void TearDown() override {

View File

@@ -32,13 +32,14 @@ class I2CCommunicationTest : public testing::TestWithParam<T> {
void SetUp() override {
gString = std::string();
wpi::sim::PauseTiming();
wpi::sim::SetProgramStarted(false);
wpi::sim::DriverStationSim::ResetData();
m_port = static_cast<int32_t>(Robot::kPort);
m_callback = HALSIM_RegisterI2CWriteCallback(m_port, &callback, nullptr);
m_thread = std::thread([&] { m_robot.StartCompetition(); });
wpi::sim::StepTiming(0.0_ms); // Wait for Notifiers
wpi::sim::WaitForProgramStart();
}
void TearDown() override {

View File

@@ -68,6 +68,7 @@ class PotentiometerPIDTest : public testing::Test {
void SetUp() override {
wpi::sim::PauseTiming();
wpi::sim::SetProgramStarted(false);
wpi::sim::DriverStationSim::ResetData();
m_joystickSim.SetButtonsMaximumIndex(12);
@@ -76,7 +77,7 @@ class PotentiometerPIDTest : public testing::Test {
HALSIM_RegisterSimPeriodicBeforeCallback(CallSimPeriodicBefore, this);
m_thread = std::thread([&] { m_robot.StartCompetition(); });
wpi::sim::StepTiming(0.0_ms); // Wait for Notifiers
wpi::sim::WaitForProgramStart();
}
void TearDown() override {