MITK-IGT
IGT Extension of MITK
Loading...
Searching...
No Matches
mitkTrackingDeviceSourceConfiguratorTest.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
16#include <mitkNavigationTool.h>
17#include <mitkTestingMacros.h>
18#include <mitkIGTConfig.h>
19
20#include <usModuleContext.h>
21#include <usGetModuleContext.h>
22#include <usModule.h>
23#include <usModuleResource.h>
24#include <usModuleResourceStream.h>
25
28
29//All Tracking devices, which should be avaiable by default
36
37
38static void TestInstantiation()
39{
40 // let's create an object of our class
41 mitk::TrackingDeviceSourceConfigurator::Pointer testInstance;
42 mitk::NavigationToolStorage::Pointer emptyStorage = mitk::NavigationToolStorage::New();
43 mitk::TrackingDevice::Pointer dummyDevice = dynamic_cast<mitk::TrackingDevice*>(mitk::ClaronTrackingDevice::New().GetPointer());
44 testInstance = mitk::TrackingDeviceSourceConfigurator::New(emptyStorage,dummyDevice);
45 MITK_TEST_CONDITION_REQUIRED(testInstance.IsNotNull(),"Testing instantiation:");
46}
47
48static void TestInvalidClaronTrackingDevice()
49{
50 MITK_TEST_OUTPUT(<<"Testing simple claron tracking device with 2 invalid tools");
51
52 mitk::TrackingDeviceSourceConfigurator::Pointer testInstance;
53
54 mitk::NavigationToolStorage::Pointer claronStorage = mitk::NavigationToolStorage::New();
55
56 //create invalid tool 1
57 mitk::NavigationTool::Pointer firstTool = mitk::NavigationTool::New();
58 firstTool->SetTrackingDeviceType(mitk::MicronTrackerTypeInformation::GetTrackingDeviceName());
59 mitk::DataNode::Pointer firstNode = mitk::DataNode::New();
60 firstNode->SetName("Tool1");
61 firstTool->SetDataNode(firstNode);
62 claronStorage->AddTool(firstTool);
63
64 //create invalid tool 2
65 mitk::NavigationTool::Pointer secondTool = mitk::NavigationTool::New();
66 secondTool->SetTrackingDeviceType(mitk::MicronTrackerTypeInformation::GetTrackingDeviceName());
67 mitk::DataNode::Pointer secondNode = mitk::DataNode::New();
68 secondNode->SetName("Tool2");
69 secondTool->SetDataNode(secondNode);
70 claronStorage->AddTool(secondTool);
71
72 mitk::TrackingDevice::Pointer testDevice = dynamic_cast<mitk::TrackingDevice*>(mitk::ClaronTrackingDevice::New().GetPointer());
73
74 testInstance = mitk::TrackingDeviceSourceConfigurator::New(claronStorage,testDevice);
75
76 mitk::TrackingDeviceSource::Pointer testSource = testInstance->CreateTrackingDeviceSource();
77
78 MITK_TEST_CONDITION_REQUIRED(testSource.IsNull(),"..testing return value");
79 MITK_TEST_CONDITION_REQUIRED(testInstance->GetErrorMessage().size()>1,"..testing if there is an error message");
80
81 MITK_TEST_OUTPUT(<<"Testing simple claron tracking device with another 2 invalid tools");
82
83 secondTool->SetTrackingDeviceType(mitk::NDIAuroraTypeInformation::GetTrackingDeviceName());
84 claronStorage = mitk::NavigationToolStorage::New();
85 claronStorage->AddTool(secondTool);
86
87 testInstance = mitk::TrackingDeviceSourceConfigurator::New(claronStorage,testDevice);
88
89 MITK_TEST_CONDITION_REQUIRED(!testInstance->IsCreateTrackingDeviceSourcePossible(),"..testing if factory class detects the invalid data");
90
91 testSource = testInstance->CreateTrackingDeviceSource();
92
93 MITK_TEST_CONDITION_REQUIRED(testSource.IsNull(),"..testing return value");
94 MITK_TEST_CONDITION_REQUIRED(testInstance->GetErrorMessage().size()>1,"..testing if there is an error message");
95 MITK_TEST_CONDITION_REQUIRED(testInstance->GetUpdatedNavigationToolStorage()->GetToolCount()==1,"..testing if navigation tool storage is still there");
96
97 MITK_TEST_OUTPUT(<<"Testing other invalid test cases");
98 testInstance = mitk::TrackingDeviceSourceConfigurator::New(claronStorage,nullptr);
99 MITK_TEST_CONDITION_REQUIRED(!testInstance->IsCreateTrackingDeviceSourcePossible(),"..(1) testing if factory class detects the invalid data");
100 testInstance = mitk::TrackingDeviceSourceConfigurator::New(nullptr,testDevice);
101 MITK_TEST_CONDITION_REQUIRED(!testInstance->IsCreateTrackingDeviceSourcePossible(),"..(2) testing if factory class detects the invalid data");
102}
103
104static void TestValidClaronTrackingDevice()
105{
106 MITK_TEST_OUTPUT(<<"Testing simple claron tracking device with 2 valid tools");
107
108 std::string toolFileName(MITK_IGT_DATA_DIR);
109 toolFileName.append("/ClaronTool");
110
111 mitk::TrackingDeviceSourceConfigurator::Pointer testInstance;
112 mitk::NavigationToolStorage::Pointer claronStorage = mitk::NavigationToolStorage::New();
113
114 //create valid tool 1
115 mitk::NavigationTool::Pointer firstTool = mitk::NavigationTool::New();
116 firstTool->SetTrackingDeviceType(mitk::MicronTrackerTypeInformation::GetTrackingDeviceName());
117 mitk::DataNode::Pointer firstNode = mitk::DataNode::New();
118 firstNode->SetName("Tool1");
119 firstTool->SetDataNode(firstNode);
120 firstTool->SetCalibrationFile(toolFileName);
121 firstTool->SetIdentifier("Tool#1");
122 claronStorage->AddTool(firstTool);
123
124 //create valid tool 2
125 mitk::NavigationTool::Pointer secondTool = mitk::NavigationTool::New();
126 secondTool->SetTrackingDeviceType(mitk::MicronTrackerTypeInformation::GetTrackingDeviceName());
127 mitk::DataNode::Pointer secondNode = mitk::DataNode::New();
128 secondNode->SetName("Tool2");
129 secondTool->SetDataNode(secondNode);
130 secondTool->SetCalibrationFile(toolFileName);
131 secondTool->SetIdentifier("Tool#2");
132 claronStorage->AddTool(secondTool);
133
134 mitk::TrackingDevice::Pointer testDevice = dynamic_cast<mitk::TrackingDevice*>(mitk::ClaronTrackingDevice::New().GetPointer());
135
136 testInstance = mitk::TrackingDeviceSourceConfigurator::New(claronStorage,testDevice);
137
138 mitk::TrackingDeviceSource::Pointer testSource = testInstance->CreateTrackingDeviceSource();
139
140 MITK_TEST_CONDITION_REQUIRED(testSource->GetNumberOfOutputs()==2,"testing number of outputs");
141 MITK_TEST_CONDITION_REQUIRED(testSource->GetTrackingDevice()->GetToolCount()==2,"testing tracking device");
142}
143
144static void TestAdditionalMethods()
145{
146 MITK_TEST_OUTPUT(<<"Testing additional methods of TrackingDeviceSourceCOnfigurator");
147 MITK_TEST_OUTPUT(<<"..using claron tracking device for testing");
148
149 std::string toolFileName(MITK_IGT_DATA_DIR);
150 toolFileName.append("/ClaronTool");
151
152 mitk::TrackingDeviceSourceConfigurator::Pointer testInstance;
153
154 mitk::NavigationToolStorage::Pointer claronStorage = mitk::NavigationToolStorage::New();
155
156 //create valid tool 1
157 mitk::NavigationTool::Pointer firstTool = mitk::NavigationTool::New();
158 firstTool->SetTrackingDeviceType(mitk::MicronTrackerTypeInformation::GetTrackingDeviceName());
159 mitk::DataNode::Pointer firstNode = mitk::DataNode::New();
160 firstNode->SetName("Tool1");
161 firstTool->SetDataNode(firstNode);
162 firstTool->SetCalibrationFile(toolFileName);
163 firstTool->SetIdentifier("Tool#1");
164 claronStorage->AddTool(firstTool);
165
166 //create valid tool 2
167 mitk::NavigationTool::Pointer secondTool = mitk::NavigationTool::New();
168 secondTool->SetTrackingDeviceType(mitk::MicronTrackerTypeInformation::GetTrackingDeviceName());
169 mitk::DataNode::Pointer secondNode = mitk::DataNode::New();
170 secondNode->SetName("Tool2");
171 secondTool->SetDataNode(secondNode);
172 secondTool->SetCalibrationFile(toolFileName);
173 secondTool->SetIdentifier("Tool#2");
174 claronStorage->AddTool(secondTool);
175
176 mitk::TrackingDevice::Pointer testDevice = dynamic_cast<mitk::TrackingDevice*>(mitk::ClaronTrackingDevice::New().GetPointer());
177
178 testInstance = mitk::TrackingDeviceSourceConfigurator::New(claronStorage,testDevice);
179
180 mitk::TrackingDeviceSource::Pointer testSource = testInstance->CreateTrackingDeviceSource();
181
182 //numbers must be the same in case of MicronTracker
183 MITK_TEST_CONDITION_REQUIRED(testInstance->GetToolNumberInToolStorage(0)==0,"..testing method GetToolNumberInToolStorage()");
184 MITK_TEST_CONDITION_REQUIRED(testInstance->GetToolIdentifierInToolStorage(0)=="Tool#1","..testing method GetToolIdentifierInToolStorage()");
185 MITK_TEST_CONDITION_REQUIRED(testInstance->GetToolNumbersInToolStorage().at(0)==0,"..testing method GetToolNumbersInToolStorage()");
186 MITK_TEST_CONDITION_REQUIRED(testInstance->GetToolIdentifiersInToolStorage().at(0)=="Tool#1","..testing method GetToolIdentifiersInToolStorage()");
187
188
189}
190
191int mitkTrackingDeviceSourceConfiguratorTest(int /* argc */, char* /*argv*/[])
192{
193 mitk::TrackingDeviceTypeCollection deviceTypeCollection;
195 deviceTypeCollection.RegisterAsMicroservice();
196
200
201 MITK_TEST_BEGIN("TrackingDeviceConfigurator");
202
203 TestInstantiation();
204 TestInvalidClaronTrackingDevice();
205 TestValidClaronTrackingDevice();
206 TestAdditionalMethods();
207
208 MITK_TEST_END();
209}
Type information for Micron Tracking Devices.
Type information for NDI Aurora.
Type information for NDI Polaris.
This class is a collection for information of all Tracking Device Types (derived from abstract Tracki...
void RegisterTrackingDeviceType(TrackingDeviceTypeInformation *typeInformation)
virtual void RegisterAsMicroservice()
Registers this object as a Microservice, making it available to every module and/or plugin....
Interface for all Tracking Devices.
Type information for a virtual tracker.
int mitkTrackingDeviceSourceConfiguratorTest(int, char *[])