mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-07-01 02:41:48 +00:00
[commands] Add Trigger.onChange() test (#6849)
This commit is contained in:
@@ -62,6 +62,32 @@ class TriggerTest extends CommandTestBase {
|
||||
assertFalse(command1.isScheduled());
|
||||
}
|
||||
|
||||
@Test
|
||||
void onChangeTest() {
|
||||
CommandScheduler scheduler = CommandScheduler.getInstance();
|
||||
AtomicBoolean finished = new AtomicBoolean(false);
|
||||
Command command1 = new WaitUntilCommand(finished::get);
|
||||
|
||||
InternalButton button = new InternalButton();
|
||||
button.setPressed(true);
|
||||
button.onChange(command1);
|
||||
scheduler.run();
|
||||
assertFalse(command1.isScheduled());
|
||||
button.setPressed(false);
|
||||
scheduler.run();
|
||||
assertTrue(command1.isScheduled());
|
||||
finished.set(true);
|
||||
scheduler.run();
|
||||
assertFalse(command1.isScheduled());
|
||||
finished.set(false);
|
||||
button.setPressed(true);
|
||||
scheduler.run();
|
||||
assertTrue(command1.isScheduled());
|
||||
finished.set(true);
|
||||
scheduler.run();
|
||||
assertFalse(command1.isScheduled());
|
||||
}
|
||||
|
||||
@Test
|
||||
void whileTrueRepeatedlyTest() {
|
||||
CommandScheduler scheduler = CommandScheduler.getInstance();
|
||||
|
||||
@@ -52,6 +52,30 @@ TEST_F(TriggerTest, OnFalse) {
|
||||
EXPECT_FALSE(scheduler.IsScheduled(&command));
|
||||
}
|
||||
|
||||
TEST_F(TriggerTest, OnChange) {
|
||||
auto& scheduler = CommandScheduler::GetInstance();
|
||||
bool finished = false;
|
||||
bool pressed = true;
|
||||
WaitUntilCommand command([&finished] { return finished; });
|
||||
|
||||
Trigger([&pressed] { return pressed; }).OnChange(&command);
|
||||
scheduler.Run();
|
||||
EXPECT_FALSE(command.IsScheduled());
|
||||
pressed = false;
|
||||
scheduler.Run();
|
||||
EXPECT_TRUE(command.IsScheduled());
|
||||
finished = true;
|
||||
scheduler.Run();
|
||||
EXPECT_FALSE(command.IsScheduled());
|
||||
finished = false;
|
||||
pressed = true;
|
||||
scheduler.Run();
|
||||
EXPECT_TRUE(command.IsScheduled());
|
||||
finished = true;
|
||||
scheduler.Run();
|
||||
EXPECT_FALSE(command.IsScheduled());
|
||||
}
|
||||
|
||||
TEST_F(TriggerTest, WhileTrueRepeatedly) {
|
||||
auto& scheduler = CommandScheduler::GetInstance();
|
||||
int inits = 0;
|
||||
|
||||
Reference in New Issue
Block a user