Functions

mitkInteractorTest.cpp File Reference

#include "mitkInteractor.h"
#include "mitkEvent.h"
#include "mitkStateEvent.h"
#include "mitkInteractionConst.h"
#include "mitkGlobalInteraction.h"
#include "mitkTestingMacros.h"
#include <iostream>

Go to the source code of this file.

Functions

int mitkInteractorTest (int, char *[])

Function Documentation

int mitkInteractorTest ( int  ,
char *  [] 
)

Definition at line 29 of file mitkInteractorTest.cpp.

References mitk::BS_MidButton, mitk::BS_NoButton, mitk::GlobalInteraction::GetInstance(), mitk::Key_none, MITK_TEST_BEGIN, MITK_TEST_CONDITION_REQUIRED, MITK_TEST_END, mitk::Interactor::New(), mitk::StateEvent::Set(), mitk::Interactor::SMDESELECTED, mitk::Interactor::SMSELECTED, mitk::Type_MouseButtonPress, mitk::Type_MouseButtonRelease, and mitk::Type_MouseMove.

{
  MITK_TEST_BEGIN("Interactor")

  // Global interaction must(!) be initialized if used
  mitk::GlobalInteraction::GetInstance()->Initialize("global");

  //create interactor; use pattern InteractorTestPattern
  mitk::Interactor::Pointer interactor = mitk::Interactor::New("InteractorTestPattern", NULL);

  //load interactor
  std::cout << "Testing to initialize the interactor";
  MITK_TEST_CONDITION_REQUIRED(interactor.IsNotNull(),"Testing to initialize the interactor")
  
  std::cout<<"The pattern of the interactor is called: "<<interactor->GetType()<<std::endl;
  
  //creating an event to go from state 0 to state 1:
  //<!-- middle MouseButton -->
  //<event NAME="middle MouseBN" ID="4" TYPE="Type_MouseButtonPress" BUTTON="BS_MidButton" BUTTONSTATE="0x0000" KEY="Key_none" />
  mitk::Event *event = new mitk::Event(NULL, mitk::Type_MouseButtonPress, mitk::BS_MidButton, mitk::BS_NoButton, mitk::Key_none);
  mitk::StateEvent *stateEvent = new mitk::StateEvent(4, event);
  MITK_TEST_CONDITION_REQUIRED(interactor->HandleEvent(stateEvent),"Testing to send an event to go from State 0 to State 1")
  
  MITK_TEST_CONDITION_REQUIRED(interactor->GetMode() == mitk::Interactor::SMSELECTED,"Testing right Mode and thus right action behavior")
  
  //statemachine should have called transition "initmove", executed action with he id 9 and currentState should be 1 = "move"
  delete event;

  //send next event to stay in State1
  //<!-- middle MouseButton and MouseMove -->
  //<event NAME="middleBN+MouseMove" ID="533" TYPE="Type_MouseMove" BUTTON="BS_NoButton" BUTTONSTATE="0x0004" KEY="Key_none" />
  event = new mitk::Event(NULL, mitk::Type_MouseMove, mitk::BS_NoButton, mitk::BS_MidButton, mitk::Key_none);
  stateEvent->Set(533, event);
  MITK_TEST_CONDITION_REQUIRED(interactor->HandleEvent(stateEvent),"Staying in State 1")

  MITK_TEST_CONDITION_REQUIRED(interactor->GetMode() == mitk::Interactor::SMSELECTED,"Testing for the same Mode")
  delete event;

  //create a new event
  //<!-- MiddleMouseButtonRelease -->
  //<event NAME="MiddleMouseRelease" ID="506" TYPE="Type_MouseButtonRelease" BUTTON="BS_MidButton" BUTTONSTATE="0x0004" KEY="Key_none" />
  event = new mitk::Event(NULL, mitk::Type_MouseButtonRelease, mitk::BS_MidButton, mitk::BS_MidButton, mitk::Key_none);
  stateEvent->Set(506, event);
  //because the statemachine is waiting for this event, 0.5 should be returned
  float returnvalue = interactor->CanHandleEvent(stateEvent);
  MITK_TEST_CONDITION_REQUIRED(returnvalue == 0.5,"Testing to call CanHandleEvent with next event")
  std::cout<<"CanHandleEvent returned: "<<returnvalue<<std::endl;

  //The transition "finish" should call no action an lead into state 0 = startState 
  MITK_TEST_CONDITION_REQUIRED(interactor->HandleEvent(stateEvent),"Testing to send next event leading back to startState0")

  MITK_TEST_CONDITION_REQUIRED(interactor->GetMode() == mitk::Interactor::SMDESELECTED,"Testing right Mode and thus right action behavior")
  delete event;


  event = NULL;
  stateEvent->Set(4, event);
  MITK_TEST_CONDITION_REQUIRED(interactor->HandleEvent(stateEvent),"Testing to send event == NULL to interactor")
  delete stateEvent;
  stateEvent = NULL;
  MITK_TEST_CONDITION_REQUIRED( ! interactor->HandleEvent(stateEvent),"Testing to send stateEvent == NULL to interactor")
  
  MITK_TEST_END()
}
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines