MITK-IGT
IGT Extension of MITK
Loading...
Searching...
No Matches
mitkNavigationToolStorageSerializerAndDeserializerIntegrationTest.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
13//testing headers
14#include <mitkTestingConfig.h>
15#include <mitkTestingMacros.h>
16#include <mitkTestFixture.h>
18
19//some general mitk headers
20#include <mitkCommon.h>
21#include <mitkStandaloneDataStorage.h>
22#include <mitkIOUtil.h>
23
24//headers of IGT classes releated to the tested class
28#include <mitkIGTException.h>
29#include <mitkIGTIOException.h>
30#include <mitkIGTConfig.h>
31
32//POCO headers for file handling
33#include <Poco/Exception.h>
34#include <Poco/Path.h>
35#include <Poco/File.h>
36
37
39{
44 CPPUNIT_TEST_SUITE_END();
45
46private:
48 mitk::NavigationToolStorageSerializer::Pointer m_Serializer;
49 mitk::NavigationToolStorageDeserializer::Pointer m_Deserializer;
50 std::string m_FileName1;
51
52public:
54 void setUp() override
55 {
56 try {
57 m_FileName1 = mitk::IOUtil::CreateTemporaryFile();
58 std::ofstream file;
59 file.open(m_FileName1.c_str());
60 if (!file.good()) {MITK_ERROR <<"Could not create a valid file during setUp() method.";}
61 file.close();
62 }
63 catch (std::exception& e) {
64 MITK_ERROR << "File access Exception: " << e.what();
65 MITK_ERROR <<"Could not create filename during setUp() method.";
66 }
67 m_Serializer = mitk::NavigationToolStorageSerializer::New();
68 mitk::DataStorage::Pointer DataStorage = dynamic_cast<mitk::DataStorage*>(mitk::StandaloneDataStorage::New().GetPointer()); //needed for deserializer!
69 m_Deserializer = mitk::NavigationToolStorageDeserializer::New(DataStorage);
70 }
71
72 void tearDown() override
73 {
74 m_Serializer = nullptr;
75 m_Deserializer = nullptr;
76 try
77 {
78 std::remove(m_FileName1.c_str());
79 }
80 catch(...)
81 {
82 MITK_ERROR << "Warning: Error occured when deleting test file!";
83 }
84 }
85
87 {
88 // let's create objects of our classes
89 mitk::NavigationToolStorageSerializer::Pointer testSerializer = mitk::NavigationToolStorageSerializer::New();
90 CPPUNIT_ASSERT_MESSAGE("Testing instantiation of NavigationToolStorageSerializer",testSerializer.IsNotNull());
91 }
92
94 {
95 mitk::DataStorage::Pointer tempStorage = dynamic_cast<mitk::DataStorage*>(mitk::StandaloneDataStorage::New().GetPointer()); //needed for deserializer!
96 mitk::NavigationToolStorageDeserializer::Pointer testDeserializer = mitk::NavigationToolStorageDeserializer::New(tempStorage);
97 CPPUNIT_ASSERT_MESSAGE("Testing instantiation of NavigationToolStorageDeserializer",testDeserializer.IsNotNull());
98 }
99
101 {
102 //create Tool Storage
103 mitk::NavigationToolStorage::Pointer storage = mitk::NavigationToolStorageTestHelper::CreateTestData_StorageWithOneTool();
104
105 //test serialization
106 CPPUNIT_ASSERT_NO_THROW_MESSAGE("Testing serialization of tool storage with tool registrations", m_Serializer->Serialize(m_FileName1,storage));
107
108 //test deserialization of the same file
109 mitk::NavigationToolStorage::Pointer readStorage = m_Deserializer->Deserialize(m_FileName1);
110 CPPUNIT_ASSERT_MESSAGE("Testing deserialization of tool storage with tool registrations",readStorage.IsNotNull());
111 CPPUNIT_ASSERT_MESSAGE(" ..Testing number of tools in storage",readStorage->GetToolCount()==1);
112
113 mitk::PointSet::Pointer readRegLandmarks = readStorage->GetTool(0)->GetToolLandmarks();
114 mitk::PointSet::Pointer readCalLandmarks = readStorage->GetTool(0)->GetToolControlPoints();
115
116 CPPUNIT_ASSERT_MESSAGE("..Testing if tool registration landmarks have been stored and loaded correctly.",((readRegLandmarks->GetPoint(5)[0] == 4)&&(readRegLandmarks->GetPoint(5)[1] == 5)&&(readRegLandmarks->GetPoint(5)[2] == 6)));
117 CPPUNIT_ASSERT_MESSAGE("..Testing if tool calibration landmarks have been stored and loaded correctly.",((readCalLandmarks->GetPoint(0)[0] == 1)&&(readCalLandmarks->GetPoint(0)[1] == 2)&&(readCalLandmarks->GetPoint(0)[2] == 3)));
118
119 mitk::Point3D readToolTipPos = readStorage->GetTool(0)->GetToolTipPosition();
120 mitk::Quaternion readToolTipRot = readStorage->GetTool(0)->GetToolAxisOrientation();
121
122 CPPUNIT_ASSERT_MESSAGE("..Testing if tool tip position has been stored and loaded correctly.",
123 ((float(readToolTipPos[0]) == float(1.3423))&&
124 (float(readToolTipPos[1]) == float(2.323))&&
125 (float(readToolTipPos[2]) == float(4.332))));
126
127 CPPUNIT_ASSERT_MESSAGE("..Testing if tool tip orientation has been stored and loaded correctly.",
128 ((float(readToolTipRot.x()) == float(0.1))&&
129 (float(readToolTipRot.y()) == float(0.2))&&
130 (float(readToolTipRot.z()) == float(0.3))&&
131 (float(readToolTipRot.r()) == float(0.4))));
132 }
133};
134MITK_TEST_SUITE_REGISTRATION(mitkNavigationToolStorageSerializerAndDeserializerIntegration)
void setUp() override
Setup Always call this method before each Test-case to ensure correct and new intialization of the us...
MITKIGT_EXPORT mitk::NavigationToolStorage::Pointer CreateTestData_StorageWithOneTool()