Skip to content

Commit

Permalink
STYLE: Prefer using exception macros in tests
Browse files Browse the repository at this point in the history
Use the `ITK_TRY_EXPECT_EXCEPTION` and `ITK_TRY_EXPECT_NO_EXCEPTION`
macros in tests in lieu of `try/catch` blocks for the sake of
readability and compactness, and to save typing/avoid boilerplate code.

Remove unnecessary print messages that inform about the method being
called.
  • Loading branch information
jhlegarreta authored and dzenanz committed Dec 28, 2022
1 parent 1de6b4f commit f0ce6a8
Show file tree
Hide file tree
Showing 7 changed files with 40 additions and 245 deletions.
Expand Up @@ -88,16 +88,8 @@ InternalTest(int argc, char * argv[])
auto reader = ReaderType::New();
reader->SetFileName(argv[1]);

try
{
reader->Update();
}
catch (const itk::ExceptionObject & err)
{
std::cout << "ExceptionObject caught !" << std::endl;
std::cout << err << std::endl;
return EXIT_FAILURE;
}
ITK_TRY_EXPECT_NO_EXCEPTION(reader->Update());


// Store the input image for convenience
typename ImageType::Pointer image = reader->GetOutput();
Expand Down Expand Up @@ -161,15 +153,8 @@ InternalTest(int argc, char * argv[])
// Set the input mesh for the parametric filter
parametricFilter->SetInput(mesh);

try
{
parametricFilter->Update();
}
catch (const itk::ExceptionObject & e)
{
std::cerr << "Error: " << e.what() << std::endl;
return EXIT_FAILURE;
}
ITK_TRY_EXPECT_NO_EXCEPTION(parametricFilter->Update());


