[commands] Add owning overload to ProxyScheduleCommand (#4405)

This commit is contained in:
Starlight220
2022-09-14 04:33:19 +03:00
committed by GitHub
parent cb33bd71df
commit 9ae38eaa7c
3 changed files with 56 additions and 5 deletions

View File

@@ -2,7 +2,7 @@
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
#include <regex>
#include <memory>
#include "CommandTestBase.h"
#include "frc2/command/InstantCommand.h"
@@ -12,7 +12,7 @@
using namespace frc2;
class ProxyScheduleCommandTest : public CommandTestBase {};
TEST_F(ProxyScheduleCommandTest, ProxyScheduleCommandSchedule) {
TEST_F(ProxyScheduleCommandTest, NonOwningCommandSchedule) {
CommandScheduler& scheduler = CommandScheduler::GetInstance();
bool scheduled = false;
@@ -27,7 +27,7 @@ TEST_F(ProxyScheduleCommandTest, ProxyScheduleCommandSchedule) {
EXPECT_TRUE(scheduled);
}
TEST_F(ProxyScheduleCommandTest, ProxyScheduleCommandEnd) {
TEST_F(ProxyScheduleCommandTest, NonOwningCommandEnd) {
CommandScheduler& scheduler = CommandScheduler::GetInstance();
bool finished = false;
@@ -45,3 +45,35 @@ TEST_F(ProxyScheduleCommandTest, ProxyScheduleCommandEnd) {
scheduler.Run();
EXPECT_FALSE(scheduler.IsScheduled(&command));
}
TEST_F(ProxyScheduleCommandTest, OwningCommandSchedule) {
CommandScheduler& scheduler = CommandScheduler::GetInstance();
bool scheduled = false;
ProxyScheduleCommand command(
std::make_unique<InstantCommand>([&scheduled] { scheduled = true; }));
scheduler.Schedule(&command);
scheduler.Run();
EXPECT_TRUE(scheduled);
}
TEST_F(ProxyScheduleCommandTest, OwningCommandEnd) {
CommandScheduler& scheduler = CommandScheduler::GetInstance();
bool finished = false;
ProxyScheduleCommand command(
std::make_unique<WaitUntilCommand>([&finished] { return finished; }));
scheduler.Schedule(&command);
scheduler.Run();
EXPECT_TRUE(scheduler.IsScheduled(&command));
finished = true;
scheduler.Run();
scheduler.Run();
EXPECT_FALSE(scheduler.IsScheduled(&command));
}