17#include <mitkTestingMacros.h>
18#include <mitkIGTConfig.h>
20#include <usModuleContext.h>
21#include <usGetModuleContext.h>
23#include <usModuleResource.h>
24#include <usModuleResourceStream.h>
38static void TestInstantiation()
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:");
48static void TestInvalidClaronTrackingDevice()
50 MITK_TEST_OUTPUT(<<
"Testing simple claron tracking device with 2 invalid tools");
52 mitk::TrackingDeviceSourceConfigurator::Pointer testInstance;
54 mitk::NavigationToolStorage::Pointer claronStorage = mitk::NavigationToolStorage::New();
57 mitk::NavigationTool::Pointer firstTool = mitk::NavigationTool::New();
59 mitk::DataNode::Pointer firstNode = mitk::DataNode::New();
60 firstNode->SetName(
"Tool1");
61 firstTool->SetDataNode(firstNode);
62 claronStorage->AddTool(firstTool);
65 mitk::NavigationTool::Pointer secondTool = mitk::NavigationTool::New();
67 mitk::DataNode::Pointer secondNode = mitk::DataNode::New();
68 secondNode->SetName(
"Tool2");
69 secondTool->SetDataNode(secondNode);
70 claronStorage->AddTool(secondTool);
72 mitk::TrackingDevice::Pointer testDevice =
dynamic_cast<mitk::TrackingDevice*
>(mitk::ClaronTrackingDevice::New().GetPointer());
74 testInstance = mitk::TrackingDeviceSourceConfigurator::New(claronStorage,testDevice);
76 mitk::TrackingDeviceSource::Pointer testSource = testInstance->CreateTrackingDeviceSource();
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");
81 MITK_TEST_OUTPUT(<<
"Testing simple claron tracking device with another 2 invalid tools");
84 claronStorage = mitk::NavigationToolStorage::New();
85 claronStorage->AddTool(secondTool);
87 testInstance = mitk::TrackingDeviceSourceConfigurator::New(claronStorage,testDevice);
89 MITK_TEST_CONDITION_REQUIRED(!testInstance->IsCreateTrackingDeviceSourcePossible(),
"..testing if factory class detects the invalid data");
91 testSource = testInstance->CreateTrackingDeviceSource();
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");
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");
104static void TestValidClaronTrackingDevice()
106 MITK_TEST_OUTPUT(<<
"Testing simple claron tracking device with 2 valid tools");
108 std::string toolFileName(MITK_IGT_DATA_DIR);
109 toolFileName.append(
"/ClaronTool");
111 mitk::TrackingDeviceSourceConfigurator::Pointer testInstance;
112 mitk::NavigationToolStorage::Pointer claronStorage = mitk::NavigationToolStorage::New();
115 mitk::NavigationTool::Pointer firstTool = mitk::NavigationTool::New();
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);
125 mitk::NavigationTool::Pointer secondTool = mitk::NavigationTool::New();
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);
134 mitk::TrackingDevice::Pointer testDevice =
dynamic_cast<mitk::TrackingDevice*
>(mitk::ClaronTrackingDevice::New().GetPointer());
136 testInstance = mitk::TrackingDeviceSourceConfigurator::New(claronStorage,testDevice);
138 mitk::TrackingDeviceSource::Pointer testSource = testInstance->CreateTrackingDeviceSource();
140 MITK_TEST_CONDITION_REQUIRED(testSource->GetNumberOfOutputs()==2,
"testing number of outputs");
141 MITK_TEST_CONDITION_REQUIRED(testSource->GetTrackingDevice()->GetToolCount()==2,
"testing tracking device");
144static void TestAdditionalMethods()
146 MITK_TEST_OUTPUT(<<
"Testing additional methods of TrackingDeviceSourceCOnfigurator");
147 MITK_TEST_OUTPUT(<<
"..using claron tracking device for testing");
149 std::string toolFileName(MITK_IGT_DATA_DIR);
150 toolFileName.append(
"/ClaronTool");
152 mitk::TrackingDeviceSourceConfigurator::Pointer testInstance;
154 mitk::NavigationToolStorage::Pointer claronStorage = mitk::NavigationToolStorage::New();
157 mitk::NavigationTool::Pointer firstTool = mitk::NavigationTool::New();
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);
167 mitk::NavigationTool::Pointer secondTool = mitk::NavigationTool::New();
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);
176 mitk::TrackingDevice::Pointer testDevice =
dynamic_cast<mitk::TrackingDevice*
>(mitk::ClaronTrackingDevice::New().GetPointer());
178 testInstance = mitk::TrackingDeviceSourceConfigurator::New(claronStorage,testDevice);
180 mitk::TrackingDeviceSource::Pointer testSource = testInstance->CreateTrackingDeviceSource();
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()");
201 MITK_TEST_BEGIN(
"TrackingDeviceConfigurator");
204 TestInvalidClaronTrackingDevice();
205 TestValidClaronTrackingDevice();
206 TestAdditionalMethods();
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.
int mitkTrackingDeviceSourceConfiguratorTest(int, char *[])