MITK-IGT
IGT Extension of MITK
Loading...
Searching...
No Matches
mitkClaronTrackingDeviceTest.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
14#include "mitkClaronTool.h"
15#include "mitkTestingMacros.h"
16#include "mitkIGTConfig.h"
17#include "mitkIGTException.h"
18
19#ifdef WIN32
20static bool TestIsMicronTrackerInstalled()
21{
22 mitk::ClaronTrackingDevice::Pointer myClaronTrackingDevice = mitk::ClaronTrackingDevice::New();
23 bool returnValue = myClaronTrackingDevice->IsDeviceInstalled();
24 if (returnValue) {MITK_TEST_OUTPUT(<< "MicronTracker is installed on this system!")}
25 else {MITK_TEST_OUTPUT(<< "MicronTracker is not installed on this system!")}
26 return returnValue;
27}
28#endif
29
30static void TestInstantiation()
31{
32 // let's create an object of our class
33 mitk::ClaronTrackingDevice::Pointer testInstance;
34 testInstance = mitk::ClaronTrackingDevice::New();
35 MITK_TEST_CONDITION_REQUIRED(testInstance.IsNotNull(),"Testing instantiation:")
36}
37
38static void TestToolConfiguration()
39{
40 std::string toolFileName(MITK_IGT_DATA_DIR);
41 toolFileName.append("/ClaronTool");
42
43 mitk::ClaronTrackingDevice::Pointer testInstance = mitk::ClaronTrackingDevice::New();
44 MITK_TEST_CONDITION(testInstance->AddTool("Tool1", toolFileName.c_str()) != nullptr, "Testing AddTool() for tool 1");
45 MITK_TEST_CONDITION(testInstance->GetToolCount() == 1, "Testing adding tool 1");
46 MITK_TEST_CONDITION(testInstance->AddTool("Tool2", toolFileName.c_str()) != nullptr, "Testing AddTool() for tool 2");
47 MITK_TEST_CONDITION(testInstance->GetToolCount() == 2, "Testing adding tool 2");
48 MITK_TEST_CONDITION(testInstance->AddTool("Tool3", toolFileName.c_str()) != nullptr, "Testing AddTool() for tool 3");
49 MITK_TEST_CONDITION(testInstance->GetToolCount() == 3, "Testing adding tool 3");
50
51
52 //std::vector<mitk::ClaronTool::Pointer> myTools = testInstance->GetAllTools();
53 MITK_TEST_CONDITION(testInstance->GetTool(0)->GetToolName() == std::string("Tool1"), "Testing GetTool() for tool 1");
54 MITK_TEST_CONDITION(testInstance->GetTool(1)->GetToolName() == std::string("Tool2"), "Testing GetTool() for tool 2");
55 MITK_TEST_CONDITION(testInstance->GetTool(2)->GetToolName() == std::string("Tool3"), "Testing GetTool() for tool 3");
56
57 //Testing 100 tools (maximum by MicronTracker)
58 testInstance = nullptr;
59 testInstance = mitk::ClaronTrackingDevice::New();
60 for (unsigned int i = 0; i < 100; i++)
61 testInstance->AddTool("Tool", toolFileName.c_str());
62 MITK_TEST_CONDITION(testInstance->GetToolCount() == 100, "Testing adding 100 tools");
63
64 bool failed = false;
65 unsigned int max = 100;
66
67 testInstance = mitk::ClaronTrackingDevice::New();
68 for (unsigned int i = 0; i < max; i++)
69 testInstance->AddTool("Tool", toolFileName.c_str());
70 if ((testInstance->GetToolCount() != max))
71 failed = true;
72 MITK_TEST_CONDITION(!failed, "Testing tool configuration (maximum of 100 tools):");
73}
74
75#ifdef WIN32
76static void TestAllMethodsOnSystemsWithoutMicronTracker()
77{
78 //In this case we won't receive valid data but defined invalid return values.
79
80 //initialize
81 mitk::ClaronTrackingDevice::Pointer myClaronTrackingDevice = mitk::ClaronTrackingDevice::New();
82
83 //OpenConnection
84 MITK_TEST_OUTPUT(<<"Testing behavior of method OpenConnection() (Errors should occur because MicronTracker is not activated).");
85 MITK_TEST_FOR_EXCEPTION_BEGIN(mitk::IGTException)
86 myClaronTrackingDevice->OpenConnection();
87 MITK_TEST_FOR_EXCEPTION_END(mitk::IGTException)
88
89 std::string toolFileName(MITK_IGT_DATA_DIR);
90 toolFileName.append("/ClaronTool");
91
92 //add a few tools
93 myClaronTrackingDevice->AddTool("Tool1", toolFileName.c_str());
94 myClaronTrackingDevice->AddTool("Tool2", toolFileName.c_str());
95 myClaronTrackingDevice->AddTool("Tool3", toolFileName.c_str());
96
97 //test IsMicronTrackerInstalled
98 MITK_TEST_CONDITION(!myClaronTrackingDevice->IsDeviceInstalled(),"Testing method IsMicronTrackerInstalled().\n")
99
100 //test getToolCount
101 int toolCount = myClaronTrackingDevice->GetToolCount();
102 MITK_TEST_CONDITION((toolCount==3), "Testing method GetToolCount().\n");
103
104 //test getTool
105 mitk::TrackingTool* myTool = myClaronTrackingDevice->GetTool(2);
106 MITK_TEST_CONDITION((std::string(myTool->GetToolName()) == "Tool3"), "Testing method GetTool().\n");
107
108 //StartTracking
109 MITK_TEST_CONDITION( (!myClaronTrackingDevice->StartTracking()), "Testing behavior of method StartTracking().\n");
110
111 //StopTracking
112 MITK_TEST_CONDITION( (myClaronTrackingDevice->StopTracking()), "Testing behavior of method StopTracking().\n");
113
114 //CloseConnection
115 MITK_TEST_CONDITION( (myClaronTrackingDevice->CloseConnection()), "Testing behavior of method CloseConnection().\n");
116}
117#endif
118
124int mitkClaronTrackingDeviceTest(int /* argc */, char* /*argv*/[])
125{
126 MITK_TEST_BEGIN("ClaronTrackingDevice");
127
128 TestInstantiation();
129 TestToolConfiguration();
130
131 /* The following tests don't run under linux environments. This is or could be caused by the fact that the MicronTracker interface
132 * is developed under windows and not tested under linux yet (26.2.2009). So - in my opinion - the best approach is to first test
133 * the MicronTracker code under linux (and make the necessary changes of course) and in parallel write the linux tests or make this
134 * tests runnable under linux.
135 */
136#ifdef WIN32
137 if (TestIsMicronTrackerInstalled())
138 {
139 MITK_TEST_OUTPUT(<< "... MicronTracker is installed on your System, so we don't run any further tests. (All tests run on systems without MicronTracker)");
140 }
141 else
142 {
143 MITK_TEST_OUTPUT(<< ".Test");
144 TestAllMethodsOnSystemsWithoutMicronTracker();
145 }
146#endif
147 MITK_TEST_END();
148}
An object of this class represents an exception of the MITK-IGT module.
int mitkClaronTrackingDeviceTest(int, char *[])
IGT Exceptions.