27 #include <vtkDebugLeaks.h> 30 #include <vnl/vnl_vector_fixed.hxx> 34 CPPUNIT_TEST_SUITE(mitkVectorTestSuite);
36 MITK_TEST(ItkVecorEqualityUsingSameVector_Success);
37 MITK_TEST(ItkVecorEqualityUsingDifferentVectors_Failure);
38 MITK_TEST(ItkVecorEqualityForHigherEpsilonTolerance_Success);
39 MITK_TEST(ItkVecorEqualityUsingDifferentVectorsWithElementWise_Success);
41 MITK_TEST(ItkPointEqualitySamePoint_Success);
42 MITK_TEST(ItkPointEqualityDifferentPoints_Failure);
43 MITK_TEST(ItkPointEqualitForHigherEpsilons_Success);
44 MITK_TEST(ItkPointEqualitDifferentPointsWithElementWise_Success);
46 MITK_TEST(MitkVnlVectorEqualitySameMitkVnlVector_Success);
47 MITK_TEST(MitkVnlVectorEqualityDifferentMitkVnlVectors_Failure);
48 MITK_TEST(MitkVnlVectorEqualityHigherEpsilon_Success);
49 MITK_TEST(MitkVnlVectorEqualityUsingDifferentMitkVnlVectorsWithElementWise_Success);
51 MITK_TEST(VnlVectorEqualitySameVnlVector_Success);
52 MITK_TEST(VnlVectorEqualityDifferentVnlVectors_Failure);
53 MITK_TEST(VnlVectorEqualityDifferentVnlVectorsWithHighEps_Success);
54 MITK_TEST(VnlVectorEqualityDifferentVnlVectorsWithLowEps_Success);
55 MITK_TEST(VnlVectorEqualityDifferentVnlVectorsWithLowEps_Failure);
57 MITK_TEST(ScalarEqualitySameScalar_Successs);
58 MITK_TEST(ScalarEqualityDifferentScalarsDifferenceGreaterEps_Failure);
59 MITK_TEST(ScalarEqualityDifferentScalarsDifferenceEqualEps_Successs);
60 MITK_TEST(ScalarEqualityDifferentScalarsDifferenceLessEps_Successs);
62 MITK_TEST(MatrixEqualitySameMatrixElementsWithEps_Success);
63 MITK_TEST(MatrixEqualityElementWiseDifferentMatrixElementsWithEpsilonZero_Failure);
64 MITK_TEST(MatrixEqualityDifferentMatrixElementsWithEpsilon_Success);
65 MITK_TEST(MatrixEqualityRMSDifferentMatrixElementsWithEpsilon_Failure);
66 MITK_TEST(MatrixEqualityRMSDifferentMatrixElementsWithEpsilonZero_Success);
68 CPPUNIT_TEST_SUITE_END();
71 itk::Vector<mitk::ScalarType, 3> m_ItkVector_1;
72 itk::Vector<mitk::ScalarType, 3> m_ItkVector_2;
73 itk::Vector<mitk::ScalarType, 3> m_ItkVector_3;
75 itk::Point<mitk::ScalarType, 3> m_ItkPoint_1;
76 itk::Point<mitk::ScalarType, 3> m_ItkPoint_2;
77 itk::Point<mitk::ScalarType, 3> m_ItkPoint_3;
80 vnl_vector_fixed<VnlValueType, 7> m_VnlVector_1;
81 vnl_vector_fixed<VnlValueType, 7> m_VnlVector_2;
82 vnl_vector_fixed<VnlValueType, 7> m_VnlVector_3;
89 vnl_matrix_fixed<mitk::ScalarType, 3, 3> m_VnlMatrix3x3_1;
90 vnl_matrix_fixed<mitk::ScalarType, 3, 3> m_VnlMatrix3x3_2;
97 m_ItkVector_1[0] = 4.6;
98 m_ItkVector_1[1] = 9.76543;
99 m_ItkVector_1[2] = 746.09;
101 m_VnlVector_1[0] = 4.6;
102 m_VnlVector_1[1] = 9.76543;
103 m_VnlVector_1[2] = 746.09;
104 m_VnlVector_1[3] = 56.98;
105 m_VnlVector_1[4] = 22.32;
106 m_VnlVector_1[5] = 1.00;
107 m_VnlVector_1[6] = 746.09;
110 m_Scalar2 = m_Scalar1 +
mitk::eps * 1.01;
111 m_Scalar3 = m_Scalar1;
112 m_Scalar4 = m_Scalar1 +
mitk::eps * 0.95;
114 m_VnlMatrix3x3_1(0, 0) = 1.1;
115 m_VnlMatrix3x3_1(0, 1) = 0.4;
116 m_VnlMatrix3x3_1(0, 2) = 5.3;
117 m_VnlMatrix3x3_1(1, 0) = 2.7;
118 m_VnlMatrix3x3_1(1, 1) = 3578.56418;
119 m_VnlMatrix3x3_1(1, 2) = 123.56;
120 m_VnlMatrix3x3_1(2, 0) = 546.89;
121 m_VnlMatrix3x3_1(2, 1) = 0.0001;
122 m_VnlMatrix3x3_1(2, 2) = 1.0;
124 m_VnlMatrix3x3_2(0, 0) = 1.1000009;
125 m_VnlMatrix3x3_2(0, 1) = 0.4000009;
126 m_VnlMatrix3x3_2(0, 2) = 5.3000009;
127 m_VnlMatrix3x3_2(1, 0) = 2.7000009;
128 m_VnlMatrix3x3_2(1, 1) = 3578.5641809;
129 m_VnlMatrix3x3_2(1, 2) = 123.5600009;
130 m_VnlMatrix3x3_2(2, 0) = 546.8900009;
131 m_VnlMatrix3x3_2(2, 1) = 0.0001009;
132 m_VnlMatrix3x3_2(2, 2) = 1.0000009;
134 m_Epsilon = 0.000001;
137 void tearDown()
override 139 m_ItkVector_1.Fill(0);
140 m_ItkVector_2.Fill(0);
141 m_ItkVector_3.Fill(0);
142 m_ItkPoint_1.Fill(0);
143 m_ItkPoint_2.Fill(0);
144 m_ItkPoint_3.Fill(0);
146 m_VnlVector_1.fill(0);
147 m_VnlVector_2.fill(0);
148 m_VnlVector_3.fill(0);
155 m_VnlMatrix3x3_1.fill(0);
156 m_VnlMatrix3x3_2.fill(0);
159 void ItkVecorEqualityUsingSameVector_Success()
161 CPPUNIT_ASSERT_MESSAGE(
"Test vector equality using the same vector with mitk::eps",
165 void ItkVecorEqualityUsingDifferentVectors_Failure()
167 for (
int i = 0; i < 3; i++)
169 m_ItkVector_2[i] = m_ItkVector_1[i] -
mitk::eps * 1.1;
171 CPPUNIT_ASSERT_NO_THROW_MESSAGE(
172 "Test vector equality using different vectors with an element-wise difference greater than mitk::eps",
176 void ItkVecorEqualityForHigherEpsilonTolerance_Success()
178 for (
int i = 0; i < 3; i++)
180 m_ItkVector_2[i] = m_ItkVector_1[i] -
mitk::eps * 1.1;
182 CPPUNIT_ASSERT_MESSAGE(
"Vectors are equal for higher epsilon tolerance ( 1.2 * mitk::eps )",
186 void ItkVecorEqualityUsingDifferentVectorsWithElementWise_Success()
188 for (
int i = 0; i < 3; i++)
190 m_ItkVector_3[i] = m_ItkVector_1[i] -
mitk::eps * 0.9;
192 CPPUNIT_ASSERT_MESSAGE(
193 "Test vector equality using different vectors with an element-wise difference less than mitk::eps",
197 void ItkPointEqualitySamePoint_Success()
200 for (
int i = 0; i < 3; i++)
202 m_ItkPoint_1[i] = m_ItkVector_1[i];
204 CPPUNIT_ASSERT_MESSAGE(
"Test point equality using the same point with mitk::eps",
208 void ItkPointEqualityDifferentPoints_Failure()
210 for (
int i = 0; i < 3; i++)
212 m_ItkPoint_1[i] = m_ItkVector_1[i];
213 m_ItkPoint_2[i] = m_ItkVector_2[i];
215 CPPUNIT_ASSERT_NO_THROW_MESSAGE(
216 "Test point equality using different points with an element-wise difference greater than mitk::eps",
220 void ItkPointEqualitForHigherEpsilons_Success()
222 for (
int i = 0; i < 3; i++)
224 m_ItkVector_2[i] = m_ItkVector_1[i] -
mitk::eps * 1.1;
227 for (
int i = 0; i < 3; i++)
229 m_ItkPoint_1[i] = m_ItkVector_1[i];
230 m_ItkPoint_2[i] = m_ItkVector_2[i];
232 CPPUNIT_ASSERT_MESSAGE(
"Points are equal for higher epsilon tolerance ( 1.2 * mitk::eps )",
236 void ItkPointEqualitDifferentPointsWithElementWise_Success()
238 for (
int i = 0; i < 3; i++)
240 m_ItkVector_3[i] = m_ItkVector_1[i] -
mitk::eps * 0.9;
243 for (
int i = 0; i < 3; i++)
245 m_ItkPoint_1[i] = m_ItkVector_1[i];
246 m_ItkPoint_3[i] = m_ItkVector_3[i];
248 CPPUNIT_ASSERT_MESSAGE(
249 "Test point equality using different points with an element-wise difference less than mitk::eps",
253 void MitkVnlVectorEqualitySameMitkVnlVector_Success()
257 for (
int i = 0; i < 3; i++)
259 mitkVnlVector_1.put(i, m_ItkVector_1[i]);
262 CPPUNIT_ASSERT_MESSAGE(
"Test mitk vnl vector equality using the same mitk vnl vector with mitk::eps",
266 void MitkVnlVectorEqualityDifferentMitkVnlVectors_Failure()
271 for (
int i = 0; i < 3; i++)
273 mitkVnlVector_1.put(i, m_ItkVector_1[i]);
274 mitkVnlVector_2.put(i, m_ItkVector_2[i]);
277 CPPUNIT_ASSERT_NO_THROW_MESSAGE(
278 "Test mitk vnl vector equality using different mitk vnl vectors with an element-wise difference " 279 "greater than mitk::eps",
283 void MitkVnlVectorEqualityHigherEpsilon_Success()
288 for (
int i = 0; i < 3; i++)
290 m_ItkVector_2[i] = m_ItkVector_1[i] -
mitk::eps * 1.1;
293 for (
int i = 0; i < 3; i++)
295 mitkVnlVector_1.put(i, m_ItkVector_1[i]);
296 mitkVnlVector_2.put(i, m_ItkVector_2[i]);
299 CPPUNIT_ASSERT_MESSAGE(
"Vnl vectors are equal for higher epsilon tolerance ( 1.2 * mitk::eps )",
303 void MitkVnlVectorEqualityUsingDifferentMitkVnlVectorsWithElementWise_Success()
308 for (
int i = 0; i < 3; i++)
310 m_ItkVector_3[i] = m_ItkVector_1[i] -
mitk::eps * 0.9;
313 for (
int i = 0; i < 3; i++)
315 mitkVnlVector_1.put(i, m_ItkVector_1[i]);
316 mitkVnlVector_3.put(i, m_ItkVector_3[i]);
319 CPPUNIT_ASSERT_MESSAGE(
"Test mitk vnl vector equality using " 320 "different mitk vnl vectors with an " 321 "element-wise difference less than mitk::eps",
325 void VnlVectorEqualitySameVnlVector_Success()
329 CPPUNIT_ASSERT_MESSAGE(
"vnl_fixed : v_1 == v_1 ", (mitk::Equal<VnlValueType, 7>(m_VnlVector_1, m_VnlVector_1)));
334 void VnlVectorEqualityDifferentVnlVectors_Failure()
336 for (
int i = 0; i < 7; i++)
338 m_VnlVector_2[i] = m_VnlVector_1[i] -
mitk::eps * 1.1f;
341 CPPUNIT_ASSERT_NO_THROW_MESSAGE(
"vnl_fixed : v_1 != v_2 with mitk::eps ",
342 (mitk::Equal<VnlValueType, 7>(m_VnlVector_1, m_VnlVector_2)));
346 void VnlVectorEqualityDifferentVnlVectorsWithHighEps_Success()
348 for (
int i = 0; i < 7; i++)
350 m_VnlVector_2[i] = m_VnlVector_1[i] -
mitk::eps * 1.1f;
353 CPPUNIT_ASSERT_MESSAGE(
"vnl_fixed : v_1 == v_2 with eps = 1.2 * mitk::eps ",
354 (mitk::Equal<VnlValueType, 7>(m_VnlVector_1, m_VnlVector_2,
mitk::eps * 1.2f)));
357 void VnlVectorEqualityDifferentVnlVectorsWithLowEps_Success()
359 for (
int i = 0; i < 7; i++)
361 m_VnlVector_3[i] = m_VnlVector_1[i] -
mitk::eps * 0.9f;
364 CPPUNIT_ASSERT_MESSAGE(
"vnl_fixed : v_1 == v_3 with eps = 0.8 * mitk::eps ",
365 (mitk::Equal<VnlValueType, 7>(m_VnlVector_1, m_VnlVector_3,
mitk::eps)));
368 void VnlVectorEqualityDifferentVnlVectorsWithLowEps_Failure()
370 for (
int i = 0; i < 7; i++)
372 m_VnlVector_3[i] = m_VnlVector_1[i] -
mitk::eps * 0.9f;
375 CPPUNIT_ASSERT_NO_THROW_MESSAGE(
"vnl_fixed : v_1 != v_3 with eps = 0.8 * mitk::eps ",
376 (mitk::Equal<VnlValueType, 7>(m_VnlVector_1, m_VnlVector_3,
mitk::eps * 0.8f)));
379 void ScalarEqualitySameScalar_Successs()
382 CPPUNIT_ASSERT_MESSAGE(
"Test scalar equality using the same scalar with mitk::eps",
385 void ScalarEqualityDifferentScalarsDifferenceGreaterEps_Failure()
387 CPPUNIT_ASSERT_NO_THROW_MESSAGE(
388 "Test scalar equality using the different scalars with a difference greater than mitk::eps",
392 void ScalarEqualityDifferentScalarsDifferenceEqualEps_Successs()
394 CPPUNIT_ASSERT_MESSAGE(
"Test scalar equality using the different scalars with a difference equal to mitk::eps",
398 void ScalarEqualityDifferentScalarsDifferenceLessEps_Successs()
400 CPPUNIT_ASSERT_MESSAGE(
"Test scalar equality using the different scalars with a difference less than mitk::eps",
404 void MatrixEqualitySameMatrixElementsWithEps_Success()
407 CPPUNIT_ASSERT_MESSAGE(
"Test for matrix equality with given epsilon=mitk::eps and exactly the same matrix elements",
411 void MatrixEqualityElementWiseDifferentMatrixElementsWithEpsilonZero_Failure()
413 CPPUNIT_ASSERT_NO_THROW_MESSAGE(
414 "Test for matrix equality with given epsilon=0.0 and slightly different matrix elements",
418 void MatrixEqualityDifferentMatrixElementsWithEpsilon_Success()
420 CPPUNIT_ASSERT_MESSAGE(
"Test for matrix equality with given epsilon and slightly different matrix elements",
424 void MatrixEqualityRMSDifferentMatrixElementsWithEpsilon_Failure()
426 CPPUNIT_ASSERT_NO_THROW_MESSAGE(
427 "Test for matrix equality with given epsilon=0.0 and slightly different matrix elements",
431 void MatrixEqualityRMSDifferentMatrixElementsWithEpsilonZero_Success()
433 CPPUNIT_ASSERT_MESSAGE(
"Test for matrix equality with given epsilon and slightly different matrix elements",
MITK_TEST_SUITE_REGISTRATION(mitkImageToItk)
bool MatrixEqualElementWise(const vnl_matrix_fixed< TCoordRep, NRows, NCols > &matrix1, const vnl_matrix_fixed< TCoordRep, NRows, NCols > &matrix2, mitk::ScalarType epsilon=mitk::eps)
Check for element-wise matrix equality with a user defined accuracy.
vnl_vector< ScalarType > VnlVector
#define MITK_TEST(TESTMETHOD)
Adds a test to the current test suite.
Test fixture for parameterized tests.
bool MatrixEqualRMS(const vnl_matrix_fixed< TCoordRep, NRows, NCols > &matrix1, const vnl_matrix_fixed< TCoordRep, NRows, NCols > &matrix2, mitk::ScalarType epsilon=mitk::eps)
Check for matrix equality with a user defined accuracy. As an equality metric the root mean squared e...
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.
MITKCORE_EXPORT const ScalarType eps