MITK-IGT
IGT Extension of MITK
Loading...
Searching...
No Matches
mitkNavigationDataToPointSetFilterTest.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
15#include <mitkIGTConfig.h>
16#include <mitkTestingMacros.h>
17#include <mitkIOUtil.h>
18
19#include <iostream>
20
30mitk::NavigationDataToPointSetFilter::Pointer m_NavigationDataToPointSetFilter;
31
32static void Setup()
33{
34 m_NavigationDataToPointSetFilter = mitk::NavigationDataToPointSetFilter::New();
35}
36
37static void TestMode3D()
38{
39 Setup();
41
42 //Build up test data
43 mitk::NavigationData::Pointer nd0 = mitk::NavigationData::New();
44 mitk::NavigationData::Pointer nd1 = mitk::NavigationData::New();
45 mitk::NavigationData::Pointer nd2 = mitk::NavigationData::New();
46 mitk::NavigationData::Pointer nd3 = mitk::NavigationData::New();
47
49 point0[0] = 1.0;
50 point0[1] = 2.0;
51 point0[2] = 3.0;
52 nd0->SetPosition(point0);
53 nd0->SetDataValid(true);
54
56 point1[0] = 4.0;
57 point1[1] = 5.0;
58 point1[2] = 6.0;
59 nd1->SetPosition(point1);
60 nd1->SetDataValid(true);
61
63 point2[0] = 7.0;
64 point2[1] = 8.0;
65 point2[2] = 9.0;
66 nd2->SetPosition(point2);
67 nd2->SetDataValid(true);
68
70 point3[0] = 10.0;
71 point3[1] = 11.0;
72 point3[2] = 12.0;
73 nd3->SetPosition(point3);
74 nd3->SetDataValid(true);
75
76 m_NavigationDataToPointSetFilter->SetInput(0, nd0);
77 m_NavigationDataToPointSetFilter->SetInput(1, nd1);
78 m_NavigationDataToPointSetFilter->SetInput(2, nd2);
79 m_NavigationDataToPointSetFilter->SetInput(3, nd3);
80
81 //Process
82 mitk::PointSet::Pointer pointSet0 = m_NavigationDataToPointSetFilter->GetOutput();
83 mitk::PointSet::Pointer pointSet1 = m_NavigationDataToPointSetFilter->GetOutput(1);
84 mitk::PointSet::Pointer pointSet2 = m_NavigationDataToPointSetFilter->GetOutput(2);
85 mitk::PointSet::Pointer pointSet3 = m_NavigationDataToPointSetFilter->GetOutput(3);
86
87 pointSet0->Update();
88
89 MITK_TEST_OUTPUT(<< "Testing the conversion of navigation data object to PointSets in Mode 3D:");
90 MITK_TEST_CONDITION(mitk::Equal(pointSet0->GetPoint(0), point0), "Pointset 0 correct?");
91 MITK_TEST_CONDITION(mitk::Equal(pointSet1->GetPoint(0), point1), "Pointset 1 correct?");
92 MITK_TEST_CONDITION(mitk::Equal(pointSet2->GetPoint(0), point2), "Pointset 2 correct?");
93 MITK_TEST_CONDITION(mitk::Equal(pointSet3->GetPoint(0), point3), "Pointset 3 correct?");
94}
95
96static void TestMode4D()
97{
98 Setup();
100 m_NavigationDataToPointSetFilter->SetRingBufferSize(2);
101
102 //Build up test data
103 mitk::NavigationData::Pointer nd = mitk::NavigationData::New();
104 mitk::NavigationData::Pointer nd2 = mitk::NavigationData::New();
105 mitk::NavigationData::Pointer nd3 = mitk::NavigationData::New();
106 mitk::NavigationData::Pointer nd4 = mitk::NavigationData::New();
107
109
110 point[0] = 1.0;
111 point[1] = 2.0;
112 point[2] = 3.0;
113 nd->SetPosition(point);
114
115 point[0] = 4.0;
116 point[1] = 5.0;
117 point[2] = 6.0;
118 nd2->SetPosition(point);
119
120 point[0] = 7.0;
121 point[1] = 8.0;
122 point[2] = 9.0;
123 nd3->SetPosition(point);
124
125 point[0] = 10.0;
126 point[1] = 11.0;
127 point[2] = 12.0;
128 nd4->SetPosition(point);
129
130 m_NavigationDataToPointSetFilter->SetInput(0, nd);
131 m_NavigationDataToPointSetFilter->SetInput(1, nd2);
132
133 mitk::PointSet::Pointer pointSet = m_NavigationDataToPointSetFilter->GetOutput();
134 pointSet->Update();
135
136 MITK_TEST_CONDITION(pointSet->GetPoint(0, 0)[0] == 1.0 && pointSet->GetPoint(0, 0)[1] == 2.0 && pointSet->GetPoint(0, 0)[2] == 3.0 &&
137 pointSet->GetPoint(1, 0)[0] == 4.0 && pointSet->GetPoint(1, 0)[1] == 5.0 && pointSet->GetPoint(1, 0)[2] == 6.0
138 , "Testing the conversion of navigation data object to one point set in Mode 4D in first timestep");
139
140 m_NavigationDataToPointSetFilter->SetInput(0, nd3);
141 m_NavigationDataToPointSetFilter->SetInput(1, nd4);
143 pointSet = m_NavigationDataToPointSetFilter->GetOutput();
144
145 MITK_TEST_CONDITION(pointSet->GetPoint(0, 0)[0] == 1.0 && pointSet->GetPoint(0, 0)[1] == 2.0 && pointSet->GetPoint(0, 0)[2] == 3.0 &&
146 pointSet->GetPoint(1, 0)[0] == 4.0 && pointSet->GetPoint(1, 0)[1] == 5.0 && pointSet->GetPoint(1, 0)[2] == 6.0 &&
147 pointSet->GetPoint(0, 1)[0] == 7.0 && pointSet->GetPoint(0, 1)[1] == 8.0 && pointSet->GetPoint(0, 1)[2] == 9.0 &&
148 pointSet->GetPoint(1, 1)[0] == 10.0 && pointSet->GetPoint(1, 1)[1] == 11.0 && pointSet->GetPoint(1, 1)[2] == 12.0
149 , "Testing the conversion of navigation data object to one point set in Mode 4D in second timestep");
150
151 m_NavigationDataToPointSetFilter->SetInput(0, nd3);
152 m_NavigationDataToPointSetFilter->SetInput(1, nd4);
153 pointSet = m_NavigationDataToPointSetFilter->GetOutput();
154 pointSet->Update();
155
156 MITK_TEST_CONDITION(pointSet->GetPoint(0, 0)[0] == 7.0 && pointSet->GetPoint(0, 0)[1] == 8.0 && pointSet->GetPoint(0, 0)[2] == 9.0 &&
157 pointSet->GetPoint(1, 0)[0] == 10.0 && pointSet->GetPoint(1, 0)[1] == 11.0 && pointSet->GetPoint(1, 0)[2] == 12.0 &&
158 pointSet->GetPoint(0, 1)[0] == 7.0 && pointSet->GetPoint(0, 1)[1] == 8.0 && pointSet->GetPoint(0, 1)[2] == 9.0 &&
159 pointSet->GetPoint(1, 1)[0] == 10.0 && pointSet->GetPoint(1, 1)[1] == 11.0 && pointSet->GetPoint(1, 1)[2] == 12.0
160 , "Testing the correct ring buffer behavior");
161}
162
163static void NavigationDataToPointSetFilterContructor_DefaultCall_IsNotEmpty()
164{
165 Setup();
166 MITK_TEST_CONDITION_REQUIRED(m_NavigationDataToPointSetFilter.IsNotNull(), "Testing instantiation");
167 //I think this test is meaningless, because it will never ever fail. I keep it for know just to be save.
168}
169
170static void NavigationDataToPointSetFilterSetInput_SimplePoint_EqualsGroundTruth()
171{
172 Setup();
173
174 mitk::NavigationData::Pointer nd_in = mitk::NavigationData::New();
175 const mitk::NavigationData* nd_out = mitk::NavigationData::New();
177
178 point[0] = 1.0;
179 point[1] = 2.0;
180 point[2] = 3.0;
181 nd_in->SetPosition(point);
182
183 m_NavigationDataToPointSetFilter->SetInput(nd_in);
184 nd_out = m_NavigationDataToPointSetFilter->GetInput();
185
186 MITK_TEST_CONDITION(nd_out->GetPosition() == nd_in->GetPosition(),
187 "Testing get/set input");
188}
189
190int mitkNavigationDataToPointSetFilterTest(int /* argc */, char* /*argv*/[])
191{
192 MITK_TEST_BEGIN("NavigationDataToPointSetFilter");
193
194 NavigationDataToPointSetFilterContructor_DefaultCall_IsNotEmpty();
195 NavigationDataToPointSetFilterSetInput_SimplePoint_EqualsGroundTruth();
196 TestMode3D();
197 TestMode4D();
198 // TestMode3DMean(); //infinite loop in debug mode, see bug 17763
199
200 MITK_TEST_END();
201}
mitk::Point3D PositionType
Type that holds the position part of the tracking data.
mitk::NavigationDataToPointSetFilter::Pointer m_NavigationDataToPointSetFilter
int mitkNavigationDataToPointSetFilterTest(int, char *[])
MITKIGTBASE_EXPORT bool Equal(const mitk::NavigationData &leftHandSide, const mitk::NavigationData &rightHandSide, ScalarType eps=mitk::eps, bool verbose=false)
Equal A function comparing two navigation data objects for beeing equal in meta- and imagedata.