Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
ba9741d
ENH: Convert itkVersionTest to itkVersionGTest
hjmjohnson Mar 6, 2026
3ce58ca
ENH: Convert itkDataTypeTest to itkDataTypeGTest
hjmjohnson Mar 6, 2026
0a80e29
ENH: Convert itkEventObjectTest to itkEventObjectGTest
hjmjohnson Mar 6, 2026
15dd43a
ENH: Convert itkModifiedTimeTest to itkModifiedTimeGTest
hjmjohnson Mar 6, 2026
879b2b0
ENH: Convert itkByteSwapTest to itkByteSwapGTest
hjmjohnson Mar 6, 2026
577052e
ENH: Convert itkIntTypesTest to itkIntTypesGTest
hjmjohnson Mar 6, 2026
f1733c4
ENH: Convert itkMathRoundTest/Test2/ProfileTest1 to itkMathRoundGTest
hjmjohnson Mar 6, 2026
04240ed
ENH: Convert itkMathCastWithRangeCheckTest to itkMathCastWithRangeChe…
hjmjohnson Mar 6, 2026
326f029
ENH: Convert itkTimeStampTest to itkTimeStampGTest
hjmjohnson Mar 6, 2026
745bc62
ENH: Convert itkBoundingBoxTest to itkBoundingBoxGTest
hjmjohnson Mar 6, 2026
aafefd0
ENH: Convert itkBoundaryConditionTest to itkBoundaryConditionGTest
hjmjohnson Mar 6, 2026
3dba390
ENH: Convert itkAbortProcessObjectTest to itkAbortProcessObjectGTest
hjmjohnson Mar 6, 2026
1d32f6f
ENH: Convert itkAutoPointerTest to itkAutoPointerGTest
hjmjohnson Mar 7, 2026
401a0ff
ENH: Convert itkBresenhamLineTest to itkBresenhamLineGTest
hjmjohnson Mar 7, 2026
9512be9
ENH: Convert Heaviside step function tests to itkHeavisideStepFunctio…
hjmjohnson Mar 7, 2026
a938f46
ENH: Convert itkHashTableTest to itkHashTableGTest
hjmjohnson Mar 7, 2026
f70d7e3
ENH: Convert itkPixelAccessTest to itkPixelAccessGTest
hjmjohnson Mar 7, 2026
468825d
ENH: Convert itkStdStreamStateSaveTest to itkStdStreamStateSaveGTest
hjmjohnson Mar 7, 2026
e3d2615
ENH: Convert itkDecoratorTest to itkDecoratorGTest
hjmjohnson Mar 7, 2026
7aa3e1a
ENH: Convert itkImportContainerTest to itkImportContainerGTest
hjmjohnson Mar 7, 2026
ec3f5a7
ENH: Convert itkAnnulusOperatorTest to itkAnnulusOperatorGTest
hjmjohnson Mar 7, 2026
a270856
ENH: Convert itkDerivativeOperatorTest to itkDerivativeOperatorGTest
hjmjohnson Mar 7, 2026
e93335d
ENH: Convert itkCovariantVectorGeometryTest to GTest
hjmjohnson Mar 7, 2026
db8e1f0
ENH: Convert itkCommandObserverObjectTest to GTest
hjmjohnson Mar 7, 2026
5c809fa
ENH: Convert itkCrossHelperTest to itkCrossHelperGTest
hjmjohnson Mar 7, 2026
a1e4194
ENH: Convert itkGaussianDerivativeOperatorTest to GTest
hjmjohnson Mar 7, 2026
38e7bb5
ENH: Convert itkBSplineKernelFunctionTest to GTest
hjmjohnson Mar 7, 2026
46e309d
ENH: Convert VNLSparseLUSolverTraitsTest to GTest
hjmjohnson Mar 7, 2026
6d493aa
ENH: Convert itkArrayTest to GTest
hjmjohnson Mar 7, 2026
f1823ff
ENH: Convert itkArray2DTest to GTest
hjmjohnson Mar 7, 2026
7f8dbdc
ENH: Convert itkFixedArrayTest to GTest
hjmjohnson Mar 7, 2026
67561bc
ENH: Convert itkMersenneTwisterRandomVariateGeneratorTest to GTest
hjmjohnson Mar 7, 2026
f16cd6c
ENH: Convert itkAdaptorComparisonTest to GTest
hjmjohnson Mar 7, 2026
743fae2
ENH: Convert itkFilterDispatchTest to GTest
hjmjohnson Mar 7, 2026
1f54828
ENH: Convert itkFloodFillIteratorTest to GTest
hjmjohnson Mar 7, 2026
9455ce8
ENH: Convert itkFloodFilledSpatialFunctionTest to GTest
hjmjohnson Mar 7, 2026
a4b4f24
ENH: Convert itkThreadedImageRegionPartitionerTest to GTest
hjmjohnson Mar 7, 2026
213afa0
ENH: Convert itkThreadedIndexedContainerPartitionerTest to GTest
hjmjohnson Mar 7, 2026
842bfba
ENH: Convert itkImageTransformTest to GTest
hjmjohnson Mar 7, 2026
03a58cd
ENH: Convert itkImportImageTest to GTest
hjmjohnson Mar 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
346 changes: 36 additions & 310 deletions Modules/Core/Common/test/CMakeLists.txt

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@

