From 5ece62b3603e965cf3cabd06ab22ea508850c952 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sun, 3 May 2026 13:48:45 -0500 Subject: [PATCH 01/10] ENH: Convert itkNormalVariateGeneratorTest1 to GTest --- Modules/Numerics/Statistics/test/CMakeLists.txt | 13 +++++-------- ...est1.cxx => itkNormalVariateGeneratorGTest1.cxx} | 10 ++++------ 2 files changed, 9 insertions(+), 14 deletions(-) rename Modules/Numerics/Statistics/test/{itkNormalVariateGeneratorTest1.cxx => itkNormalVariateGeneratorGTest1.cxx} (93%) diff --git a/Modules/Numerics/Statistics/test/CMakeLists.txt b/Modules/Numerics/Statistics/test/CMakeLists.txt index 38c35229ffa9..b1cd94113a19 100644 --- a/Modules/Numerics/Statistics/test/CMakeLists.txt +++ b/Modules/Numerics/Statistics/test/CMakeLists.txt @@ -53,7 +53,6 @@ set( itkMinimumDecisionRuleTest.cxx itkMixtureModelComponentBaseTest.cxx itkNeighborhoodSamplerTest1.cxx - itkNormalVariateGeneratorTest1.cxx itkPointSetToListSampleAdaptorTest.cxx itkProbabilityDistributionTest.cxx itkRandomVariateGeneratorBaseTest.cxx @@ -784,12 +783,6 @@ itk_add_test( ITKStatisticsTestDriver itkMixtureModelComponentBaseTest ) -itk_add_test( - NAME itkNormalVariateGeneratorTest1 - COMMAND - ITKStatisticsTestDriver - itkNormalVariateGeneratorTest1 -) itk_add_test( NAME itkSampleTest COMMAND @@ -1011,5 +1004,9 @@ itk_add_test( ${ITK_TEST_OUTPUT_DIR}/itkScalarImageToHistogramGeneratorTest.txt ) -set(ITKStatisticsGTests itkChiSquareDistributionGTest.cxx) +set( + ITKStatisticsGTests + itkChiSquareDistributionGTest.cxx + itkNormalVariateGeneratorGTest1.cxx +) creategoogletestdriver(ITKStatistics "${ITKStatistics-Test_LIBRARIES}" "${ITKStatisticsGTests}") diff --git a/Modules/Numerics/Statistics/test/itkNormalVariateGeneratorTest1.cxx b/Modules/Numerics/Statistics/test/itkNormalVariateGeneratorGTest1.cxx similarity index 93% rename from Modules/Numerics/Statistics/test/itkNormalVariateGeneratorTest1.cxx rename to Modules/Numerics/Statistics/test/itkNormalVariateGeneratorGTest1.cxx index 17825a8aaf89..d92371123f93 100644 --- a/Modules/Numerics/Statistics/test/itkNormalVariateGeneratorTest1.cxx +++ b/Modules/Numerics/Statistics/test/itkNormalVariateGeneratorGTest1.cxx @@ -18,8 +18,10 @@ #include "itkNormalVariateGenerator.h" -int -itkNormalVariateGeneratorTest1(int, char *[]) +#include "itkGTest.h" + + +TEST(NormalVariateGenerator, ConvertedLegacyTest) { using NormalGeneratorType = itk::Statistics::NormalVariateGenerator; @@ -54,8 +56,4 @@ itkNormalVariateGeneratorTest1(int, char *[]) // // FIXME: Add here numerical verification (regression testing) // - - - std::cerr << "[PASSED]" << std::endl; - return EXIT_SUCCESS; } From 3680b32b40ebff273852ef4850b8c5c204f9cb00 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sun, 3 May 2026 13:51:29 -0500 Subject: [PATCH 02/10] ENH: Convert itkStatisticsTypesTest to itkStatisticsTypesGTest --- Modules/Numerics/Statistics/test/CMakeLists.txt | 8 +------- ...atisticsTypesTest.cxx => itkStatisticsTypesGTest.cxx} | 9 ++++----- 2 files changed, 5 insertions(+), 12 deletions(-) rename Modules/Numerics/Statistics/test/{itkStatisticsTypesTest.cxx => itkStatisticsTypesGTest.cxx} (96%) diff --git a/Modules/Numerics/Statistics/test/CMakeLists.txt b/Modules/Numerics/Statistics/test/CMakeLists.txt index b1cd94113a19..321a07c0a3fe 100644 --- a/Modules/Numerics/Statistics/test/CMakeLists.txt +++ b/Modules/Numerics/Statistics/test/CMakeLists.txt @@ -80,7 +80,6 @@ set( itkStandardDeviationPerComponentSampleFilterTest.cxx itkStatisticsAlgorithmTest.cxx itkStatisticsAlgorithmTest2.cxx - itkStatisticsTypesTest.cxx itkSubsampleTest.cxx itkSubsampleTest2.cxx itkSubsampleTest3.cxx @@ -913,12 +912,6 @@ itk_add_test( ITKStatisticsTestDriver itkStandardDeviationPerComponentSampleFilterTest ) -itk_add_test( - NAME itkStatisticsTypesTest - COMMAND - ITKStatisticsTestDriver - itkStatisticsTypesTest -) itk_add_test( NAME itkSubsampleTest COMMAND @@ -1008,5 +1001,6 @@ set( ITKStatisticsGTests itkChiSquareDistributionGTest.cxx itkNormalVariateGeneratorGTest1.cxx + itkStatisticsTypesGTest.cxx ) creategoogletestdriver(ITKStatistics "${ITKStatistics-Test_LIBRARIES}" "${ITKStatisticsGTests}") diff --git a/Modules/Numerics/Statistics/test/itkStatisticsTypesTest.cxx b/Modules/Numerics/Statistics/test/itkStatisticsTypesGTest.cxx similarity index 96% rename from Modules/Numerics/Statistics/test/itkStatisticsTypesTest.cxx rename to Modules/Numerics/Statistics/test/itkStatisticsTypesGTest.cxx index e47000ffe9cd..1089aae2d25b 100644 --- a/Modules/Numerics/Statistics/test/itkStatisticsTypesTest.cxx +++ b/Modules/Numerics/Statistics/test/itkStatisticsTypesGTest.cxx @@ -18,6 +18,8 @@ #include "itkMeasurementVectorTraits.h" +#include "itkGTest.h" + #define declareType(_x) \ using _x = itk::Statistics::MeasurementVectorTraits::_x; \ std::cout << #_x << " = " << sizeof(_x) << " bytes "; \ @@ -31,15 +33,12 @@ } \ ITK_MACROEND_NOOP_STATEMENT -int -itkStatisticsTypesTest(int, char *[]) -{ +TEST(StatisticsTypes, ConvertedLegacyTest) +{ declareType(InstanceIdentifier); declareType(AbsoluteFrequencyType); declareType(RelativeFrequencyType); declareType(TotalAbsoluteFrequencyType); declareType(TotalRelativeFrequencyType); - - return EXIT_SUCCESS; } From f325aba3d72855a7d2e9c00b241cfda0f8c2e2d2 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sun, 3 May 2026 13:53:46 -0500 Subject: [PATCH 03/10] ENH: Convert itkMaximumDecisionRuleTest to itkMaximumDecisionRuleGTest --- .../Numerics/Statistics/test/CMakeLists.txt | 8 +----- ...st.cxx => itkMaximumDecisionRuleGTest.cxx} | 27 +++++-------------- 2 files changed, 7 insertions(+), 28 deletions(-) rename Modules/Numerics/Statistics/test/{itkMaximumDecisionRuleTest.cxx => itkMaximumDecisionRuleGTest.cxx} (71%) diff --git a/Modules/Numerics/Statistics/test/CMakeLists.txt b/Modules/Numerics/Statistics/test/CMakeLists.txt index 321a07c0a3fe..c80d8256972b 100644 --- a/Modules/Numerics/Statistics/test/CMakeLists.txt +++ b/Modules/Numerics/Statistics/test/CMakeLists.txt @@ -38,7 +38,6 @@ set( itkListSampleTest.cxx itkMahalanobisDistanceMetricTest.cxx itkManhattanDistanceMetricTest.cxx - itkMaximumDecisionRuleTest.cxx itkMaximumRatioDecisionRuleTest.cxx itkMeanSampleFilterTest.cxx itkMeanSampleFilterTest2.cxx @@ -433,12 +432,6 @@ itk_add_test( ITKStatisticsTestDriver itkKdTreeTestSamplePoints ) -itk_add_test( - NAME itkMaximumDecisionRuleTest - COMMAND - ITKStatisticsTestDriver - itkMaximumDecisionRuleTest -) itk_add_test( NAME itkMinimumDecisionRuleTest COMMAND @@ -1000,6 +993,7 @@ itk_add_test( set( ITKStatisticsGTests itkChiSquareDistributionGTest.cxx + itkMaximumDecisionRuleGTest.cxx itkNormalVariateGeneratorGTest1.cxx itkStatisticsTypesGTest.cxx ) diff --git a/Modules/Numerics/Statistics/test/itkMaximumDecisionRuleTest.cxx b/Modules/Numerics/Statistics/test/itkMaximumDecisionRuleGTest.cxx similarity index 71% rename from Modules/Numerics/Statistics/test/itkMaximumDecisionRuleTest.cxx rename to Modules/Numerics/Statistics/test/itkMaximumDecisionRuleGTest.cxx index 41718cdf4c2d..51f2c54be58b 100644 --- a/Modules/Numerics/Statistics/test/itkMaximumDecisionRuleTest.cxx +++ b/Modules/Numerics/Statistics/test/itkMaximumDecisionRuleGTest.cxx @@ -16,18 +16,15 @@ * *=========================================================================*/ -#include - #include "itkMaximumDecisionRule.h" +#include "itkGTest.h" -int -itkMaximumDecisionRuleTest(int, char *[]) -{ +#include - std::cout << "==================================" << std::endl; - std::cout << "Testing MaximumDecionRule " << std::endl << std::endl; +TEST(MaximumDecisionRule, ConvertedLegacyTest) +{ using DecisionRuleType = itk::Statistics::MaximumDecisionRule; auto decisionRule = DecisionRuleType::New(); @@ -38,11 +35,7 @@ itkMaximumDecisionRuleTest(int, char *[]) discriminantScores[1] = 1.0; discriminantScores[2] = 2.0; - if (decisionRule->Evaluate(discriminantScores) != 2) - { - std::cout << "[FAILED]" << std::endl; - return EXIT_FAILURE; - } + EXPECT_EQ(decisionRule->Evaluate(discriminantScores), 2); DecisionRuleType::MembershipVectorType discriminantScores2; discriminantScores2.resize(3); @@ -51,13 +44,5 @@ itkMaximumDecisionRuleTest(int, char *[]) discriminantScores2[1] = 1.0; discriminantScores2[2] = 2.0; - if (decisionRule->Evaluate(discriminantScores2) != 2) - { - std::cout << "[FAILED]" << std::endl; - return EXIT_FAILURE; - } - - std::cout << "[SUCCEEDED]" << std::endl; - - return EXIT_SUCCESS; + EXPECT_EQ(decisionRule->Evaluate(discriminantScores2), 2); } From 98fee239858e75c2adf8e2fa3ea775049bf18baa Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sun, 3 May 2026 13:56:13 -0500 Subject: [PATCH 04/10] ENH: Convert itkRandomVariateGeneratorBaseTest to GTest --- Modules/Numerics/Statistics/test/CMakeLists.txt | 8 +------- ...seTest.cxx => itkRandomVariateGeneratorBaseGTest.cxx} | 9 ++++----- 2 files changed, 5 insertions(+), 12 deletions(-) rename Modules/Numerics/Statistics/test/{itkRandomVariateGeneratorBaseTest.cxx => itkRandomVariateGeneratorBaseGTest.cxx} (94%) diff --git a/Modules/Numerics/Statistics/test/CMakeLists.txt b/Modules/Numerics/Statistics/test/CMakeLists.txt index c80d8256972b..d1ad7bae0985 100644 --- a/Modules/Numerics/Statistics/test/CMakeLists.txt +++ b/Modules/Numerics/Statistics/test/CMakeLists.txt @@ -54,7 +54,6 @@ set( itkNeighborhoodSamplerTest1.cxx itkPointSetToListSampleAdaptorTest.cxx itkProbabilityDistributionTest.cxx - itkRandomVariateGeneratorBaseTest.cxx itkSampleTest.cxx itkSampleTest2.cxx itkSampleTest3.cxx @@ -703,12 +702,6 @@ itk_add_test( ITKStatisticsTestDriver itkProbabilityDistributionTest ) -itk_add_test( - NAME itkRandomVariateGeneratorBaseTest - COMMAND - ITKStatisticsTestDriver - itkRandomVariateGeneratorBaseTest -) itk_add_test( NAME itkMahalanobisDistanceMetricTest COMMAND @@ -995,6 +988,7 @@ set( itkChiSquareDistributionGTest.cxx itkMaximumDecisionRuleGTest.cxx itkNormalVariateGeneratorGTest1.cxx + itkRandomVariateGeneratorBaseGTest.cxx itkStatisticsTypesGTest.cxx ) creategoogletestdriver(ITKStatistics "${ITKStatistics-Test_LIBRARIES}" "${ITKStatisticsGTests}") diff --git a/Modules/Numerics/Statistics/test/itkRandomVariateGeneratorBaseTest.cxx b/Modules/Numerics/Statistics/test/itkRandomVariateGeneratorBaseGTest.cxx similarity index 94% rename from Modules/Numerics/Statistics/test/itkRandomVariateGeneratorBaseTest.cxx rename to Modules/Numerics/Statistics/test/itkRandomVariateGeneratorBaseGTest.cxx index 9ab7897e0f0d..0466148925cc 100644 --- a/Modules/Numerics/Statistics/test/itkRandomVariateGeneratorBaseTest.cxx +++ b/Modules/Numerics/Statistics/test/itkRandomVariateGeneratorBaseGTest.cxx @@ -17,8 +17,11 @@ *=========================================================================*/ #include "itkRandomVariateGeneratorBase.h" + #include "itkObjectFactory.h" +#include "itkGTest.h" + namespace itk::Statistics { @@ -53,8 +56,7 @@ class VariateGeneratorTestHelper : public RandomVariateGeneratorBase } // namespace itk::Statistics -int -itkRandomVariateGeneratorBaseTest(int, char *[]) +TEST(RandomVariateGeneratorBase, ConvertedLegacyTest) { using GeneratorType = itk::Statistics::VariateGeneratorTestHelper; @@ -65,7 +67,4 @@ itkRandomVariateGeneratorBaseTest(int, char *[]) generator->RunTests(); generator->Print(std::cout); - - std::cerr << "[PASSED]" << std::endl; - return EXIT_SUCCESS; } From c7f02fa8ab9b970f3be8d7daf9118ce0fa8bf248 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sun, 3 May 2026 13:58:31 -0500 Subject: [PATCH 05/10] ENH: Convert itkMinimumDecisionRuleTest to itkMinimumDecisionRuleGTest --- .../Numerics/Statistics/test/CMakeLists.txt | 8 +---- ...st.cxx => itkMinimumDecisionRuleGTest.cxx} | 32 ++++--------------- 2 files changed, 8 insertions(+), 32 deletions(-) rename Modules/Numerics/Statistics/test/{itkMinimumDecisionRuleTest.cxx => itkMinimumDecisionRuleGTest.cxx} (70%) diff --git a/Modules/Numerics/Statistics/test/CMakeLists.txt b/Modules/Numerics/Statistics/test/CMakeLists.txt index d1ad7bae0985..d76b3dfdfa64 100644 --- a/Modules/Numerics/Statistics/test/CMakeLists.txt +++ b/Modules/Numerics/Statistics/test/CMakeLists.txt @@ -49,7 +49,6 @@ set( itkMembershipSampleTest2.cxx itkMembershipSampleTest3.cxx itkMembershipSampleTest4.cxx - itkMinimumDecisionRuleTest.cxx itkMixtureModelComponentBaseTest.cxx itkNeighborhoodSamplerTest1.cxx itkPointSetToListSampleAdaptorTest.cxx @@ -431,12 +430,6 @@ itk_add_test( ITKStatisticsTestDriver itkKdTreeTestSamplePoints ) -itk_add_test( - NAME itkMinimumDecisionRuleTest - COMMAND - ITKStatisticsTestDriver - itkMinimumDecisionRuleTest -) itk_add_test( NAME itkMaximumRatioDecisionRuleTest COMMAND @@ -987,6 +980,7 @@ set( ITKStatisticsGTests itkChiSquareDistributionGTest.cxx itkMaximumDecisionRuleGTest.cxx + itkMinimumDecisionRuleGTest.cxx itkNormalVariateGeneratorGTest1.cxx itkRandomVariateGeneratorBaseGTest.cxx itkStatisticsTypesGTest.cxx diff --git a/Modules/Numerics/Statistics/test/itkMinimumDecisionRuleTest.cxx b/Modules/Numerics/Statistics/test/itkMinimumDecisionRuleGTest.cxx similarity index 70% rename from Modules/Numerics/Statistics/test/itkMinimumDecisionRuleTest.cxx rename to Modules/Numerics/Statistics/test/itkMinimumDecisionRuleGTest.cxx index 7766ab93a062..a53c9c036bd0 100644 --- a/Modules/Numerics/Statistics/test/itkMinimumDecisionRuleTest.cxx +++ b/Modules/Numerics/Statistics/test/itkMinimumDecisionRuleGTest.cxx @@ -16,18 +16,15 @@ * *=========================================================================*/ -#include - #include "itkMinimumDecisionRule.h" +#include "itkGTest.h" -int -itkMinimumDecisionRuleTest(int, char *[]) -{ +#include - std::cout << "==================================" << std::endl; - std::cout << "Testing MinimumDecionRule " << std::endl << std::endl; +TEST(MinimumDecisionRule, ConvertedLegacyTest) +{ using DecisionRuleType = itk::Statistics::MinimumDecisionRule; auto decisionRule = DecisionRuleType::New(); @@ -38,11 +35,7 @@ itkMinimumDecisionRuleTest(int, char *[]) discriminantScores[1] = 1.0; discriminantScores[2] = 2.0; - if (decisionRule->Evaluate(discriminantScores) != 0) - { - std::cout << "[FAILED]" << std::endl; - return EXIT_FAILURE; - } + EXPECT_EQ(decisionRule->Evaluate(discriminantScores), 0); DecisionRuleType::MembershipVectorType discriminantScores2; discriminantScores2.resize(3); @@ -51,11 +44,7 @@ itkMinimumDecisionRuleTest(int, char *[]) discriminantScores2[1] = 1.0; discriminantScores2[2] = 2.0; - if (decisionRule->Evaluate(discriminantScores2) != 0) - { - std::cout << "[FAILED]" << std::endl; - return EXIT_FAILURE; - } + EXPECT_EQ(decisionRule->Evaluate(discriminantScores2), 0); DecisionRuleType::MembershipVectorType discriminantScores3; @@ -65,12 +54,5 @@ itkMinimumDecisionRuleTest(int, char *[]) discriminantScores3[1] = 1.0; discriminantScores3[2] = 2.0; - if (decisionRule->Evaluate(discriminantScores3) != 0) - { - std::cout << "[FAILED]" << std::endl; - return EXIT_FAILURE; - } - - std::cout << "[SUCCEEDED]" << std::endl; - return EXIT_SUCCESS; + EXPECT_EQ(decisionRule->Evaluate(discriminantScores3), 0); } From 033d5edc72182fb8acd1e6176239403ce52f26d5 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sun, 3 May 2026 14:00:51 -0500 Subject: [PATCH 06/10] ENH: Convert itkHistogramToTextureFeaturesFilterNaNTest to GTest --- Modules/Numerics/Statistics/test/CMakeLists.txt | 8 +------- ...HistogramToTextureFeaturesFilterNaNGTest.cxx} | 16 +++++++--------- 2 files changed, 8 insertions(+), 16 deletions(-) rename Modules/Numerics/Statistics/test/{itkHistogramToTextureFeaturesFilterNaNTest.cxx => itkHistogramToTextureFeaturesFilterNaNGTest.cxx} (92%) diff --git a/Modules/Numerics/Statistics/test/CMakeLists.txt b/Modules/Numerics/Statistics/test/CMakeLists.txt index d76b3dfdfa64..8c30a098b8d3 100644 --- a/Modules/Numerics/Statistics/test/CMakeLists.txt +++ b/Modules/Numerics/Statistics/test/CMakeLists.txt @@ -17,7 +17,6 @@ set( itkGaussianMixtureModelComponentTest.cxx itkGaussianRandomSpatialNeighborSubsamplerTest.cxx itkHistogramTest.cxx - itkHistogramToTextureFeaturesFilterNaNTest.cxx itkHistogramToTextureFeaturesFilterTest.cxx itkImageToHistogramFilterTest.cxx itkImageToHistogramFilterTest2.cxx @@ -466,12 +465,6 @@ itk_add_test( ITKStatisticsTestDriver itkHistogramToTextureFeaturesFilterTest ) -itk_add_test( - NAME itkHistogramToTextureFeaturesFilterNaNTest - COMMAND - ITKStatisticsTestDriver - itkHistogramToTextureFeaturesFilterNaNTest -) itk_add_test( NAME itkCovarianceSampleFilterTest COMMAND @@ -979,6 +972,7 @@ itk_add_test( set( ITKStatisticsGTests itkChiSquareDistributionGTest.cxx + itkHistogramToTextureFeaturesFilterNaNGTest.cxx itkMaximumDecisionRuleGTest.cxx itkMinimumDecisionRuleGTest.cxx itkNormalVariateGeneratorGTest1.cxx diff --git a/Modules/Numerics/Statistics/test/itkHistogramToTextureFeaturesFilterNaNTest.cxx b/Modules/Numerics/Statistics/test/itkHistogramToTextureFeaturesFilterNaNGTest.cxx similarity index 92% rename from Modules/Numerics/Statistics/test/itkHistogramToTextureFeaturesFilterNaNTest.cxx rename to Modules/Numerics/Statistics/test/itkHistogramToTextureFeaturesFilterNaNGTest.cxx index 12de49a56eb2..efb5eda72e36 100644 --- a/Modules/Numerics/Statistics/test/itkHistogramToTextureFeaturesFilterNaNTest.cxx +++ b/Modules/Numerics/Statistics/test/itkHistogramToTextureFeaturesFilterNaNGTest.cxx @@ -18,12 +18,15 @@ // Ensure we do not get NaN's with a constant image -#include "itkScalarImageToCooccurrenceMatrixFilter.h" #include "itkHistogramToTextureFeaturesFilter.h" + #include "itkMath.h" +#include "itkScalarImageToCooccurrenceMatrixFilter.h" -int -itkHistogramToTextureFeaturesFilterNaNTest(int, char *[]) +#include "itkGTest.h" + + +TEST(HistogramToTextureFeaturesFilter, ConvertedLegacyTestNaN) { constexpr unsigned int Dimension{ 2 }; using PixelType = unsigned char; @@ -53,10 +56,5 @@ itkHistogramToTextureFeaturesFilterNaNTest(int, char *[]) const TextureFilterType::MeasurementType correlation = filter->GetCorrelation(); std::cout << "Correlation: " << correlation << std::endl; - if (itk::Math::isnan(correlation)) - { - return EXIT_FAILURE; - } - - return EXIT_SUCCESS; + EXPECT_FALSE(itk::Math::isnan(correlation)); } From 3b4c7868b326b2ef7fe4b545b74af32ab940a097 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sun, 3 May 2026 14:03:02 -0500 Subject: [PATCH 07/10] ENH: Convert itkMaximumRatioDecisionRuleTest to GTest --- .../Numerics/Statistics/test/CMakeLists.txt | 8 +---- ...x => itkMaximumRatioDecisionRuleGTest.cxx} | 32 ++++++------------- 2 files changed, 11 insertions(+), 29 deletions(-) rename Modules/Numerics/Statistics/test/{itkMaximumRatioDecisionRuleTest.cxx => itkMaximumRatioDecisionRuleGTest.cxx} (70%) diff --git a/Modules/Numerics/Statistics/test/CMakeLists.txt b/Modules/Numerics/Statistics/test/CMakeLists.txt index 8c30a098b8d3..439aa4e98eca 100644 --- a/Modules/Numerics/Statistics/test/CMakeLists.txt +++ b/Modules/Numerics/Statistics/test/CMakeLists.txt @@ -37,7 +37,6 @@ set( itkListSampleTest.cxx itkMahalanobisDistanceMetricTest.cxx itkManhattanDistanceMetricTest.cxx - itkMaximumRatioDecisionRuleTest.cxx itkMeanSampleFilterTest.cxx itkMeanSampleFilterTest2.cxx itkMeanSampleFilterTest3.cxx @@ -429,12 +428,6 @@ itk_add_test( ITKStatisticsTestDriver itkKdTreeTestSamplePoints ) -itk_add_test( - NAME itkMaximumRatioDecisionRuleTest - COMMAND - ITKStatisticsTestDriver - itkMaximumRatioDecisionRuleTest -) itk_add_test( NAME itkMeanSampleFilterTest COMMAND @@ -974,6 +967,7 @@ set( itkChiSquareDistributionGTest.cxx itkHistogramToTextureFeaturesFilterNaNGTest.cxx itkMaximumDecisionRuleGTest.cxx + itkMaximumRatioDecisionRuleGTest.cxx itkMinimumDecisionRuleGTest.cxx itkNormalVariateGeneratorGTest1.cxx itkRandomVariateGeneratorBaseGTest.cxx diff --git a/Modules/Numerics/Statistics/test/itkMaximumRatioDecisionRuleTest.cxx b/Modules/Numerics/Statistics/test/itkMaximumRatioDecisionRuleGTest.cxx similarity index 70% rename from Modules/Numerics/Statistics/test/itkMaximumRatioDecisionRuleTest.cxx rename to Modules/Numerics/Statistics/test/itkMaximumRatioDecisionRuleGTest.cxx index 700f526eb8ae..a66aacadf97b 100644 --- a/Modules/Numerics/Statistics/test/itkMaximumRatioDecisionRuleTest.cxx +++ b/Modules/Numerics/Statistics/test/itkMaximumRatioDecisionRuleGTest.cxx @@ -16,20 +16,19 @@ * *=========================================================================*/ -#include - #include "itkMaximumRatioDecisionRule.h" -#include "itkTestingMacros.h" +#include "itkGTest.h" + +#include -int -itkMaximumRatioDecisionRuleTest(int, char *[]) -{ +TEST(MaximumRatioDecisionRule, ConvertedLegacyTest) +{ using DecisionRuleType = itk::Statistics::MaximumRatioDecisionRule; auto decisionRule = DecisionRuleType::New(); - ITK_EXERCISE_BASIC_OBJECT_METHODS(decisionRule, MaximumRatioDecisionRule, DecisionRule); + ITK_GTEST_EXERCISE_BASIC_OBJECT_METHODS(decisionRule, MaximumRatioDecisionRule, DecisionRule); DecisionRuleType::MembershipVectorType discriminantScores; @@ -50,14 +49,10 @@ itkMaximumRatioDecisionRuleTest(int, char *[]) for (auto & value : aPrioris) { auto index = &value - &aPrioris.front(); - ITK_TEST_SET_GET_VALUE(value, decisionRule->GetPriorProbabilities()[index]); + EXPECT_EQ(value, decisionRule->GetPriorProbabilities()[index]); } - if (decisionRule->Evaluate(discriminantScores) != 2) - { - std::cout << "[FAILED]" << std::endl; - return EXIT_FAILURE; - } + EXPECT_EQ(decisionRule->Evaluate(discriminantScores), 2); // run with uniform prior aPrioris.clear(); @@ -65,15 +60,8 @@ itkMaximumRatioDecisionRuleTest(int, char *[]) for (auto & value : aPrioris) { auto index = &value - &aPrioris.front(); - ITK_TEST_SET_GET_VALUE(value, decisionRule->GetPriorProbabilities()[index]); - } - - if (decisionRule->Evaluate(discriminantScores) != 1) - { - std::cout << "[FAILED]" << std::endl; - return EXIT_FAILURE; + EXPECT_EQ(value, decisionRule->GetPriorProbabilities()[index]); } - std::cout << "Test finished." << std::endl; - return EXIT_SUCCESS; + EXPECT_EQ(decisionRule->Evaluate(discriminantScores), 1); } From f422ac51b5512668e3cf0b1bfe2b18250d23d439 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sun, 3 May 2026 14:05:22 -0500 Subject: [PATCH 08/10] ENH: Convert itkMixtureModelComponentBaseTest to GTest --- Modules/Numerics/Statistics/test/CMakeLists.txt | 8 +------- ...est.cxx => itkMixtureModelComponentBaseGTest.cxx} | 12 +++++------- 2 files changed, 6 insertions(+), 14 deletions(-) rename Modules/Numerics/Statistics/test/{itkMixtureModelComponentBaseTest.cxx => itkMixtureModelComponentBaseGTest.cxx} (91%) diff --git a/Modules/Numerics/Statistics/test/CMakeLists.txt b/Modules/Numerics/Statistics/test/CMakeLists.txt index 439aa4e98eca..9968630da1e3 100644 --- a/Modules/Numerics/Statistics/test/CMakeLists.txt +++ b/Modules/Numerics/Statistics/test/CMakeLists.txt @@ -47,7 +47,6 @@ set( itkMembershipSampleTest2.cxx itkMembershipSampleTest3.cxx itkMembershipSampleTest4.cxx - itkMixtureModelComponentBaseTest.cxx itkNeighborhoodSamplerTest1.cxx itkPointSetToListSampleAdaptorTest.cxx itkProbabilityDistributionTest.cxx @@ -741,12 +740,6 @@ itk_add_test( ITKStatisticsTestDriver itkNeighborhoodSamplerTest1 ) -itk_add_test( - NAME itkMixtureModelComponentBaseTest - COMMAND - ITKStatisticsTestDriver - itkMixtureModelComponentBaseTest -) itk_add_test( NAME itkSampleTest COMMAND @@ -969,6 +962,7 @@ set( itkMaximumDecisionRuleGTest.cxx itkMaximumRatioDecisionRuleGTest.cxx itkMinimumDecisionRuleGTest.cxx + itkMixtureModelComponentBaseGTest.cxx itkNormalVariateGeneratorGTest1.cxx itkRandomVariateGeneratorBaseGTest.cxx itkStatisticsTypesGTest.cxx diff --git a/Modules/Numerics/Statistics/test/itkMixtureModelComponentBaseTest.cxx b/Modules/Numerics/Statistics/test/itkMixtureModelComponentBaseGTest.cxx similarity index 91% rename from Modules/Numerics/Statistics/test/itkMixtureModelComponentBaseTest.cxx rename to Modules/Numerics/Statistics/test/itkMixtureModelComponentBaseGTest.cxx index edd8669f5bf7..2bf73fbbe6d8 100644 --- a/Modules/Numerics/Statistics/test/itkMixtureModelComponentBaseTest.cxx +++ b/Modules/Numerics/Statistics/test/itkMixtureModelComponentBaseGTest.cxx @@ -17,8 +17,10 @@ *=========================================================================*/ #include "itkMixtureModelComponentBase.h" + #include "itkListSample.h" -#include "itkTestingMacros.h" + +#include "itkGTest.h" namespace itk::Statistics { @@ -60,8 +62,7 @@ class MixtureModelComponentBaseTestHelper : public MixtureModelComponentBase; using SampleType = itk::Statistics::ListSample; @@ -72,8 +73,5 @@ itkMixtureModelComponentBaseTest(int, char *[]) std::cout << "component->GetWeights(): " << component->GetWeights() << std::endl; component->RunTests(); - ITK_TRY_EXPECT_EXCEPTION(component->GetWeight(5)); - - std::cerr << "[PASSED]" << std::endl; - return EXIT_SUCCESS; + EXPECT_THROW(component->GetWeight(5), itk::ExceptionObject); } From 669e61f0033cfab974a7a2e3f9ae3753f4e90c2d Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sun, 3 May 2026 14:07:47 -0500 Subject: [PATCH 09/10] ENH: Convert itkVectorContainerToListSampleAdaptorTest to GTest --- .../Numerics/Statistics/test/CMakeLists.txt | 8 +---- ...ctorContainerToListSampleAdaptorGTest.cxx} | 30 ++++++++----------- 2 files changed, 14 insertions(+), 24 deletions(-) rename Modules/Numerics/Statistics/test/{itkVectorContainerToListSampleAdaptorTest.cxx => itkVectorContainerToListSampleAdaptorGTest.cxx} (74%) diff --git a/Modules/Numerics/Statistics/test/CMakeLists.txt b/Modules/Numerics/Statistics/test/CMakeLists.txt index 9968630da1e3..ae434249be54 100644 --- a/Modules/Numerics/Statistics/test/CMakeLists.txt +++ b/Modules/Numerics/Statistics/test/CMakeLists.txt @@ -79,7 +79,6 @@ set( itkSubsampleTest3.cxx itkTDistributionTest.cxx itkUniformRandomSpatialNeighborSubsamplerTest.cxx - itkVectorContainerToListSampleAdaptorTest.cxx itkWeightedCentroidKdTreeGeneratorTest1.cxx itkWeightedCentroidKdTreeGeneratorTest8.cxx itkWeightedCentroidKdTreeGeneratorTest9.cxx @@ -917,12 +916,6 @@ itk_add_test( 0 ${ITK_TEST_OUTPUT_DIR}/itkUniformRandomSubsamplingTest.mha ) -itk_add_test( - NAME itkVectorContainerToListSampleAdaptorTest - COMMAND - ITKStatisticsTestDriver - itkVectorContainerToListSampleAdaptorTest -) itk_add_test( NAME itkImageToHistogramFilterTest COMMAND @@ -966,5 +959,6 @@ set( itkNormalVariateGeneratorGTest1.cxx itkRandomVariateGeneratorBaseGTest.cxx itkStatisticsTypesGTest.cxx + itkVectorContainerToListSampleAdaptorGTest.cxx ) creategoogletestdriver(ITKStatistics "${ITKStatistics-Test_LIBRARIES}" "${ITKStatisticsGTests}") diff --git a/Modules/Numerics/Statistics/test/itkVectorContainerToListSampleAdaptorTest.cxx b/Modules/Numerics/Statistics/test/itkVectorContainerToListSampleAdaptorGTest.cxx similarity index 74% rename from Modules/Numerics/Statistics/test/itkVectorContainerToListSampleAdaptorTest.cxx rename to Modules/Numerics/Statistics/test/itkVectorContainerToListSampleAdaptorGTest.cxx index 29398c097a3a..f0b415441803 100644 --- a/Modules/Numerics/Statistics/test/itkVectorContainerToListSampleAdaptorTest.cxx +++ b/Modules/Numerics/Statistics/test/itkVectorContainerToListSampleAdaptorGTest.cxx @@ -17,12 +17,12 @@ *=========================================================================*/ #include "itkVectorContainerToListSampleAdaptor.h" -#include "itkTestingMacros.h" -int -itkVectorContainerToListSampleAdaptorTest(int, char *[]) -{ +#include "itkGTest.h" + +TEST(VectorContainerToListSampleAdaptor, ConvertedLegacyTest) +{ using VectorType = itk::Vector; using ContainerType = itk::VectorContainer; @@ -31,17 +31,17 @@ itkVectorContainerToListSampleAdaptorTest(int, char *[]) auto adaptor = AdaptorType::New(); - ITK_EXERCISE_BASIC_OBJECT_METHODS(adaptor, VectorContainerToListSampleAdaptor, ListSample); + ITK_GTEST_EXERCISE_BASIC_OBJECT_METHODS(adaptor, VectorContainerToListSampleAdaptor, ListSample); // Test the exceptions - ITK_TRY_EXPECT_EXCEPTION(adaptor->Size()); + EXPECT_THROW(adaptor->Size(), itk::ExceptionObject); constexpr typename AdaptorType::InstanceIdentifier instance = 0; - ITK_TRY_EXPECT_EXCEPTION(adaptor->GetMeasurementVector(instance)); + EXPECT_THROW(adaptor->GetMeasurementVector(instance), itk::ExceptionObject); - ITK_TRY_EXPECT_EXCEPTION(adaptor->GetFrequency(instance)); + EXPECT_THROW(adaptor->GetFrequency(instance), itk::ExceptionObject); - ITK_TRY_EXPECT_EXCEPTION(adaptor->GetTotalFrequency()); + EXPECT_THROW(adaptor->GetTotalFrequency(), itk::ExceptionObject); // Set the vector container constexpr unsigned int containerSize{ 3 }; @@ -54,21 +54,17 @@ itkVectorContainerToListSampleAdaptorTest(int, char *[]) } adaptor->SetVectorContainer(container); - ITK_TEST_SET_GET_VALUE(container, adaptor->GetVectorContainer()); + EXPECT_EQ(container, adaptor->GetVectorContainer()); constexpr typename AdaptorType::InstanceIdentifier expectedSize = 3; const typename AdaptorType::InstanceIdentifier size = adaptor->Size(); - ITK_TEST_EXPECT_EQUAL(expectedSize, size); + EXPECT_EQ(expectedSize, size); constexpr typename AdaptorType::AbsoluteFrequencyType expectedFreq = 1; const typename AdaptorType::AbsoluteFrequencyType freq = adaptor->GetFrequency(instance); - ITK_TEST_EXPECT_EQUAL(expectedFreq, freq); + EXPECT_EQ(expectedFreq, freq); constexpr typename AdaptorType::TotalAbsoluteFrequencyType expectedTotalFreq = 3; const typename AdaptorType::TotalAbsoluteFrequencyType totalFreq = adaptor->GetTotalFrequency(); - ITK_TEST_EXPECT_EQUAL(expectedTotalFreq, totalFreq); - - - std::cout << "Test finished." << std::endl; - return EXIT_SUCCESS; + EXPECT_EQ(expectedTotalFreq, totalFreq); } From fad64f087df093094e6b6c86a0b225049e56a7b4 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sun, 3 May 2026 14:10:08 -0500 Subject: [PATCH 10/10] ENH: Convert itkMembershipFunctionBaseTest to GTest --- .../Numerics/Statistics/test/CMakeLists.txt | 8 +---- ...cxx => itkMembershipFunctionBaseGTest.cxx} | 30 +++++-------------- 2 files changed, 8 insertions(+), 30 deletions(-) rename Modules/Numerics/Statistics/test/{itkMembershipFunctionBaseTest.cxx => itkMembershipFunctionBaseGTest.cxx} (79%) diff --git a/Modules/Numerics/Statistics/test/CMakeLists.txt b/Modules/Numerics/Statistics/test/CMakeLists.txt index ae434249be54..6f138ac0e2ae 100644 --- a/Modules/Numerics/Statistics/test/CMakeLists.txt +++ b/Modules/Numerics/Statistics/test/CMakeLists.txt @@ -41,7 +41,6 @@ set( itkMeanSampleFilterTest2.cxx itkMeanSampleFilterTest3.cxx itkMeasurementVectorTraitsTest.cxx - itkMembershipFunctionBaseTest.cxx itkMembershipFunctionBaseTest2.cxx itkMembershipSampleTest1.cxx itkMembershipSampleTest2.cxx @@ -691,12 +690,6 @@ itk_add_test( ITKStatisticsTestDriver itkManhattanDistanceMetricTest ) -itk_add_test( - NAME itkMembershipFunctionBaseTest - COMMAND - ITKStatisticsTestDriver - itkMembershipFunctionBaseTest -) itk_add_test( NAME itkMembershipFunctionBaseTest2 COMMAND @@ -954,6 +947,7 @@ set( itkHistogramToTextureFeaturesFilterNaNGTest.cxx itkMaximumDecisionRuleGTest.cxx itkMaximumRatioDecisionRuleGTest.cxx + itkMembershipFunctionBaseGTest.cxx itkMinimumDecisionRuleGTest.cxx itkMixtureModelComponentBaseGTest.cxx itkNormalVariateGeneratorGTest1.cxx diff --git a/Modules/Numerics/Statistics/test/itkMembershipFunctionBaseTest.cxx b/Modules/Numerics/Statistics/test/itkMembershipFunctionBaseGTest.cxx similarity index 79% rename from Modules/Numerics/Statistics/test/itkMembershipFunctionBaseTest.cxx rename to Modules/Numerics/Statistics/test/itkMembershipFunctionBaseGTest.cxx index b2b610dff809..ec4ab17e5bae 100644 --- a/Modules/Numerics/Statistics/test/itkMembershipFunctionBaseTest.cxx +++ b/Modules/Numerics/Statistics/test/itkMembershipFunctionBaseGTest.cxx @@ -16,9 +16,12 @@ * *=========================================================================*/ -#include #include "itkMembershipFunctionBase.h" +#include "itkGTest.h" + +#include + namespace itk::Statistics::MembershipFunctionBaseTest { @@ -53,10 +56,8 @@ class MyMembershipFunctionBase : public MembershipFunctionBase; @@ -73,26 +74,9 @@ itkMembershipFunctionBaseTest(int, char *[]) function->SetMeasurementVectorSize(MeasurementVectorSize); // for code coverage - if (function->GetMeasurementVectorSize() != MeasurementVectorSize) - { - std::cerr << "GetMeasurementVectorSize() Failed !" << std::endl; - return EXIT_FAILURE; - } + EXPECT_EQ(function->GetMeasurementVectorSize(), MeasurementVectorSize); // Test if an exception will be thrown if we try to resize the measurement vector // size - try - { - function->SetMeasurementVectorSize(MeasurementVectorSize + 1); - std::cerr - << "Exception should have been thrown since we are trying to resize non-resizeable measurement vector type " - << std::endl; - return EXIT_FAILURE; - } - catch (const itk::ExceptionObject & excp) - { - std::cerr << "Caughted expected exception: " << excp << std::endl; - } - - return EXIT_SUCCESS; + EXPECT_THROW(function->SetMeasurementVectorSize(MeasurementVectorSize + 1), itk::ExceptionObject); }