MITK-IGT
IGT Extension of MITK
Loading...
Searching...
No Matches
mitkNavigationToolTest.cpp
Go to the documentation of this file.
1/*============================================================================
2
3The Medical Imaging Interaction Toolkit (MITK)
4
5Copyright (c) German Cancer Research Center (DKFZ)
6All rights reserved.
7
8Use of this source code is governed by a 3-clause BSD license that can be
9found in the LICENSE file.
10
11============================================================================*/
12
13#include "mitkNavigationTool.h"
14#include "mitkCommon.h"
15#include "mitkTestingMacros.h"
16#include "mitkDataNode.h"
17#include "mitkPointSet.h"
18#include "mitkTrackingTool.h"
19
20#include <itkSpatialObject.h>
21
23
25 {
26 public:
27
28 static bool CompareQuaternions(mitk::Quaternion q1, mitk::Quaternion q2)
29 {
30 if ((q1.as_vector() - q2.as_vector()).one_norm() < 10e-3)
31 return true;
32 else
33 return false;
34 }
35 static void TestInstantiation()
36 {
37 // let's create an object of our class
38 mitk::NavigationTool::Pointer myNavigationTool = mitk::NavigationTool::New();
39 MITK_TEST_CONDITION_REQUIRED(myNavigationTool.IsNotNull(),"Testing instantiation")
40 }
41
42 static void TestGetterAndSetter()
43 {
44 mitk::NavigationTool::Pointer myNavigationTool = mitk::NavigationTool::New();
45
46 //initialize a few things
47 mitk::DataNode::Pointer myNode = mitk::DataNode::New();
48 myNode->SetName("TestNodeName");
49 itk::SpatialObject<3>::Pointer mySpatialObject = itk::SpatialObject<3>::New();
50
51 //set everything
52 myNavigationTool->SetType(mitk::NavigationTool::Instrument);
53 myNavigationTool->SetIdentifier("Tool#15");
54 myNavigationTool->SetDataNode(myNode);
55 myNavigationTool->SetSpatialObject(mySpatialObject);
56 //notice: cannot test Get/SetTrackingTool because this class cannot be instantiated alone
57 myNavigationTool->SetCalibrationFile("Test.srom");
58 myNavigationTool->SetSerialNumber("0815");
59 myNavigationTool->SetTrackingDeviceType(mitk::NDIAuroraTypeInformation::GetTrackingDeviceName());
60
61 mitk::PointSet::Pointer CalLandmarks = mitk::PointSet::New();
62 mitk::Point3D testPt1;
63 mitk::FillVector3D(testPt1,1,2,3);
64 CalLandmarks->SetPoint(0,testPt1);
65
66 mitk::PointSet::Pointer RegLandmarks = mitk::PointSet::New();
67 mitk::Point3D testPt2;
68 mitk::FillVector3D(testPt2,4,5,6);
69 RegLandmarks->SetPoint(0,testPt2);
70
71 myNavigationTool->SetToolControlPoints(CalLandmarks);
72 myNavigationTool->SetToolLandmarks(RegLandmarks);
73
74 //test getter
75 MITK_TEST_CONDITION(myNavigationTool->GetType()==mitk::NavigationTool::Instrument,"Testing getter and setter of type.");
76 MITK_TEST_CONDITION(myNavigationTool->GetIdentifier()=="Tool#15","Testing getter and setter of identifier.");
77 MITK_TEST_CONDITION(myNavigationTool->GetDataNode()==myNode,"Testing getter and setter of dataNode.");
78 MITK_TEST_CONDITION(myNavigationTool->GetSpatialObject()==mySpatialObject,"Testing getter and setter of itk spatial object.");
79 MITK_TEST_CONDITION(myNavigationTool->GetCalibrationFile()=="none","Testing getter and setter of calibration file."); //should be none, because file does not exist
80 MITK_TEST_CONDITION(myNavigationTool->GetSerialNumber()=="0815","Testing getter and setter of serial number.");
81 MITK_TEST_CONDITION(myNavigationTool->GetTrackingDeviceType() == mitk::NDIAuroraTypeInformation::GetTrackingDeviceName(), "Testing getter and setter of tracking device type.");
82 MITK_TEST_CONDITION(myNavigationTool->GetToolName()=="TestNodeName","Testing method GetToolName().");
83 MITK_TEST_CONDITION(myNavigationTool->GetToolControlPoints()->GetPoint(0)[0] == 1.0,"Testing method GetToolControlPoints()");
84 MITK_TEST_CONDITION(myNavigationTool->GetToolLandmarks()->GetPoint(0)[0] == 4.0,"Testing method GetToolLandmarks()");
85 }
86
87 static void TestToolTipAndAxis()
88 {
89 // let's create an object of our class
90 mitk::NavigationTool::Pointer myNavigationTool = mitk::NavigationTool::New();
91 MITK_TEST_CONDITION_REQUIRED(myNavigationTool.IsNotNull(), "Testing instantiation");
92 // define tool tip
93 mitk::Point3D toolTip;
94 mitk::FillVector3D(toolTip, 1.0, 3.4, 5.6);
95 // test Set / GetToolTipPosition
96 myNavigationTool->SetToolTipPosition(toolTip);
97 MITK_TEST_CONDITION(myNavigationTool->GetToolTipPosition() == toolTip, "Testing Set / GetToolTipPosition");
98 // define tool axis
99 mitk::Point3D toolAxis;
100 mitk::FillVector3D(toolAxis, 1.0, 0.0, 0.0);
101 // This tool axis will result in the following transformation
102 mitk::Quaternion resultingToolAxisOrientation(0, -sqrt(2)/2.0, 0, sqrt(2)/2.0);
103 // test calculation of ToolAxisOrientation
104 myNavigationTool->SetToolAxis(toolAxis);
105 MITK_TEST_CONDITION(CompareQuaternions(myNavigationTool->GetToolAxisOrientation(),resultingToolAxisOrientation), "Testing caluclation of ToolAxisOrientation");
106 }
107
108 };
110int mitkNavigationToolTest(int /* argc */, char* /*argv*/[])
111{
112 MITK_TEST_BEGIN("NavigationTool")
113
117 MITK_TEST_END()
118}
119
120
static bool CompareQuaternions(mitk::Quaternion q1, mitk::Quaternion q2)
int mitkNavigationToolTest(int, char *[])