#include "VNLSparseLUSolverTraits.h"
#include "itkMath.h" // itk::Math::Absolute
#include "itkGTest.h"

#include <iostream>
#include <cstdlib>

template <class TVector>
bool
Expand All @@ -44,8 +44,7 @@ VectorsEquals(const TVector & v1, const TVector & v2, const typename TVector::el
return true;
}

int
VNLSparseLUSolverTraitsTest(int, char *[])
TEST(VNLSparseLUSolverTraits, SolveLinearSystem)
{
/**
* Define an sparse LU solver traits type that operates over sparse matrices and
Expand Down Expand Up @@ -109,10 +108,7 @@ VNLSparseLUSolverTraitsTest(int, char *[])
{
VectorType X = SolverTraits::InitializeVector(N);
SolverTraits::Solve(A, Bx, X);
if (!VectorsEquals(X, Xexpected, tolerance))
{
return EXIT_FAILURE;
}
EXPECT_TRUE(VectorsEquals(X, Xexpected, tolerance));
}

/**
Expand All @@ -123,10 +119,8 @@ VNLSparseLUSolverTraitsTest(int, char *[])
VectorType Y = SolverTraits::InitializeVector(N);
SolverTraits::Solve(A, Bx, X);
SolverTraits::Solve(A, By, Y);
if (!VectorsEquals(X, Xexpected, tolerance) || !VectorsEquals(Y, Yexpected, tolerance))
{
return EXIT_FAILURE;
}
EXPECT_TRUE(VectorsEquals(X, Xexpected, tolerance));
EXPECT_TRUE(VectorsEquals(Y, Yexpected, tolerance));
}

/**
Expand All @@ -139,11 +133,9 @@ VNLSparseLUSolverTraitsTest(int, char *[])
SolverTraits::Solve(A, Bx, X);
SolverTraits::Solve(A, By, Y);
SolverTraits::Solve(A, Bz, Z);
if (!VectorsEquals(X, Xexpected, tolerance) || !VectorsEquals(Y, Yexpected, tolerance) ||
!VectorsEquals(Z, Zexpected, tolerance))
{
return EXIT_FAILURE;
}
EXPECT_TRUE(VectorsEquals(X, Xexpected, tolerance));
EXPECT_TRUE(VectorsEquals(Y, Yexpected, tolerance));
EXPECT_TRUE(VectorsEquals(Z, Zexpected, tolerance));
}

/**
Expand All @@ -155,17 +147,11 @@ VNLSparseLUSolverTraitsTest(int, char *[])

// First back-substitution
SolverTraits::Solve(solver, Bx, X);
if (!VectorsEquals(X, Xexpected, tolerance))
{
return EXIT_FAILURE;
}
EXPECT_TRUE(VectorsEquals(X, Xexpected, tolerance));

// Second back-substitution (reusing the already factored matrix)
SolverTraits::Solve(solver, Bx, X);
if (!VectorsEquals(X, Xexpected, tolerance))
{
return EXIT_FAILURE;
}
EXPECT_TRUE(VectorsEquals(X, Xexpected, tolerance));
}

/**
Expand All @@ -179,18 +165,14 @@ VNLSparseLUSolverTraitsTest(int, char *[])
// First back-substitution
SolverTraits::Solve(solver, Bx, X);
SolverTraits::Solve(solver, By, Y);
if (!VectorsEquals(X, Xexpected, tolerance) || !VectorsEquals(Y, Yexpected, tolerance))
{
return EXIT_FAILURE;
}
EXPECT_TRUE(VectorsEquals(X, Xexpected, tolerance));
EXPECT_TRUE(VectorsEquals(Y, Yexpected, tolerance));

// Second back-substitution (reusing the already factored matrix)
SolverTraits::Solve(solver, Bx, X);
SolverTraits::Solve(solver, By, Y);
if (!VectorsEquals(X, Xexpected, tolerance) || !VectorsEquals(Y, Yexpected, tolerance))
{
return EXIT_FAILURE;
}
EXPECT_TRUE(VectorsEquals(X, Xexpected, tolerance));
EXPECT_TRUE(VectorsEquals(Y, Yexpected, tolerance));
}

/**
Expand All @@ -207,22 +189,16 @@ VNLSparseLUSolverTraitsTest(int, char *[])
SolverTraits::Solve(solver, Bx, X);
SolverTraits::Solve(solver, By, Y);
SolverTraits::Solve(solver, Bz, Z);
if (!VectorsEquals(X, Xexpected, tolerance) || !VectorsEquals(Y, Yexpected, tolerance) ||
!VectorsEquals(Z, Zexpected, tolerance))
{
return EXIT_FAILURE;
}
EXPECT_TRUE(VectorsEquals(X, Xexpected, tolerance));
EXPECT_TRUE(VectorsEquals(Y, Yexpected, tolerance));
EXPECT_TRUE(VectorsEquals(Z, Zexpected, tolerance));

// Second back-substitution (reusing the already factored matrix)
SolverTraits::Solve(solver, Bx, X);
SolverTraits::Solve(solver, By, Y);
SolverTraits::Solve(solver, Bz, Z);
if (!VectorsEquals(X, Xexpected, tolerance) || !VectorsEquals(Y, Yexpected, tolerance) ||
!VectorsEquals(Z, Zexpected, tolerance))
{
return EXIT_FAILURE;
}
EXPECT_TRUE(VectorsEquals(X, Xexpected, tolerance));
EXPECT_TRUE(VectorsEquals(Y, Yexpected, tolerance));
EXPECT_TRUE(VectorsEquals(Z, Zexpected, tolerance));
}

return EXIT_SUCCESS;
}
115 changes: 115 additions & 0 deletions Modules/Core/Common/test/itkAbortProcessObjectGTest.cxx
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
/*=========================================================================
*
* 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 "itkExtractImageFilter.h"
#include "itkGTest.h"
#include "itkCommand.h"

#include <iostream>

//
// This test ensures the abort event occurs and the ProcessAborted
// exception occurs.
//

namespace
{

bool onAbortCalled = false;

void
onProgress(itk::Object * obj, const itk::EventObject &, void *)
{
const itk::ProcessObject::Pointer p(dynamic_cast<itk::ProcessObject *>(obj));
if (p.IsNull())
{
return;
}
if (p->GetProgress() > .1)
{
std::cout << "Setting AbortGenerateDataOn()" << std::endl;
p->AbortGenerateDataOn();
}
}

void
onAbort(itk::Object *, const itk::EventObject &, void *)
{
std::cout << "Abort Event" << std::endl;
onAbortCalled = true;
}

} // namespace

TEST(AbortProcessObject, AbortEventAndException)
{
onAbortCalled = false;

// type alias to simplify the syntax
using ShortImage = itk::Image<short, 2>;
auto img = ShortImage::New();

// fill in an image
constexpr ShortImage::SizeType size{ 100, 100 };
const ShortImage::RegionType region{ size };
img->SetRegions(region);
img->Allocate();

itk::ImageRegionIterator<ShortImage> iterator(img, region);

short i = 0;
while (!iterator.IsAtEnd())
{
iterator.Set(i++);
++iterator;
}

// Create a filter
const itk::ExtractImageFilter<ShortImage, ShortImage>::Pointer extract =
itk::ExtractImageFilter<ShortImage, ShortImage>::New();
extract->SetInput(img);

// fill in an image
constexpr ShortImage::SizeType extractSize{ 99, 99 };
const ShortImage::RegionType extractRegion{ extractSize };
extract->SetExtractionRegion(extractRegion);

const itk::CStyleCommand::Pointer progressCmd = itk::CStyleCommand::New();
progressCmd->SetCallback(onProgress);
progressCmd->SetObjectName("Progress Event");
extract->AddObserver(itk::ProgressEvent(), progressCmd);

const itk::CStyleCommand::Pointer abortCmd = itk::CStyleCommand::New();
abortCmd->SetCallback(onAbort);
abortCmd->SetObjectName("Abort Event");
extract->AddObserver(itk::AbortEvent(), abortCmd);

std::cout << extract << std::endl;

bool exceptionCaught = false;
try
{
extract->UpdateLargestPossibleRegion();
}
catch (const itk::ProcessAborted &)
{
exceptionCaught = true;
}
EXPECT_TRUE(exceptionCaught) << "Expected ProcessAborted exception to be thrown.";
EXPECT_TRUE(onAbortCalled) << "Expected Abort Event callback to be called.";
}
Loading
Loading