#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();
}
1.7.2