18 #include "Poco/File.h" 19 #include "Poco/TemporaryFile.h" 35 class SceneIOTestClass
82 mitk::AffineTransform3D::MatrixType matrix;
86 mitk::AffineTransform3D::OffsetType
offset;
88 bool isImageGeometry(
false);
89 unsigned int frameOfReferenceID(47);
97 mitk::AffineTransform3D::Pointer newTransform = mitk::AffineTransform3D::New();
98 newTransform->SetMatrix(matrix);
99 newTransform->SetOffset(offset);
102 newGeometry->SetFrameOfReferenceID(frameOfReferenceID);
103 newGeometry->SetImageGeometry(isImageGeometry);
105 newGeometry->SetIndexToWorldTransform(newTransform);
107 newGeometry->SetBounds(bounds);
108 newGeometry->SetOrigin(origin);
109 newGeometry->SetSpacing(spacing);
112 gdata->SetGeometry(newGeometry);
117 static void FillStorage(
mitk::DataStorage *storage, std::string imageName, std::string surfaceName)
127 imagenode->SetData(image);
128 imagenode->SetName(
"Pic3D");
129 storage->
Add(imagenode);
132 imagechildnode->SetData(image);
133 imagechildnode->SetName(
"Pic3D again");
134 storage->
Add(imagechildnode, imagenode);
143 surfacenode->SetData(surface);
144 surfacenode->SetName(
"binary");
145 storage->
Add(surfacenode);
149 psenode->SetData(ps);
150 psenode->SetName(
"points");
151 storage->
Add(psenode);
155 geomNode->SetData(gdo);
156 geomNode->SetName(
"geometry3d");
157 storage->
Add(geomNode);
169 std::string testString(
"");
170 float testFloatValue = 0.0f;
173 imagePropList->GetStringProperty(
"image type", testString);
174 MITK_TEST_CONDITION(testString ==
"test image",
"Get StringProperty from previously stored image");
176 imagePropList->GetStringProperty(
"greetings", testString);
177 MITK_TEST_CONDITION(testString ==
"to mom",
"Get another StringProperty from previously stored image");
179 imagePropList->GetFloatProperty(
"test_float_property", testFloatValue);
180 MITK_TEST_CONDITION(testFloatValue == -2.57f,
"Get FloatProperty from previously stored image.")
183 mitk::DataNode::Pointer imagechildnode = storage->GetNamedNode("Pic3D again");
184 mitk::DataStorage::SetOfObjects::ConstPointer objects = storage->GetSources(imagechildnode);
189 mitk::
Image::Pointer imagechild = dynamic_cast<
mitk::
Image *>(imagechildnode->GetData());
193 mitk::DataNode::Pointer surfacenode = storage->GetNamedNode("binary");
196 mitk::Surface::Pointer surface = dynamic_cast<
mitk::Surface *>(surfacenode->GetData());
200 mitk::PropertyList::Pointer surfacePropList = surface->GetPropertyList();
201 surfacePropList->GetStringProperty("surface type", testString);
203 "Get StringProperty from previously stored surface node");
205 surfacePropList->GetStringProperty("greetings", testString);
207 "Get another StringProperty from previously stored surface node");
210 mitk::DataNode::Pointer pointsnode = storage->GetNamedNode("points");
213 mitk::PointSet::Pointer pointset = dynamic_cast<
mitk::PointSet *>(pointsnode->GetData());
216 mitk::PointSet::PointType p = pointset->GetPoint(0);
219 p = pointset->GetPoint(1);
221 "Test Pointset entry 1 after loading");
223 p = pointset->GetPoint(2);
227 mitk::DataNode::Pointer geomnode = storage->GetNamedNode("geometry3d");
230 mitk::GeometryData::Pointer gdata = dynamic_cast<
mitk::GeometryData *>(geomnode->GetData());
233 mitk::Geometry3D::Pointer geom3D = dynamic_cast<
mitk::Geometry3D *>(gdata->GetGeometry());
235 MITK_TEST_CONDITION(geom3D->GetImageGeometry() == false, "Reconstructed Geometry3D 'is image geometry'");
236 MITK_TEST_CONDITION(geom3D->GetFrameOfReferenceID() == 47, "Reconstructa Geometry3D has frame of reference '47'");
245 std::string sceneFileName;
247 for (
unsigned int i = 0; i < 1; ++i)
254 long int value = ulimit(UL_SETFSIZE, 1);
268 std::cout <<
"ImageName: " << argv[1] << std::endl;
269 std::cout <<
"SurfaceName: " << argv[2] << std::endl;
271 SceneIOTestClass::FillStorage(storage, argv[1], argv[2]);
274 Poco::Path newname(Poco::TemporaryFile::tempName());
275 sceneFileName = std::string(
MITK_TEST_OUTPUT_DIR) + Poco::Path::separator() + newname.getFileName() +
".zip";
277 "Saving scene file '" << sceneFileName <<
"'");
280 mitk::SceneIO::FailedBaseDataListType::ConstPointer failedNodes = sceneIO->GetFailedNodes();
281 if (failedNodes.IsNotNull() && !failedNodes->empty())
284 for (
auto iter = failedNodes->begin();
285 iter != failedNodes->end();
304 if (failedProperties.IsNotNull() && !failedProperties->IsEmpty())
308 for (
auto iter = propmap->begin(); iter != propmap->end(); ++iter)
310 MITK_TEST_OUTPUT(<<
" - " << iter->second->GetNameOfClass() <<
" associated to key '" << iter->first <<
"'");
315 "Checking if all properties have been saved.")
317 "Checking if all nodes have been saved.")
324 storage = sceneIO->LoadScene(sceneFileName, storage,
true);
327 failedNodes = sceneIO->GetFailedNodes();
328 if (failedNodes.IsNotNull() && !failedNodes->empty())
331 for (
auto iter = failedNodes->begin();
332 iter != failedNodes->end();
350 failedProperties = sceneIO->GetFailedProperties();
351 if (failedProperties.IsNotNull() && !failedProperties->IsEmpty())
355 for (
auto iter = propmap->begin(); iter != propmap->end(); ++iter)
357 MITK_TEST_OUTPUT(<<
" - " << iter->second->GetNameOfClass() <<
" associated to key '" << iter->first <<
"'");
363 SceneIOTestClass::VerifyStorage(storage);
370 pocoSceneFile.remove();
Data management class that handles 'was created by' relations.
BoundingBoxType::BoundsArrayType BoundsArrayType
Base of all data objects.
Follow Up Storage - Class to facilitate loading/accessing structured follow-up data.
#define MITK_TEST_CONDITION_REQUIRED(COND, MSG)
DataCollection - Class to facilitate loading/accessing structured data.
section GeneralTestsDeprecatedOldTestingStyle Deprecated macros All tests with MITK_TEST_BEGIN()
virtual void Add(DataNode *node, const DataStorage::SetOfObjects *parents=nullptr)=0
Adds a DataNode containing a data object to its internal storage.
void FillVector3D(Tout &out, mitk::ScalarType x, mitk::ScalarType y, mitk::ScalarType z)
#define MITK_TEST_OUTPUT(x)
Output some text.
int mitkSceneIOTest(int, char *argv[])
static TestManager * GetInstance()
#define MITK_TEST_OUTPUT_NO_ENDL(x)
Output some text without generating a terminating newline. Include.
virtual SetOfObjects::ConstPointer GetAll() const =0
returns a set of all data objects that are stored in the data storage
#define MITK_TEST_OUTPUT_DIR
std::map< std::string, BaseProperty::Pointer > PropertyMap
#define MITK_TEST_CONDITION(COND, MSG)
bool compare(std::pair< double, int > i, std::pair< double, int > j)
#define MITK_TEST_FAILED_MSG(MSG)
Fail and finish test with message MSG.
Image class for storing images.
mitk::Image::Pointer image
DataNode * GetNamedNode(const char *name) const
Convenience method to get the first node with a given name.