Skip to content

Commit b81b6d6

Browse files
committed
ENH: Add single-element test case to ParallelizeArray test
1 parent ecf1170 commit b81b6d6

1 file changed

Lines changed: 33 additions & 0 deletions

File tree

Modules/Core/Common/test/itkMultiThreaderParallelizeArrayTest.cxx

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,39 @@ itkMultiThreaderParallelizeArrayTest(int argc, char * argv[])
8888
}
8989
}
9090

91+
// Test single-element range [5, 6): functor must be called exactly once with index 5.
92+
// Progress events are printed by the ShowProgress observer; their exact values
93+
// depend on the threader implementation and are exercised by the per-threader
94+
// CTest variants driven by ITK_GLOBAL_DEFAULT_THREADER.
95+
{
96+
std::cout << "\nSingle-element array [5,6) test:";
97+
bool singleCalled = false;
98+
itk::SizeValueType singleIndex = std::numeric_limits<itk::SizeValueType>::max();
99+
100+
auto singlePO = SomeProcessObject::New();
101+
singlePO->AddObserver(itk::ProgressEvent(), showProgress);
102+
103+
mt->ParallelizeArray(
104+
5,
105+
6,
106+
[&singleCalled, &singleIndex](itk::SizeValueType i) {
107+
singleCalled = true;
108+
singleIndex = i;
109+
},
110+
singlePO);
111+
112+
if (!singleCalled)
113+
{
114+
std::cerr << "\nSingle-element: functor was not called!" << std::endl;
115+
result = EXIT_FAILURE;
116+
}
117+
else if (singleIndex != 5)
118+
{
119+
std::cerr << "\nSingle-element: expected index 5, got " << singleIndex << std::endl;
120+
result = EXIT_FAILURE;
121+
}
122+
}
123+
91124
if (result != EXIT_FAILURE)
92125
{
93126
std::cout << "\nTest PASSED" << std::endl;

0 commit comments

Comments
 (0)