#include <mitkEvent.h>#include <mitkInteractionConst.h>#include <mitkStateEvent.h>#include <mitkStateMachine.h>#include <mitkTestingMacros.h>#include <mitkGlobalInteraction.h>Go to the source code of this file.
Functions | |
| int | mitkStateMachineTest (int, char *[]) |
| int mitkStateMachineTest | ( | int | , |
| char * | [] | ||
| ) |
Simple example for a test for the (non-existent) class "StateMachine".
argc and argv are the command line parameters which were passed to the ADD_TEST command in the CMakeLists.txt file. For the automatic tests, argv is either empty f25or the simple tests or contains the filename of a test image for the image tests (see CMakeLists.txt).
Definition at line 35 of file mitkStateMachineTest.cpp.
References mitk::BS_NoButton, mitk::GlobalInteraction::GetInstance(), mitk::Key_none, MITK_TEST_BEGIN, MITK_TEST_CONDITION_REQUIRED, MITK_TEST_END, mitk::StateMachine::New(), and mitk::Type_None.
{
// always start with this!
MITK_TEST_BEGIN("StateMachine")
std::string name("global");
//test Statemachine without given pattern name
std::cout<<"should throw fatal error:\n";
mitk::StateMachine::Pointer noMachine1 = mitk::StateMachine::New("");
std::cout<<"should throw fatal error:\n";
//test Statemachine without initialization of GlobalInteraction
mitk::StateMachine::Pointer noMachine2 = mitk::StateMachine::New(name.c_str());
std::cout<<"should throw fatal error:\n";
// test Statemachine with GlobalInteraction being initialized with no string
MITK_TEST_CONDITION_REQUIRED(mitk::GlobalInteraction::GetInstance()->Initialize("")==false,"Testing wrong initialization")
MITK_TEST_CONDITION_REQUIRED(mitk::GlobalInteraction::GetInstance()->Initialize("raraolala")==false,"Testing initialization with wrong pattern name")
std::cout<<"should throw fatal error:\n";
mitk::StateMachine::Pointer noMachine3 = mitk::StateMachine::New(name.c_str());
//now get serious
std::cout<<"no errors / warnings anymore!\n";
// now initialize GlobalInteraction
MITK_TEST_CONDITION_REQUIRED(mitk::GlobalInteraction::GetInstance()->Initialize(name.c_str())==true,"Testing wright initialization")
// let's create an object of our class
mitk::StateMachine::Pointer myStateMachine = mitk::StateMachine::New(name.c_str());
// first test: did this work?
// using MITK_TEST_CONDITION_REQUIRED makes the test stop after failure, since
// it makes no sense to continue without an object.
MITK_TEST_CONDITION_REQUIRED(myStateMachine.IsNotNull(),"Testing instantiation")
MITK_TEST_CONDITION_REQUIRED(myStateMachine->GetType() == name ,"Testing GetType")
//severe HandleEvent testing
//creating an event to go from state 1 to state 2; don't execute an action
mitk::Event *event = new mitk::Event(NULL, mitk::Type_None, mitk::Type_None, mitk::BS_NoButton, mitk::Key_none);
mitk::StateEvent *stateEvent = new mitk::StateEvent(1013, event);
MITK_TEST_CONDITION_REQUIRED(myStateMachine->HandleEvent(stateEvent) ,"Testing HandleEvent by statechange")
//go from state 2 to state 1; don't execute an action
mitk::StateEvent *nextStateEvent = new mitk::StateEvent(1002, event);
MITK_TEST_CONDITION_REQUIRED(myStateMachine->HandleEvent(nextStateEvent) ,"Testing HandleEvent returning to startstate")
myStateMachine = NULL;
MITK_TEST_CONDITION_REQUIRED(myStateMachine.IsNull(),"Testing setting pointer to NULL")
// Clean up...
delete event;
delete stateEvent;
delete nextStateEvent;
// always end with this!
MITK_TEST_END()
}
1.7.2