Expose and fix error where old subsystems were being referended after use in tests

Change-Id: I50e66b3d61f5c70dee653ab3e9899f2286f3741c
This commit is contained in:
Patrick Plenefisch
2014-09-20 23:08:44 -04:00
parent 3f0f7931b8
commit ebd9667ba6
3 changed files with 22 additions and 4 deletions

View File

@@ -34,6 +34,7 @@ public:
void Run();
void Remove(Command *command);
void RemoveAll();
void ResetAll();
void SetEnabled(bool enabled);
void UpdateTable();

View File

@@ -26,6 +26,10 @@ Scheduler::Scheduler() :
m_table = NULL;
m_enabled = true;
m_runningCommandsChanged = false;
toCancel = NULL;
commands = NULL;
ids = NULL;
}
Scheduler::~Scheduler() {
@@ -215,6 +219,19 @@ void Scheduler::RemoveAll() {
}
}
/**
* Completely resets the scheduler. Undefined behavior if running.
*/
void Scheduler::ResetAll()
{
RemoveAll();
m_subsystems.clear();
m_buttons.clear();
m_additions.clear();
m_commands.clear();
m_table = NULL;
}
/**
* Update the network tables associated with the Scheduler object on the SmartDashboard
*/

View File

@@ -26,7 +26,7 @@ protected:
* scope of the test.
*/
void TeardownScheduler(){
Scheduler::GetInstance()->RemoveAll();
Scheduler::GetInstance()->ResetAll();
}
void AssertCommandState(MockCommand &command, int initialize, int execute, int isFinished, int end, int interrupted){
@@ -224,11 +224,11 @@ TEST_F(CommandTest, ThreeCommandOnSubSystem){
//CommandSequentialGroupTest ported from CommandSequentialGroupTest.java
TEST_F(CommandTest, OneCommandSupersedingAnotherBecauseOfDependencies){
ASubsystem subsystem("Command Superseding Test Subsystem");
ASubsystem* subsystem = new ASubsystem("Command Superseding Test Subsystem");
MockCommand command1;
command1.Requires(&subsystem);
command1.Requires(subsystem);
MockCommand command2;
command2.Requires(&subsystem);
command2.Requires(subsystem);
AssertCommandState(command1, 0, 0, 0, 0, 0);