if (parametricFilter->GetOutput()->GetNumberOfPoints() != mesh->GetNumberOfPoints())
{
Expand Down
Expand Up @@ -107,16 +107,8 @@ itkGrayscaleGeodesicErodeDilateImageFilterTest(int argc, char * argv[])
itk::SimpleFilterWatcher watchDilate(dilate);
itk::SimpleFilterWatcher watchErode(erode);

// Execute the filter
try
{
writer->Update();
}
catch (const itk::ExceptionObject & excp)
{
std::cerr << "Exception caught:" << excp << std::endl;
return EXIT_FAILURE;
}
ITK_TRY_EXPECT_NO_EXCEPTION(writer->Update());


std::cout << "Test finished." << std::endl;
return EXIT_SUCCESS;
Expand Down
42 changes: 6 additions & 36 deletions Modules/Numerics/Optimizersv4/test/itkLBFGSBOptimizerv4Test.cxx
Expand Up @@ -317,18 +317,8 @@ itkLBFGSBOptimizerv4Test(int, char *[])
itkOptimizer->AddObserver(itk::IterationEvent(), eventChecker);
itkOptimizer->AddObserver(itk::EndEvent(), eventChecker);

try
{
itkOptimizer->StartOptimization();
}
catch (const itk::ExceptionObject & e)
{
std::cerr << "Exception thrown ! " << std::endl;
std::cerr << "An error occurred during Optimization" << std::endl;
std::cerr << "Location = " << e.GetLocation() << std::endl;
std::cerr << "Description = " << e.GetDescription() << std::endl;
return EXIT_FAILURE;
}
ITK_TRY_EXPECT_NO_EXCEPTION(itkOptimizer->StartOptimization());


const OptimizerType::ParametersType & finalPosition = itkOptimizer->GetCurrentPosition();

Expand Down Expand Up @@ -402,18 +392,8 @@ itkLBFGSBOptimizerv4Test(int, char *[])
metric->SetParameters(initialValue);
itkOptimizer->SetNumberOfIterations(1);

try
{
itkOptimizer->StartOptimization();
}
catch (const itk::ExceptionObject & e)
{
std::cerr << "Exception thrown ! " << std::endl;
std::cerr << "An error occurred during Optimization" << std::endl;
std::cerr << "Location = " << e.GetLocation() << std::endl;
std::cerr << "Description = " << e.GetDescription() << std::endl;
return EXIT_FAILURE;
}
ITK_TRY_EXPECT_NO_EXCEPTION(itkOptimizer->StartOptimization());


std::cout << "Solution = (" << finalPosition[0] << "," << finalPosition[1] << ")" << std::endl;
std::cout << "NumberOfIterations = " << itkOptimizer->GetCurrentIteration() << std::endl;
Expand Down Expand Up @@ -460,18 +440,8 @@ itkLBFGSBOptimizerv4Test(int, char *[])
itkOptimizer2->AddObserver(itk::IterationEvent(), eventChecker);
itkOptimizer2->AddObserver(itk::EndEvent(), eventChecker);

try
{
itkOptimizer2->StartOptimization();
}
catch (const itk::ExceptionObject & e)
{
std::cerr << "Exception thrown ! " << std::endl;
std::cerr << "An error occurred during Optimization" << std::endl;
std::cerr << "Location = " << e.GetLocation() << std::endl;
std::cerr << "Description = " << e.GetDescription() << std::endl;
return EXIT_FAILURE;
}
ITK_TRY_EXPECT_NO_EXCEPTION(itkOptimizer2->StartOptimization());


std::cout << "Boundaries after optimization: " << std::endl;
std::cout << "Upper bound size: " << itkOptimizer2->GetUpperBound().size() << std::endl;
Expand Down
14 changes: 2 additions & 12 deletions Modules/Numerics/Optimizersv4/test/itkPowellOptimizerv4Test.cxx
Expand Up @@ -211,18 +211,8 @@ itkPowellOptimizerv4Test(int argc, char * argv[])
itkOptimizer->SetMetricWorstPossibleValue(metricWorstPossibleValue);
ITK_TEST_SET_GET_VALUE(metricWorstPossibleValue, itkOptimizer->GetMetricWorstPossibleValue());

try
{
itkOptimizer->StartOptimization();
}
catch (const itk::ExceptionObject & e)
{
std::cout << "Exception thrown ! " << std::endl;
std::cout << "An error occurred during Optimization" << std::endl;
std::cout << "Location = " << e.GetLocation() << std::endl;
std::cout << "Description = " << e.GetDescription() << std::endl;
return EXIT_FAILURE;
}
ITK_TRY_EXPECT_NO_EXCEPTION(itkOptimizer->StartOptimization());


ParametersType finalPosition = itkOptimizer->GetCurrentPosition();
std::cout << "Solution = (" << finalPosition[0] << "," << finalPosition[1] << ")" << std::endl;
Expand Down
Expand Up @@ -293,79 +293,26 @@ itkImageToSpatialObjectRegistrationTest(int, char *[])
std::cout << "Number of Parameters : " << metric->GetNumberOfParameters() << std::endl;
ITK_TEST_EXPECT_EQUAL(metric->GetNumberOfParameters(), 3);

bool catching;
try
{
catching = false;
registration->Update();
}
catch (...)
{
catching = true;
}

if (!catching)
{
std::cout << "Test failed!" << std::endl;
return EXIT_FAILURE;
}
// Test exception
ITK_TRY_EXPECT_EXCEPTION(registration->Update());

registration->SetFixedImage(image);
ITK_TEST_SET_GET_VALUE(image, registration->GetFixedImage());

try
{
catching = false;
registration->Update();
}
catch (...)
{
catching = true;
}

if (!catching)
{
std::cout << "Test failed!" << std::endl;
return EXIT_FAILURE;
}
// Test exception
ITK_TRY_EXPECT_EXCEPTION(registration->Update());

registration->SetMovingSpatialObject(group);
ITK_TEST_SET_GET_VALUE(group, registration->GetMovingSpatialObject());

try
{
catching = false;
registration->Update();
}
catch (...)
{
catching = true;
}

if (!catching)
{
std::cout << "Test failed!" << std::endl;
return EXIT_FAILURE;
}
// Test exception
ITK_TRY_EXPECT_EXCEPTION(registration->Update());

registration->SetMetric(metric);
ITK_TEST_SET_GET_VALUE(metric, registration->GetMetric());

try
{
catching = false;
registration->Update();
}
catch (...)
{
catching = true;
}

if (!catching)
{
std::cout << "Test failed!" << std::endl;
return EXIT_FAILURE;
}
// Test exception
ITK_TRY_EXPECT_EXCEPTION(registration->Update());

// Setup the optimizer
TransformType::ParametersType m_ParametersScale;
Expand Down Expand Up @@ -409,42 +356,14 @@ itkImageToSpatialObjectRegistrationTest(int, char *[])
registration->SetOptimizer(optimizer);
ITK_TEST_SET_GET_VALUE(optimizer, registration->GetOptimizer());

try
{
catching = false;
registration->Update();
}
catch (...)
{
catching = true;
}

if (!catching)
{
std::cout << "Test failed!" << std::endl;
return EXIT_FAILURE;
}

// Test exception
ITK_TRY_EXPECT_EXCEPTION(registration->Update());

registration->SetTransform(transform);
ITK_TEST_SET_GET_VALUE(transform, registration->GetTransform());


try
{
catching = false;
registration->Update();
}
catch (...)
{
catching = true;
}

if (!catching)
{
std::cout << "Test failed!" << std::endl;
return EXIT_FAILURE;
}
// Test exception
ITK_TRY_EXPECT_EXCEPTION(registration->Update());

registration->SetInterpolator(interpolator);
ITK_TEST_SET_GET_VALUE(interpolator, registration->GetInterpolator());
Expand Down
Expand Up @@ -261,60 +261,23 @@ itkANTSNeighborhoodCorrelationImageToImageMetricv4Test(int, char ** const)
std::cout << "movingImage:" << std::endl;
ANTSNeighborhoodCorrelationImageToImageMetricv4Test_PrintImage(movingImage);

/* Initialize. */
try
{
std::cout << "Calling Initialize..." << std::endl;
metric->Initialize();
}
catch (const itk::ExceptionObject & exc)
{
std::cerr << "Caught unexpected exception during Initialize: " << exc;
std::cerr << "Test FAILED." << std::endl;
return EXIT_FAILURE;
}
// Initialize
ITK_TRY_EXPECT_NO_EXCEPTION(metric->Initialize());


// Evaluate
MetricType::MeasureType valueReturn1;
MetricType::DerivativeType derivativeReturn;
try
{
std::cout << "Calling GetValueAndDerivative..." << std::endl;
metric->GetValueAndDerivative(valueReturn1, derivativeReturn);
}
catch (const itk::ExceptionObject & exc)
{
std::cerr << "Caught unexpected exception during GetValueAndDerivative: " << exc;
std::cerr << "Test FAILED." << std::endl;
return EXIT_FAILURE;
}
ITK_TRY_EXPECT_NO_EXCEPTION(metric->GetValueAndDerivative(valueReturn1, derivativeReturn));

// Re-initialize
ITK_TRY_EXPECT_NO_EXCEPTION(metric->Initialize());

/* Re-initialize. */
try
{
std::cout << "Calling Initialize..." << std::endl;
metric->Initialize();
}
catch (const itk::ExceptionObject & exc)
{
std::cerr << "Caught unexpected exception during re-initialize: " << exc;
std::cerr << "Test FAILED." << std::endl;
return EXIT_FAILURE;
}

// Evaluate with GetValue
MetricType::MeasureType valueReturn2;
try
{
std::cout << "Calling GetValue..." << std::endl;
valueReturn2 = metric->GetValue();
}
catch (const itk::ExceptionObject & exc)
{
std::cerr << "Caught unexpected exception during GetValue: " << exc;
std::cerr << "Test FAILED." << std::endl;
return EXIT_FAILURE;
}
ITK_TRY_EXPECT_NO_EXCEPTION(valueReturn2 = metric->GetValue());


// Test same value returned by different methods
std::cout << "Check Value return values..." << std::endl;
Expand Down Expand Up @@ -368,31 +331,13 @@ itkANTSNeighborhoodCorrelationImageToImageMetricv4Test(int, char ** const)
metricSparse->SetFixedSampledPointSet(pset);
metricSparse->SetUseSampledPointSet(true);

try
{
metricSparse->Initialize();
}
catch (const itk::ExceptionObject & exc)
{
std::cerr << "Caught unexpected exception during Initialize() for sparse threader: " << exc;
std::cerr << "Test FAILED." << std::endl;
return EXIT_FAILURE;
}
ITK_TRY_EXPECT_NO_EXCEPTION(metricSparse->Initialize());


MetricType::MeasureType valueReturnSparse;
MetricType::DerivativeType derivativeReturnSparse;
ITK_TRY_EXPECT_NO_EXCEPTION(metricSparse->GetValueAndDerivative(valueReturnSparse, derivativeReturnSparse));

try
{
std::cout << "Calling GetValueAndDerivative..." << std::endl;
metricSparse->GetValueAndDerivative(valueReturnSparse, derivativeReturnSparse);
}
catch (const itk::ExceptionObject & exc)
{
std::cerr << "Caught unexpected exception during GetValueAndDrivative() for sparse threader: " << exc;
std::cerr << "Test FAILED." << std::endl;
return EXIT_FAILURE;
}

std::cout << "Check Value return values between dense and sparse threader..." << std::endl;
std::cout << "dense: " << valueReturn1 << ", sparse: " << valueReturnSparse << std::endl;
Expand Down
Expand Up @@ -302,14 +302,8 @@ itkParallelSparseFieldLevelSetImageFilterTest(int argc, char * argv[])
mf->SetNumberOfLayers(numberOfLayers);
ITK_TEST_SET_GET_VALUE(numberOfLayers, mf->GetNumberOfLayers());

try
{
mf->Update();
}
catch (const itk::ExceptionObject & e)
{
std::cerr << e << std::endl;
}
ITK_TRY_EXPECT_NO_EXCEPTION(mf->Update());


mf->GetOutput()->Print(std::cout);

Expand Down

0 comments on commit f0ce6a8

Please sign in to comment.