32 CPPUNIT_TEST_SUITE(mitkGeometryDataIOTestSuite);
41 CPPUNIT_TEST_SUITE_END();
57 m_GeometryData->SetGeometry(m_Geom3D);
62 CPPUNIT_ASSERT(m_TimeGeometry.IsNotNull());
65 void tearDown()
override 67 m_GeometryData =
nullptr;
69 m_ReadGeometryData =
nullptr;
70 m_ReadGeom3D =
nullptr;
71 m_ReadProportionalTimeGeom =
nullptr;
74 void StoreDefaultGeometry3D()
77 ASSERT_Geometry3D_WriteReadLoop_Works();
80 void StoreImageGeometry()
82 m_Geom3D->SetImageGeometry(
true);
83 ASSERT_Geometry3D_WriteReadLoop_Works();
85 m_Geom3D->SetImageGeometry(
false);
86 ASSERT_Geometry3D_WriteReadLoop_Works();
89 void StoreFrameOfReference()
91 m_Geom3D->SetFrameOfReferenceID(513);
92 ASSERT_Geometry3D_WriteReadLoop_Works();
95 ASSERT_Geometry3D_WriteReadLoop_Works();
102 m_Geom3D->SetOrigin(origin);
103 ASSERT_Geometry3D_WriteReadLoop_Works();
106 m_Geom3D->SetOrigin(origin);
107 ASSERT_Geometry3D_WriteReadLoop_Works();
117 m_Geom3D->SetSpacing(spacing);
118 ASSERT_Geometry3D_WriteReadLoop_Works();
131 bounds[3] = 918273645.18293746;
134 m_Geom3D->SetBounds(bounds);
135 ASSERT_Geometry3D_WriteReadLoop_Works();
138 void StoreTransform()
140 mitk::ScalarType matrixCoeffs[9] = {0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8};
142 mitk::AffineTransform3D::MatrixType matrix;
143 matrix.GetVnlMatrix().set(matrixCoeffs);
145 mitk::AffineTransform3D::OffsetType
offset;
146 offset[0] = -918273645.1829374;
149 offset[2] = +918273645.1829374;
151 mitk::AffineTransform3D::Pointer transform = mitk::AffineTransform3D::New();
152 transform->SetMatrix(matrix);
153 transform->SetOffset(offset);
154 m_Geom3D->SetIndexToWorldTransform(transform);
156 ASSERT_Geometry3D_WriteReadLoop_Works();
159 void WriteAndRead_m_GeometryData()
165 std::string filename(
"geometrydata_geometry3d");
170 CPPUNIT_ASSERT_NO_THROW(
mitk::IOUtil::Save(m_GeometryData, tmpPath +
"/" + filename +
"." + extension));
173 std::vector<mitk::BaseData::Pointer> loadedData =
mitk::IOUtil::Load(tmpPath +
"/" + filename +
"." + extension);
174 CPPUNIT_ASSERT_MESSAGE(
"IOUtil could read something (and just one)", loadedData.size() == 1);
176 m_ReadGeometryData =
dynamic_cast<mitk::GeometryData *
>(loadedData.front().GetPointer());
177 CPPUNIT_ASSERT_MESSAGE(
"IOUtil could read _some_ GeometryData", m_ReadGeometryData.IsNotNull());
179 m_ReadGeom3D =
dynamic_cast<mitk::Geometry3D *
>(m_ReadGeometryData->GetGeometry());
180 CPPUNIT_ASSERT_MESSAGE(
"IOUtil could read _some_ Geometry3D", m_ReadGeom3D.IsNotNull());
183 CPPUNIT_ASSERT_MESSAGE(
"IOUtil could read _some_ ProportionalTimeGeometry", m_ReadProportionalTimeGeom.IsNotNull());
186 void ASSERT_Geometry3D_WriteReadLoop_Works()
188 WriteAndRead_m_GeometryData();
193 CPPUNIT_ASSERT_MESSAGE(
"Geometry3D > file > Geometry3D keeps geometry",
194 mitk::Equal(*m_Geom3D, *m_ReadGeom3D, 0.000001,
true));
200 void StoreProportionalTimeGeometry()
203 m_TimeGeometry->ClearAllGeometries();
205 for (
int t = 0; t < 4; ++t)
209 vtkSmartPointer<vtkMatrix4x4> vtk_matrix = vtkSmartPointer<vtkMatrix4x4>::New();
210 for (
int i = 0; i != 4; ++i)
212 for (
int j = 0; j != 4; ++j)
214 vtk_matrix->SetElement(i, j, t + (i + j) / 8.0);
219 vtk_matrix->Invert();
221 timestepGeometry->SetIndexToWorldTransformByVtkMatrix(vtk_matrix);
222 m_TimeGeometry->SetTimeStepGeometry(timestepGeometry, t);
226 m_TimeGeometry->SetFirstTimePoint(-5017.20);
227 m_TimeGeometry->SetStepDuration(2743.83);
230 ASSERT_ProportionalTimeGeometry_WriteReadLoop_Works();
233 void ASSERT_ProportionalTimeGeometry_WriteReadLoop_Works()
235 WriteAndRead_m_GeometryData();
237 CPPUNIT_ASSERT_MESSAGE(
"ProportionalTimeGeometry > file > ProportionalTimeGeometry keeps geometry",
238 mitk::Equal(*m_TimeGeometry, *m_ReadProportionalTimeGeom, 0.000001,
true));
Standard implementation of BaseGeometry.
MITK_TEST_SUITE_REGISTRATION(mitkImageToItk)
BoundingBoxType::BoundsArrayType BoundsArrayType
#define MITK_TEST(TESTMETHOD)
Adds a test to the current test suite.
void FillVector3D(Tout &out, mitk::ScalarType x, mitk::ScalarType y, mitk::ScalarType z)
Test fixture for parameterized tests.
Data class only having a BaseGeometry but not containing any specific data.
static std::string CreateTemporaryDirectory(const std::string &templateName="XXXXXX", std::string path=std::string())
MITKNEWMODULE_EXPORT bool Equal(mitk::ExampleDataStructure *leftHandSide, mitk::ExampleDataStructure *rightHandSide, mitk::ScalarType eps, bool verbose)
Returns true if the example data structures are considered equal.
static void Save(const mitk::BaseData *data, const std::string &path, bool setPathProperty=false)
Save a mitk::BaseData instance.
static CustomMimeType GEOMETRY_DATA_MIMETYPE()
static DataStorage::SetOfObjects::Pointer Load(const std::string &path, DataStorage &storage, const ReaderOptionsFunctorBase *optionsCallback=nullptr)
Load a file into the given DataStorage.