diff --git a/Modules/Segmentation/ConnectedComponents/test/CMakeLists.txt b/Modules/Segmentation/ConnectedComponents/test/CMakeLists.txt index 276063f169b..6a06023eaf5 100644 --- a/Modules/Segmentation/ConnectedComponents/test/CMakeLists.txt +++ b/Modules/Segmentation/ConnectedComponents/test/CMakeLists.txt @@ -1,6 +1,7 @@ itk_module_test() set(ITKConnectedComponentsTests itkRelabelComponentImageFilterTest.cxx + itkRelabelComponentImageFilterSignednessTest.cxx itkHardConnectedComponentImageFilterTest.cxx itkConnectedComponentImageFilterTestRGB.cxx itkConnectedComponentImageFilterTest.cxx @@ -26,6 +27,12 @@ itk_add_test( ${ITK_TEST_OUTPUT_DIR}/RelabelComponentImageFilterTest.png 130 145) +itk_add_test( + NAME + itkRelabelComponentImageFilterSignednessTest + COMMAND + ITKConnectedComponentsTestDriver + itkRelabelComponentImageFilterSignednessTest) itk_add_test( NAME itkHardConnectedComponentImageFilterTest diff --git a/Modules/Segmentation/ConnectedComponents/test/itkRelabelComponentImageFilterSignednessTest.cxx b/Modules/Segmentation/ConnectedComponents/test/itkRelabelComponentImageFilterSignednessTest.cxx new file mode 100644 index 00000000000..9a670d85407 --- /dev/null +++ b/Modules/Segmentation/ConnectedComponents/test/itkRelabelComponentImageFilterSignednessTest.cxx @@ -0,0 +1,52 @@ +/*========================================================================= + * + * Copyright NumFOCUS + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0.txt + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + *=========================================================================*/ + +#include "itkImage.h" +#include "itkRelabelComponentImageFilter.h" +#include "itkTestingMacros.h" + + +int +itkRelabelComponentImageFilterSignednessTest(int, char *[]) +{ + + constexpr unsigned int Dimension = 3; + // Use a signed type + using PixelType = signed short; + + using ImageType = itk::Image; + using FilterType = itk::RelabelComponentImageFilter; + using LabelType = FilterType::LabelType; + + auto relabeler = FilterType::New(); + + // Call itk::RelabelComponentImageFilter methods to ensure that using a signed image does not raise any + // signedness compilation warning in them + LabelType label{}; + itk::SizeValueType obj{}; + + ITK_TEST_EXPECT_EQUAL(0, relabeler->GetSizeOfObjectInPixels(label)); + ITK_TEST_EXPECT_EQUAL(0, relabeler->GetSizeOfObjectInPixels(obj)); + + ITK_TEST_EXPECT_EQUAL(0, relabeler->GetSizeOfObjectInPhysicalUnits(label)); + ITK_TEST_EXPECT_EQUAL(0, relabeler->GetSizeOfObjectInPhysicalUnits(obj)); + + + std::cout << "Test finished." << std::endl; + return EXIT_SUCCESS; +}