#include "mitkNavigationDataPlayer.h"
#include "mitkNavigationData.h"
#include "mitkTestingMacros.h"
#include "mitkStandardFileLocations.h"
#include "mitkTimeStamp.h"
#include <iostream>
#include <sstream>
Go to the source code of this file.
Functions | |
int | mitkNavigationDataPlayerTest (int, char *[]) |
int mitkNavigationDataPlayerTest | ( | int | , |
char * | [] | ||
) |
Documentation test for the class "NavigationDataPlayer".
Definition at line 31 of file mitkNavigationDataPlayerTest.cpp.
References mitk::TimeStamp::GetInstance(), mitk::StandardFileLocations::GetInstance(), MITK_TEST_BEGIN, MITK_TEST_CONDITION_REQUIRED, MITK_TEST_END, mitk::NavigationDataPlayer::New(), mitk::NavigationDataPlayer::NormalFile, and player().
{ MITK_TEST_BEGIN("NavigationDataPlayer"); std::string tmp = ""; // let's create an object of our class mitk::NavigationDataPlayer::Pointer player = mitk::NavigationDataPlayer::New(); // 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(player.IsNotNull(), "Testing instantiation"); std::string file = mitk::StandardFileLocations::GetInstance()->FindFile("NavigationDataTestData.xml", "Modules/IGT/Testing/Data"); player->SetFileName( file ); MITK_TEST_CONDITION_REQUIRED( strcmp(player->GetFileName(), file.c_str()) == 0, "Testing SetFileName and GetFileName"); player->SetStream( mitk::NavigationDataPlayer::NormalFile ); player->StartPlaying(); player->Update(); player->StopPlaying(); mitk::NavigationData::Pointer nd = player->GetOutput(); mitk::Point3D pnt; pnt[0] = 1; pnt[1] = 0; pnt[2] = 3; MITK_TEST_CONDITION_REQUIRED( nd->GetPosition() == pnt, "Testing position of replayed NavigaionData" ); //MITK_TEST_CONDITION_REQUIRED( nd->GetTimeStamp() == 3068.94, "Testing for correct TimeStamp" ); std::vector<double> times, refTimes; refTimes.resize(5); refTimes[0] = 3.9; refTimes[1] = 83.6; refTimes[2] = 174.4; refTimes[3] = 275.0; refTimes[4] = 385.39; mitk::TimeStamp::Pointer timer = mitk::TimeStamp::GetInstance(); timer->Initialize(); itk::Object::Pointer obj = itk::Object::New(); timer->Start( obj ); mitk::Point3D oldPos; oldPos[0] = 1; oldPos[1] = 0; oldPos[2] = 3; //pnt = oldPos; player->StartPlaying(); while( times.size()<5 ) { player->Update(); pnt = nd->GetPosition(); if ( pnt != oldPos ) { times.push_back( timer->GetElapsed(obj) ); oldPos = pnt; } } // if this test fails, it may be because the dartclient runs on a virtual machine. // Under these circumstances, it may be impossible to achieve a time-accuracy of 10ms for ( int i=0;i<5;i++ ) { std::cout << "ref: " << refTimes[i] << " / time elapsed: " << times[i] << std::endl; MITK_TEST_CONDITION_REQUIRED( (times[i]>refTimes[i]-15 && times[i]<refTimes[i]+15), "checking for more or less correct time-line" ); } // always end with this! MITK_TEST_END(); }