MITK-IGT
IGT Extension of MITK
Loading...
Searching...
No Matches
mitkNavigationToolStorageTest.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 "mitkNavigationTool.h"
15#include "mitkStandaloneDataStorage.h"
16#include "mitkCommon.h"
17#include "mitkTestingMacros.h"
18
20 {
21 public:
22
23 static void TestInstantiation()
24 {
25 // let's create an object of our class
26 mitk::NavigationToolStorage::Pointer myStorage = mitk::NavigationToolStorage::New();
27 MITK_TEST_CONDITION_REQUIRED(myStorage.IsNotNull(),"Testing instantiation with constructor 1.")
28
29 mitk::DataStorage::Pointer myDataStorage = dynamic_cast<mitk::DataStorage*>(mitk::StandaloneDataStorage::New().GetPointer());
30 mitk::NavigationToolStorage::Pointer myStorage2 = mitk::NavigationToolStorage::New(myDataStorage);
31 MITK_TEST_CONDITION_REQUIRED(myStorage2.IsNotNull(),"Testing instantiation with constructor 2.")
32
33 }
34
35 static void TestAddAndDelete()
36 {
37 mitk::NavigationToolStorage::Pointer myStorage = mitk::NavigationToolStorage::New();
38
39 //first tool
40 mitk::NavigationTool::Pointer myTool1 = mitk::NavigationTool::New();
41 myTool1->SetIdentifier("001");
42 MITK_TEST_CONDITION_REQUIRED(myStorage->AddTool(myTool1),"Testing: Add 1st tool.");
43 MITK_TEST_CONDITION_REQUIRED(myStorage->GetToolCount()==1,"Testing: Is first tool in storage?");
44
45 //second tool
46 mitk::NavigationTool::Pointer myTool2 = mitk::NavigationTool::New();
47 myTool2->SetIdentifier("002");
48 MITK_TEST_CONDITION_REQUIRED(myStorage->AddTool(myTool2),"Testing: Add 2nd tool.");
49 MITK_TEST_CONDITION_REQUIRED(myStorage->GetToolCount()==2,"Testing: Is second tool in storage?");
50
51 //third tool (same identifier => not valid!)
52 mitk::NavigationTool::Pointer myTool3 = mitk::NavigationTool::New();
53 myTool3->SetIdentifier("002");
54 MITK_TEST_CONDITION_REQUIRED(!myStorage->AddTool(myTool3),"Testing: Add 3rd tool, which is not valid.");
55 MITK_TEST_CONDITION_REQUIRED(myStorage->GetToolCount()==2,"Testing: 3rd tool should NOT be in the storage!");
56
57 //delete second tool
58 myStorage->DeleteTool(1);
59 MITK_TEST_CONDITION_REQUIRED(myStorage->GetToolCount()==1,"Testing: Delete 2nd tool.");
60
61 //delete first tool
62 myStorage->DeleteTool(0);
63 MITK_TEST_CONDITION_REQUIRED(myStorage->GetToolCount()==0,"Testing: Delete 1st tool.");
64
65 //delete tool with wrong tool number
66 MITK_TEST_CONDITION_REQUIRED(!myStorage->DeleteTool(412),"Testing: Delete non-existing tool. No error should occur!");
67 }
68
70 {
71 mitk::NavigationToolStorage::Pointer myStorage = mitk::NavigationToolStorage::New();
72 for(int i=0; i<100; i++)
73 {
74 mitk::NavigationTool::Pointer myTool = mitk::NavigationTool::New();
75 std::stringstream str;
76 str << i;
77 myTool->SetIdentifier(str.str());
78 myStorage->AddTool(myTool);
79 }
80 MITK_TEST_CONDITION_REQUIRED(myStorage->GetToolCount()==100,"Testing: Adding 100 tools.");
81 for(int i=99; i>-1; i--)
82 {
83 myStorage->DeleteTool(i);
84 }
85 MITK_TEST_CONDITION_REQUIRED(myStorage->GetToolCount()==0,"Testing: Delete 100 tools.");
86 }
87
89 {
90 mitk::NavigationToolStorage::Pointer myStorage = mitk::NavigationToolStorage::New();
91 for(int i=0; i<100; i++)
92 {
93 mitk::NavigationTool::Pointer myTool = mitk::NavigationTool::New();
94 std::stringstream str;
95 str << i;
96 myTool->SetIdentifier(str.str());
97 myStorage->AddTool(myTool);
98 }
99 MITK_TEST_CONDITION_REQUIRED(myStorage->GetToolCount()==100,"Testing: Adding 100 tools.");
100 MITK_TEST_CONDITION_REQUIRED(!myStorage->isEmpty(),"Testing: method isEmpty() with non empty storage.");
101 MITK_TEST_CONDITION_REQUIRED(myStorage->DeleteAllTools(),"Testing: Delete method.");
102 MITK_TEST_CONDITION_REQUIRED(myStorage->isEmpty(),"Testing: method isEmpty() with empty storage.");
103
104 MITK_TEST_CONDITION_REQUIRED(myStorage->GetToolCount()==0,"Testing: Delete 100 tools at once.");
105 }
106
107 static void TestGetTool()
108 {
109 //let's create an object of our class
110 mitk::NavigationToolStorage::Pointer myStorage = mitk::NavigationToolStorage::New();
111
112 //let's add two different tools
113 //first tool
114 mitk::NavigationTool::Pointer myTool1 = mitk::NavigationTool::New();
115 myTool1->SetSerialNumber("0815");
116 myTool1->SetIdentifier("001");
117 mitk::DataNode::Pointer toolNode = mitk::DataNode::New();
118 toolNode->SetName("Tool1");
119 myTool1->SetDataNode(toolNode);
120 myStorage->AddTool(myTool1);
121
122 //second tool
123 mitk::NavigationTool::Pointer myTool2 = mitk::NavigationTool::New();
124 myTool2->SetSerialNumber("0816");
125 myTool2->SetIdentifier("002");
126 myStorage->AddTool(myTool2);
127
128 //let's try to get the first tool in different ways.
129 mitk::NavigationTool::Pointer myToolGet = myStorage->GetTool(0);
130 MITK_TEST_CONDITION_REQUIRED(myToolGet==myTool1,"Testing GetTool() by number.");
131 myToolGet = myStorage->GetTool("001");
132 MITK_TEST_CONDITION_REQUIRED(myToolGet==myTool1,"Testing GetTool() by identifier.");
133 myToolGet = myStorage->GetToolByName("Tool1");
134 MITK_TEST_CONDITION_REQUIRED(myToolGet==myTool1,"Testing GetTool() by name.");
135
136 //let's try to get a tool which doesn't exist
137 myToolGet = myStorage->GetToolByName("quatsch");
138 MITK_TEST_CONDITION_REQUIRED(myToolGet.IsNull(),"Testing GetTool() with wrong name.");
139 }
140
142 {
143 mitk::DataStorage::Pointer myDataStorage = dynamic_cast<mitk::DataStorage*>(mitk::StandaloneDataStorage::New().GetPointer());
144 mitk::NavigationToolStorage::Pointer myStorage = mitk::NavigationToolStorage::New(myDataStorage);
145
146 //define first tool
147 mitk::NavigationTool::Pointer myTool1 = mitk::NavigationTool::New();
148 myTool1->SetIdentifier("001");
149 mitk::DataNode::Pointer node1 = mitk::DataNode::New();
150 node1->SetName("Tool1");
151 myTool1->SetDataNode(node1);
152
153 //define second tool
154 mitk::NavigationTool::Pointer myTool2 = mitk::NavigationTool::New();
155 myTool2->SetIdentifier("002");
156 mitk::DataNode::Pointer node2 = mitk::DataNode::New();
157 node2->SetName("Tool2");
158 myTool2->SetDataNode(node2);
159
160 //execute tests
161 MITK_TEST_CONDITION_REQUIRED(myStorage->AddTool(myTool1),"Testing: Add one tool.");
162 MITK_TEST_CONDITION_REQUIRED(myDataStorage->GetNamedNode("Tool1")==node1,"Testing: Is data node in data storage?");
163 MITK_TEST_CONDITION_REQUIRED(myStorage->DeleteAllTools(),"Deleting all tools.");
164 MITK_TEST_CONDITION_REQUIRED(myDataStorage->GetNamedNode("Tool1")==nullptr,"Testing: Was data node removed from storage?");
165 MITK_TEST_CONDITION_REQUIRED(myStorage->AddTool(myTool1),"Testing: Add two tools (1).");
166 MITK_TEST_CONDITION_REQUIRED(myStorage->AddTool(myTool2),"Testing: Add two tools (2).");
167 MITK_TEST_CONDITION_REQUIRED(myDataStorage->GetNamedNode("Tool1")==node1,"Testing: Is data node in data storage (1)?");
168 MITK_TEST_CONDITION_REQUIRED(myDataStorage->GetNamedNode("Tool2")==node2,"Testing: Is data node in data storage (2)?");
169 MITK_TEST_CONDITION_REQUIRED(myStorage->DeleteTool(0),"Deleting tool 1.");
170 MITK_TEST_CONDITION_REQUIRED(myDataStorage->GetNamedNode("Tool1")==nullptr,"Testing: Was data node 1 deleted?");
171 MITK_TEST_CONDITION_REQUIRED(myDataStorage->GetNamedNode("Tool2")==node2,"Testing: Is data node 2 still in data storage?");
172
173 }
174 };
175
190
191
int mitkNavigationToolStorageTest(int, char *[])