diff --git a/Modules/ImageStatistics/Testing/files.cmake b/Modules/ImageStatistics/Testing/files.cmake index 2be45c6a95..6ca36d87ec 100644 --- a/Modules/ImageStatistics/Testing/files.cmake +++ b/Modules/ImageStatistics/Testing/files.cmake @@ -1,12 +1,13 @@ -set(MODULE_TESTS - mitkImageStatisticsCalculatorTest.cpp - mitkPointSetStatisticsCalculatorTest.cpp - mitkPointSetDifferenceStatisticsCalculatorTest.cpp - mitkImageStatisticsTextureAnalysisTest.cpp - mitkImageStatisticsContainerManagerTest.cpp -) - -set(MODULE_CUSTOM_TESTS - mitkImageStatisticsHotspotTest.cpp -# mitkMultiGaussianTest.cpp # TODO: activate test to generate new test cases for mitkImageStatisticsHotspotTest -) +set(MODULE_TESTS + mitkImageStatisticsCalculatorTest.cpp + mitkPointSetStatisticsCalculatorTest.cpp + mitkPointSetDifferenceStatisticsCalculatorTest.cpp + mitkImageStatisticsTextureAnalysisTest.cpp + mitkImageStatisticsContainerTest.cpp + mitkImageStatisticsContainerManagerTest.cpp +) + +set(MODULE_CUSTOM_TESTS + mitkImageStatisticsHotspotTest.cpp +# mitkMultiGaussianTest.cpp # TODO: activate test to generate new test cases for mitkImageStatisticsHotspotTest +) diff --git a/Modules/ImageStatistics/Testing/mitkImageStatisticsContainerTest.cpp b/Modules/ImageStatistics/Testing/mitkImageStatisticsContainerTest.cpp new file mode 100644 index 0000000000..c81d04373a --- /dev/null +++ b/Modules/ImageStatistics/Testing/mitkImageStatisticsContainerTest.cpp @@ -0,0 +1,378 @@ +/*============================================================================ + +The Medical Imaging Interaction Toolkit (MITK) + +Copyright (c) German Cancer Research Center (DKFZ) +All rights reserved. + +Use of this source code is governed by a 3-clause BSD license that can be +found in the LICENSE file. + +============================================================================*/ +// Testing +#include "mitkTestingMacros.h" +#include "mitkTestFixture.h" + +//MITK includes +#include "mitkArbitraryTimeGeometry.h" +#include "mitkImageStatisticsContainerNodeHelper.h" +#include "mitkImageStatisticsContainerManager.h" +#include "mitkImageStatisticsContainer.h" + +class mitkImageStatisticsContainerTestSuite : public mitk::TestFixture +{ + CPPUNIT_TEST_SUITE(mitkImageStatisticsContainerTestSuite); + MITK_TEST(StatisticNamesIO); + MITK_TEST(InvalidKey); + MITK_TEST(TimeSteps); + MITK_TEST(PrintSelf); + MITK_TEST(InternalClone); + MITK_TEST(StatisticNames); + MITK_TEST(OverwriteStatistic); + MITK_TEST(AllStatisticNamesForContainer); + MITK_TEST(Reset); + CPPUNIT_TEST_SUITE_END(); + +private: + mitk::ImageStatisticsContainer::Pointer m_StatisticsContainer; + mitk::ImageStatisticsContainer::Pointer m_StatisticsContainer2; + mitk::ImageStatisticsContainer::Pointer m_StatisticsContainer3; + + mitk::ImageStatisticsContainer::ImageStatisticsObject m_StatisticsObject; + mitk::ImageStatisticsContainer::ImageStatisticsObject m_StatisticsObject2; + mitk::ImageStatisticsContainer::ImageStatisticsObject m_StatisticsObject3; + + mitk::ArbitraryTimeGeometry::Pointer m_TimeGeometry; + + mitk::Geometry3D::Pointer m_Geometry1; + mitk::Geometry3D::Pointer m_Geometry2; + mitk::Geometry3D::Pointer m_Geometry3; + mitk::Geometry3D::Pointer m_Geometry3_5; + mitk::Geometry3D::Pointer m_Geometry4; + mitk::Geometry3D::Pointer m_Geometry5; + + mitk::TimePointType m_Geometry1MinTP; + mitk::TimePointType m_Geometry2MinTP; + mitk::TimePointType m_Geometry3MinTP; + mitk::TimePointType m_Geometry3_5MinTP; + mitk::TimePointType m_Geometry4MinTP; + mitk::TimePointType m_Geometry5MinTP; + + mitk::TimePointType m_Geometry1MaxTP; + mitk::TimePointType m_Geometry2MaxTP; + mitk::TimePointType m_Geometry3MaxTP; + mitk::TimePointType m_Geometry3_5MaxTP; + mitk::TimePointType m_Geometry4MaxTP; + mitk::TimePointType m_Geometry5MaxTP; + + std::vector estimatedDefaultStatisticNames + { + "Mean", + "Median", + "StandardDeviation", + "RMS", + "Max", + "MaxPosition", + "Min", + "MinPosition", + "#Voxel", + "Volume [mm^3]", + "Skewness", + "Kurtosis", + "Uniformity", + "Entropy", + "MPP", + "UPP" + }; + +public: + void setUp() override + { + m_StatisticsContainer = mitk::ImageStatisticsContainer::New(); + m_StatisticsContainer2 = mitk::ImageStatisticsContainer::New(); + m_StatisticsContainer3 = mitk::ImageStatisticsContainer::New(); + + m_Geometry1 = mitk::Geometry3D::New(); + m_Geometry2 = mitk::Geometry3D::New(); + m_Geometry3 = mitk::Geometry3D::New(); + m_Geometry3_5 = mitk::Geometry3D::New(); + m_Geometry4 = mitk::Geometry3D::New(); + m_Geometry5 = mitk::Geometry3D::New(); + + m_Geometry1MinTP = 1; + m_Geometry2MinTP = 2; + m_Geometry3MinTP = 3; + m_Geometry3_5MinTP = 3.5; + m_Geometry4MinTP = 4; + m_Geometry5MinTP = 5; + + m_Geometry1MaxTP = 1.9; + m_Geometry2MaxTP = 2.9; + m_Geometry3MaxTP = 3.9; + m_Geometry3_5MaxTP = 3.9; + m_Geometry4MaxTP = 4.9; + m_Geometry5MaxTP = 5.9; + + m_TimeGeometry = mitk::ArbitraryTimeGeometry::New(); + m_TimeGeometry->ClearAllGeometries(); + m_TimeGeometry->AppendNewTimeStep(m_Geometry1, m_Geometry1MinTP, m_Geometry1MaxTP); + m_TimeGeometry->AppendNewTimeStep(m_Geometry2, m_Geometry2MinTP, m_Geometry2MaxTP); + m_TimeGeometry->AppendNewTimeStep(m_Geometry3, m_Geometry3MinTP, m_Geometry3MaxTP); + m_TimeGeometry->AppendNewTimeStep(m_Geometry4, m_Geometry4MinTP, m_Geometry4MaxTP); + m_TimeGeometry->AppendNewTimeStep(m_Geometry5, m_Geometry5MinTP, m_Geometry5MaxTP); + } + + void tearDown() override + { + m_StatisticsContainer->Reset(); + m_StatisticsContainer2->Reset(); + m_StatisticsContainer3->Reset(); + + m_StatisticsObject.Reset(); + m_StatisticsObject2.Reset(); + m_StatisticsObject3.Reset(); + + m_TimeGeometry->ClearAllGeometries(); + } + + void StatisticNamesIO() + { + auto defaultStatisticNames = mitk::ImageStatisticsContainer::ImageStatisticsObject::GetDefaultStatisticNames(); + for (size_t i = 0; i < estimatedDefaultStatisticNames.size(); i++) + { + CPPUNIT_ASSERT_EQUAL_MESSAGE("Estimated default statistics names are not correct.", defaultStatisticNames.at(i), estimatedDefaultStatisticNames.at(i)); + } + + std::string testName = "testName"; + double realTypeTest = 3.14; + m_StatisticsObject.AddStatistic(testName, realTypeTest); + auto customStatisticNames = m_StatisticsObject.GetCustomStatisticNames(); + size_t one = 1; + CPPUNIT_ASSERT_EQUAL_MESSAGE("Amount of estimated custom statistics names is not correct.", customStatisticNames.size(), one); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Estimated custom statistics names are not correct.", customStatisticNames.front(), testName); + + auto allStatisticNames = m_StatisticsObject.GetAllStatisticNames(); + estimatedDefaultStatisticNames.push_back(testName); + for (size_t i = 0; i < estimatedDefaultStatisticNames.size(); i++) + { + CPPUNIT_ASSERT_EQUAL_MESSAGE("Estimated statistics names are not correct.", allStatisticNames.at(i), estimatedDefaultStatisticNames.at(i)); + } + + auto existingStatisticNames = m_StatisticsObject.GetExistingStatisticNames(); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Amount of estimated existing statistics names is not correct.", existingStatisticNames.size(), one); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Estimated existing statistics names are not correct.", existingStatisticNames.front(), testName); + + m_StatisticsObject.Reset(); + CPPUNIT_ASSERT_MESSAGE("Custom statistics names were not removed correctly.", m_StatisticsObject.GetCustomStatisticNames().empty()); + } + + void InvalidKey() + { + CPPUNIT_ASSERT_THROW_MESSAGE("Exception should have been thrown because key does not exists.", m_StatisticsObject.GetValueNonConverted("Test"), mitk::Exception); + } + + void TimeSteps() + { + m_StatisticsContainer->SetTimeGeometry(m_TimeGeometry); + + m_StatisticsContainer->SetStatisticsForTimeStep(0, m_StatisticsObject); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Previous added time step was not saved correctly.", m_StatisticsContainer->TimeStepExists(0), true); + m_StatisticsContainer->SetStatisticsForTimeStep(1, m_StatisticsObject); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Previous added time step was not saved correctly.", m_StatisticsContainer->TimeStepExists(1), true); + m_StatisticsContainer->SetStatisticsForTimeStep(2, m_StatisticsObject); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Previous added time step was not saved correctly.", m_StatisticsContainer->TimeStepExists(2), true); + m_StatisticsContainer->SetStatisticsForTimeStep(3, m_StatisticsObject); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Previous added time step was not saved correctly.", m_StatisticsContainer->TimeStepExists(3), true); + m_StatisticsContainer->SetStatisticsForTimeStep(4, m_StatisticsObject); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Previous added time step was not saved correctly.", m_StatisticsContainer->TimeStepExists(4), true); + + CPPUNIT_ASSERT_THROW_MESSAGE("Out of timeStep geometry bounds timeStep was added but no exception was thrown.", m_StatisticsContainer->SetStatisticsForTimeStep(42, m_StatisticsObject), mitk::Exception); + + CPPUNIT_ASSERT_EQUAL_MESSAGE("Statistics container does not contain the right amount of timeSteps.", static_cast (m_StatisticsContainer->GetNumberOfTimeSteps()), 5); + + CPPUNIT_ASSERT_THROW_MESSAGE("A statistic for a non existing time steps was found.", m_StatisticsContainer->GetStatisticsForTimeStep(42), mitk::Exception); + } + + void PrintSelf() + { + std::stringstream print; + + // Check print function for empty container + CPPUNIT_ASSERT_NO_THROW_MESSAGE("Print function throws an exception.", m_StatisticsContainer->Print(print)); + + m_StatisticsContainer->SetTimeGeometry(m_TimeGeometry); + + m_StatisticsObject.AddStatistic("Test", 4.2); + + m_StatisticsContainer->SetStatisticsForTimeStep(0, m_StatisticsObject); + m_StatisticsContainer->SetStatisticsForTimeStep(1, m_StatisticsObject); + m_StatisticsContainer->SetStatisticsForTimeStep(2, m_StatisticsObject); + m_StatisticsContainer->SetStatisticsForTimeStep(3, m_StatisticsObject); + m_StatisticsContainer->SetStatisticsForTimeStep(4, m_StatisticsObject); + + // Check print function for filled container + CPPUNIT_ASSERT_NO_THROW_MESSAGE("Print function throws an exception.", m_StatisticsContainer->Print(print)); + } + + void InternalClone() + { + m_StatisticsContainer->SetTimeGeometry(m_TimeGeometry); + + m_StatisticsObject.AddStatistic("Test", 4.2); + + m_StatisticsContainer->SetStatisticsForTimeStep(0, m_StatisticsObject); + m_StatisticsContainer->SetStatisticsForTimeStep(1, m_StatisticsObject); + m_StatisticsContainer->SetStatisticsForTimeStep(2, m_StatisticsObject); + m_StatisticsContainer->SetStatisticsForTimeStep(3, m_StatisticsObject); + m_StatisticsContainer->SetStatisticsForTimeStep(4, m_StatisticsObject); + + auto clone = m_StatisticsContainer->Clone(); + + CPPUNIT_ASSERT_EQUAL_MESSAGE("Internal clone was not cloned correctly.", m_StatisticsContainer->GetNumberOfTimeSteps(), clone->GetNumberOfTimeSteps()); + + CPPUNIT_ASSERT_EQUAL_MESSAGE("Internal clone was not cloned correctly.", clone->TimeStepExists(0), true); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Internal clone was not cloned correctly.", clone->TimeStepExists(1), true); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Internal clone was not cloned correctly.", clone->TimeStepExists(2), true); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Internal clone was not cloned correctly.", clone->TimeStepExists(3), true); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Internal clone was not cloned correctly.", clone->TimeStepExists(4), true); + + CPPUNIT_ASSERT_EQUAL_MESSAGE("Internal clone was not cloned correctly.", clone->GetStatisticsForTimeStep(0).HasStatistic("Test"), true); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Internal clone was not cloned correctly.", clone->GetStatisticsForTimeStep(1).HasStatistic("Test"), true); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Internal clone was not cloned correctly.", clone->GetStatisticsForTimeStep(2).HasStatistic("Test"), true); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Internal clone was not cloned correctly.", clone->GetStatisticsForTimeStep(3).HasStatistic("Test"), true); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Internal clone was not cloned correctly.", clone->GetStatisticsForTimeStep(4).HasStatistic("Test"), true); + } + + void StatisticNames() + { + m_StatisticsContainer->SetTimeGeometry(m_TimeGeometry); + m_StatisticsContainer2->SetTimeGeometry(m_TimeGeometry); + m_StatisticsContainer3->SetTimeGeometry(m_TimeGeometry); + + m_StatisticsObject.AddStatistic("Test", 4.2); + m_StatisticsObject2.AddStatistic("Test2", 4.2); + m_StatisticsObject3.AddStatistic("Test3", 4.2); + + // Setting the same statistics for different time steps will only add the statistics name once. + m_StatisticsContainer->SetStatisticsForTimeStep(0, m_StatisticsObject); + m_StatisticsContainer->SetStatisticsForTimeStep(1, m_StatisticsObject); + m_StatisticsContainer->SetStatisticsForTimeStep(2, m_StatisticsObject); + m_StatisticsContainer->SetStatisticsForTimeStep(3, m_StatisticsObject); + m_StatisticsContainer->SetStatisticsForTimeStep(4, m_StatisticsObject); + + // Setting the same statistics for different time steps will only add the statistics name once. + m_StatisticsContainer2->SetStatisticsForTimeStep(0, m_StatisticsObject2); + m_StatisticsContainer2->SetStatisticsForTimeStep(1, m_StatisticsObject2); + m_StatisticsContainer2->SetStatisticsForTimeStep(2, m_StatisticsObject2); + m_StatisticsContainer2->SetStatisticsForTimeStep(3, m_StatisticsObject2); + m_StatisticsContainer2->SetStatisticsForTimeStep(4, m_StatisticsObject2); + + // Setting the same statistics for different time steps will only add the statistics name once. + m_StatisticsContainer3->SetStatisticsForTimeStep(0, m_StatisticsObject3); + m_StatisticsContainer3->SetStatisticsForTimeStep(1, m_StatisticsObject3); + m_StatisticsContainer3->SetStatisticsForTimeStep(2, m_StatisticsObject3); + m_StatisticsContainer3->SetStatisticsForTimeStep(3, m_StatisticsObject3); + m_StatisticsContainer3->SetStatisticsForTimeStep(4, m_StatisticsObject3); + + CPPUNIT_ASSERT_EQUAL_MESSAGE("Estimated statistics names are not correct.", mitk::GetAllStatisticNames(m_StatisticsContainer).size(), estimatedDefaultStatisticNames.size() + 1); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Custom statistic name was not saved correctly.", m_StatisticsContainer->GetStatisticsForTimeStep(0).HasStatistic("Test"), true); + + std::vector containers; + + containers.push_back(m_StatisticsContainer2.GetPointer()); + containers.push_back(m_StatisticsContainer3.GetPointer()); + + CPPUNIT_ASSERT_EQUAL_MESSAGE("Estimated statistics names are not correct.", mitk::GetAllStatisticNames(containers).size(), estimatedDefaultStatisticNames.size() + 2); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Custom statistic name was not saved correctly.", m_StatisticsContainer2->GetStatisticsForTimeStep(0).HasStatistic("Test2"), true); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Custom statistic name was not saved correctly.", m_StatisticsContainer3->GetStatisticsForTimeStep(0).HasStatistic("Test3"), true); + } + + void OverwriteStatistic() + { + m_StatisticsContainer->SetTimeGeometry(m_TimeGeometry); + + m_StatisticsObject.AddStatistic("Test", 4.2); + + m_StatisticsContainer->SetStatisticsForTimeStep(0, m_StatisticsObject); + m_StatisticsContainer->SetStatisticsForTimeStep(1, m_StatisticsObject); + m_StatisticsContainer->SetStatisticsForTimeStep(2, m_StatisticsObject); + m_StatisticsContainer->SetStatisticsForTimeStep(3, m_StatisticsObject); + m_StatisticsContainer->SetStatisticsForTimeStep(4, m_StatisticsObject); + + CPPUNIT_ASSERT_EQUAL_MESSAGE("Statistic was not correctly added to StatisticsObject.", boost::get (m_StatisticsContainer->GetStatisticsForTimeStep(0).GetValueNonConverted("Test")), 4.2); + + // An existing statistic won't be updated by adding another statistic with same name to that object. + m_StatisticsObject.AddStatistic("Test", 42.0); + + CPPUNIT_ASSERT_EQUAL_MESSAGE("Statistic was overwritten.", boost::get(m_StatisticsContainer->GetStatisticsForTimeStep(0).GetValueNonConverted("Test")), 4.2); + } + + void AllStatisticNamesForContainer() + { + m_StatisticsContainer->SetTimeGeometry(m_TimeGeometry); + + m_StatisticsObject.AddStatistic("Test", 4.2); + m_StatisticsObject2.AddStatistic("Test2", 4.2); + + // Setting the same statistics for different time steps will only add the statistics name once. + m_StatisticsContainer->SetStatisticsForTimeStep(0, m_StatisticsObject); + m_StatisticsContainer->SetStatisticsForTimeStep(1, m_StatisticsObject2); + m_StatisticsContainer->SetStatisticsForTimeStep(2, m_StatisticsObject); + m_StatisticsContainer->SetStatisticsForTimeStep(3, m_StatisticsObject2); + m_StatisticsContainer->SetStatisticsForTimeStep(4, m_StatisticsObject); + + std::vector containers; + + // Check if empty vector triggers exception. + CPPUNIT_ASSERT_NO_THROW_MESSAGE("Empty vector triggered an exception.", mitk::GetAllStatisticNames(containers)); + + containers.push_back(m_StatisticsContainer2.GetPointer()); + containers.push_back(m_StatisticsContainer3.GetPointer()); + + // Check if vector with empty container triggers exception. + CPPUNIT_ASSERT_NO_THROW_MESSAGE("Empty container triggered an exception.", mitk::GetAllStatisticNames(containers)); + + // Adding filled container to check if data was saved correctly. + containers.push_back(m_StatisticsContainer.GetPointer()); + + CPPUNIT_ASSERT_EQUAL_MESSAGE("Estimated statistics names are not correct.", mitk::GetAllStatisticNames(containers).size(), estimatedDefaultStatisticNames.size() + 2); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Custom statistic name was not saved correctly.", m_StatisticsContainer->GetStatisticsForTimeStep(0).HasStatistic("Test"), true); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Custom statistic name was not saved correctly.", m_StatisticsContainer->GetStatisticsForTimeStep(1).HasStatistic("Test2"), true); + } + + void Reset() + { + m_StatisticsContainer->SetTimeGeometry(m_TimeGeometry); + + m_StatisticsObject.AddStatistic("Test", 4.2); + + m_StatisticsContainer->SetStatisticsForTimeStep(0, m_StatisticsObject); + m_StatisticsContainer->SetStatisticsForTimeStep(1, m_StatisticsObject); + m_StatisticsContainer->SetStatisticsForTimeStep(2, m_StatisticsObject); + m_StatisticsContainer->SetStatisticsForTimeStep(3, m_StatisticsObject); + m_StatisticsContainer->SetStatisticsForTimeStep(4, m_StatisticsObject); + + m_StatisticsContainer->Reset(); + + m_StatisticsObject.Reset(); + + m_TimeGeometry->ClearAllGeometries(); + + CPPUNIT_ASSERT_EQUAL_MESSAGE("Statistic object for time step was not deleted correctly.", m_StatisticsContainer->GetStatisticsForTimeStep(0).GetExistingStatisticNames().size(), size_t()); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Statistic object for time step was not deleted correctly.", m_StatisticsContainer->GetStatisticsForTimeStep(0).GetCustomStatisticNames().size(), size_t()); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Statistic object for time step was not deleted correctly.", m_StatisticsContainer->GetStatisticsForTimeStep(1).GetExistingStatisticNames().size(), size_t()); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Statistic object for time step was not deleted correctly.", m_StatisticsContainer->GetStatisticsForTimeStep(1).GetCustomStatisticNames().size(), size_t()); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Statistic object for time step was not deleted correctly.", m_StatisticsContainer->GetStatisticsForTimeStep(2).GetExistingStatisticNames().size(), size_t()); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Statistic object for time step was not deleted correctly.", m_StatisticsContainer->GetStatisticsForTimeStep(2).GetCustomStatisticNames().size(), size_t()); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Statistic object for time step was not deleted correctly.", m_StatisticsContainer->GetStatisticsForTimeStep(3).GetExistingStatisticNames().size(), size_t()); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Statistic object for time step was not deleted correctly.", m_StatisticsContainer->GetStatisticsForTimeStep(3).GetCustomStatisticNames().size(), size_t()); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Statistic object for time step was not deleted correctly.", m_StatisticsContainer->GetStatisticsForTimeStep(4).GetExistingStatisticNames().size(), size_t()); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Statistic object for time step was not deleted correctly.", m_StatisticsContainer->GetStatisticsForTimeStep(4).GetCustomStatisticNames().size(), size_t()); + + CPPUNIT_ASSERT_EQUAL_MESSAGE("Statistic was not deleted correctly.", m_StatisticsObject.HasStatistic("Test"), false); + + CPPUNIT_ASSERT_EQUAL_MESSAGE("Time geometry was not cleared correctly.", m_TimeGeometry->IsValid(), false); + } +}; + +MITK_TEST_SUITE_REGISTRATION(mitkImageStatisticsContainer)