diff --git a/wpilibNewCommands/src/test/java/edu/wpi/first/wpilibj2/command/SchedulerTest.java b/wpilibNewCommands/src/test/java/edu/wpi/first/wpilibj2/command/SchedulerTest.java index 7a62f5ea27..ee1f8eb37c 100644 --- a/wpilibNewCommands/src/test/java/edu/wpi/first/wpilibj2/command/SchedulerTest.java +++ b/wpilibNewCommands/src/test/java/edu/wpi/first/wpilibj2/command/SchedulerTest.java @@ -43,13 +43,41 @@ class SchedulerTest extends CommandTestBase { } } + @Test + void registerSubsystemTest() { + try (CommandScheduler scheduler = new CommandScheduler()) { + AtomicInteger counter = new AtomicInteger(0); + Subsystem system = + new SubsystemBase() { + @Override + public void periodic() { + counter.incrementAndGet(); + } + }; + + assertDoesNotThrow(() -> scheduler.registerSubsystem(system)); + + scheduler.run(); + assertEquals(1, counter.get()); + } + } + @Test void unregisterSubsystemTest() { try (CommandScheduler scheduler = new CommandScheduler()) { - Subsystem system = new SubsystemBase() {}; - + AtomicInteger counter = new AtomicInteger(0); + Subsystem system = + new SubsystemBase() { + @Override + public void periodic() { + counter.incrementAndGet(); + } + }; scheduler.registerSubsystem(system); assertDoesNotThrow(() -> scheduler.unregisterSubsystem(system)); + + scheduler.run(); + assertEquals(0, counter.get()); } } diff --git a/wpilibNewCommands/src/test/native/cpp/frc2/command/CommandTestBase.h b/wpilibNewCommands/src/test/native/cpp/frc2/command/CommandTestBase.h index 035f5dedbf..1e4e5f7123 100644 --- a/wpilibNewCommands/src/test/native/cpp/frc2/command/CommandTestBase.h +++ b/wpilibNewCommands/src/test/native/cpp/frc2/command/CommandTestBase.h @@ -19,7 +19,15 @@ namespace frc2 { -class TestSubsystem : public SubsystemBase {}; +class TestSubsystem : public SubsystemBase { + public: + explicit TestSubsystem(std::function periodic = [] {}) + : m_periodic{periodic} {} + void Periodic() override { m_periodic(); } + + private: + std::function m_periodic; +}; /** * NOTE: Moving mock objects causes EXPECT_CALL to not work correctly! diff --git a/wpilibNewCommands/src/test/native/cpp/frc2/command/SchedulerTest.cpp b/wpilibNewCommands/src/test/native/cpp/frc2/command/SchedulerTest.cpp index ce02ba0f96..3bade0ab09 100644 --- a/wpilibNewCommands/src/test/native/cpp/frc2/command/SchedulerTest.cpp +++ b/wpilibNewCommands/src/test/native/cpp/frc2/command/SchedulerTest.cpp @@ -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) {