25 MITK_TEST_BEGIN(
"TrackingDeviceSource");
28 mitk::TrackingDeviceSource::Pointer mySource = mitk::TrackingDeviceSource::New();
33 MITK_TEST_CONDITION_REQUIRED(mySource.IsNotNull(),
"Testing instantiation");
35 mySource->SetTrackingDevice(
nullptr);
36 MITK_TEST_CONDITION(mySource->GetTrackingDevice() ==
nullptr,
"Testing Set/GetTrackingDevice(nullptr)");
37 MITK_TEST_CONDITION(mySource->GetNumberOfOutputs() == 0,
"Testing GetNumberOfOutputs with nullptr td");
38 MITK_TEST_FOR_EXCEPTION(std::invalid_argument, mySource->Connect());
39 MITK_TEST_FOR_EXCEPTION(std::invalid_argument, mySource->StartTracking());
41 mitk::VirtualTrackingDevice::Pointer tracker = mitk::VirtualTrackingDevice::New();
42 tracker->SetRefreshRate(10);
45 mySource->SetTrackingDevice(tracker);
46 MITK_TEST_CONDITION(mySource->GetTrackingDevice() == tracker.GetPointer(),
"Testing Set/GetTrackingDevice(tracker)");
47 MITK_TEST_CONDITION(mySource->GetNumberOfOutputs() == 0,
"Testing GetNumberOfOutputs with no tool tracker");
48 tracker = mitk::VirtualTrackingDevice::New();
49 mitk::ReferenceCountWatcher::Pointer watch =
new mitk::ReferenceCountWatcher(tracker);
51 tracker->AddTool(
"T0");
52 tracker->AddTool(
"T1");
53 mySource->SetTrackingDevice(tracker);
54 MITK_TEST_CONDITION(mySource->GetTrackingDevice() == tracker.GetPointer(),
"Testing Set/GetTrackingDevice(tracker2)");
55 MITK_TEST_CONDITION(mySource->GetNumberOfOutputs() == 2,
"Testing GetNumberOfOutputs with 2 tools tracker");
56 MITK_TEST_CONDITION(mySource->IsConnected() ==
false,
"Testing IsConnected()");
58 MITK_TEST_CONDITION(mySource->IsConnected() ==
true,
"Testing Connect()/IsConnected()");
60 mySource->Disconnect();
61 MITK_TEST_CONDITION(mySource->IsConnected() ==
false,
"Testing Disconnect()/IsConnected()");
65 mySource->StartTracking();
66 MITK_TEST_CONDITION(mySource->IsConnected() ==
true,
"Testing StartTracking()/IsConnected()");
67 MITK_TEST_CONDITION(mySource->IsTracking() ==
true,
"Testing StartTracking()/IsTracking()");
70 unsigned long modTime = mySource->GetMTime();
71 mySource->UpdateOutputInformation();
72 MITK_TEST_CONDITION(mySource->GetMTime() != modTime,
"Testing if UpdateOutputInformation() modifies the object");
76 MITK_TEST_CONDITION_REQUIRED(nd0!=
nullptr,
"Testing GetOutput() [1]");
77 nd0 = mySource->GetOutput(nd0->GetName());
78 MITK_TEST_CONDITION_REQUIRED(nd0!=
nullptr,
"Testing GetOutput() [2]");
81 MITK_TEST_CONDITION(mySource->GetOutputIndex(nd0->GetName())==0,
"Testing GetOutputIndex()");
84 mitk::NavigationData::Pointer ndCopy = mitk::NavigationData::New();
85 mySource->GraftNthOutput(1,nd0);
86 ndCopy = mySource->GetOutput(1);
87 MITK_TEST_CONDITION(std::string(ndCopy->GetName())==std::string(nd0->GetName()),
"Testing GraftNthOutput()");
90 mitk::PropertyList::ConstPointer p = mySource->GetParameters();
91 MITK_TEST_CONDITION(p.IsNotNull(),
"Testing GetParameters()");
95 unsigned long tmpMTime0 = nd0->GetMTime();
96 itksys::SystemTools::Delay(500);
99 if(nd0->GetMTime() == tmpMTime0)
101 MITK_TEST_CONDITION(
mitk::Equal(newPos, pos) ==
true,
"Testing if output changes on each update");
105 MITK_TEST_CONDITION(
mitk::Equal(newPos, pos) ==
false,
"Testing if output changes on each update");
108 mySource->StopTracking();
109 mySource->Disconnect();
111 tracker = mitk::VirtualTrackingDevice::New();
112 mySource->SetTrackingDevice(tracker);
113 MITK_TEST_CONDITION(watch->GetReferenceCount() == 0,
"Testing if reference to previous tracker object is released");
116 MITK_TEST_FOR_EXCEPTION(std::runtime_error, mySource->StartTracking());
119 mySource->StartTracking();
128 MITK_TEST_FAILED_MSG(<<
"exception during destruction of source or tracker!");