[commands] Add test for subsystem registration and periodic (#5408)

This commit is contained in:
Ryan Blue
2023-06-20 23:29:59 -04:00
committed by GitHub
parent 5d3a133f9f
commit ebae341a91
3 changed files with 56 additions and 4 deletions

View File

@@ -19,7 +19,15 @@
namespace frc2 {
class TestSubsystem : public SubsystemBase {};
class TestSubsystem : public SubsystemBase {
public:
explicit TestSubsystem(std::function<void()> periodic = [] {})
: m_periodic{periodic} {}
void Periodic() override { m_periodic(); }
private:
std::function<void()> m_periodic;
};
/**
* NOTE: Moving mock objects causes EXPECT_CALL to not work correctly!

View File

@@ -43,14 +43,30 @@ TEST_F(SchedulerTest, SchedulerLambdaInterrupt) {
EXPECT_EQ(counter, 1);
}
TEST_F(SchedulerTest, RegisterSubsystem) {
CommandScheduler scheduler = GetScheduler();
int counter = 0;
TestSubsystem system{[&counter] { counter++; }};
EXPECT_NO_FATAL_FAILURE(scheduler.RegisterSubsystem(&system));
scheduler.Run();
EXPECT_EQ(counter, 1);
}
TEST_F(SchedulerTest, UnregisterSubsystem) {
CommandScheduler scheduler = GetScheduler();
TestSubsystem system;
int counter = 0;
TestSubsystem system{[&counter] { counter++; }};
scheduler.RegisterSubsystem(&system);
EXPECT_NO_FATAL_FAILURE(scheduler.UnregisterSubsystem(&system));
scheduler.Run();
ASSERT_EQ(counter, 0);
}
TEST_F(SchedulerTest, SchedulerCancelAll) {