@@ -53,6 +53,15 @@ itkFastMarchingUpwindGradientTest(int, char *[])
53
53
ITK_EXERCISE_BASIC_OBJECT_METHODS (marcher, FastMarchingUpwindGradientImageFilter, FastMarchingImageFilter);
54
54
55
55
56
+ // Test exceptions
57
+ ITK_TRY_EXPECT_EXCEPTION (marcher->SetTargetReachedModeToOneTarget ());
58
+
59
+ itk::SizeValueType numberOfTargets = 0 ;
60
+ ITK_TRY_EXPECT_EXCEPTION (marcher->SetTargetReachedModeToSomeTargets (numberOfTargets));
61
+
62
+ ITK_TRY_EXPECT_EXCEPTION (marcher->SetTargetReachedModeToAllTargets ());
63
+
64
+
56
65
// ShowProgressObject progressWatch(marcher);
57
66
// itk::SimpleMemberCommand<ShowProgressObject>::Pointer command;
58
67
// command = itk::SimpleMemberCommand<ShowProgressObject>::New();
@@ -241,14 +250,23 @@ itkFastMarchingUpwindGradientTest(int, char *[])
241
250
marcher->SetTargetPoints (targetPoints);
242
251
ITK_TEST_SET_GET_VALUE (targetPoints, marcher->GetTargetPoints ());
243
252
253
+ // The target reached mode is set to no targets by default
254
+ ITK_TEST_SET_GET_VALUE (FloatFMType::NoTargets, marcher->GetTargetReachedMode ());
255
+
256
+ numberOfTargets = 0 ;
257
+ ITK_TEST_EXPECT_EQUAL (numberOfTargets, marcher->GetNumberOfTargets ());
258
+
244
259
// Stop the algorithm when ONE of the targets has been reached.
245
260
marcher->SetTargetReachedModeToOneTarget ();
246
261
ITK_TEST_SET_GET_VALUE (FloatFMType::OneTarget, marcher->GetTargetReachedMode ());
247
262
248
- marcher->Update ();
263
+ numberOfTargets = 1 ;
264
+ ITK_TEST_EXPECT_EQUAL (numberOfTargets, marcher->GetNumberOfTargets ());
265
+
266
+ ITK_TRY_EXPECT_NO_EXCEPTION (marcher->Update ());
249
267
250
- VectorType::size_type reachedTargetPointCount = 1 ;
251
- ITK_TEST_EXPECT_EQUAL (reachedTargetPointCount , marcher->GetReachedTargetPoints ()->Size ());
268
+
269
+ ITK_TEST_EXPECT_EQUAL (numberOfTargets , marcher->GetReachedTargetPoints ()->Size ());
252
270
253
271
// Find the smallest reaching time of the TargetPoints. This is the time of the closest
254
272
// TargetPoint.
@@ -270,15 +288,32 @@ itkFastMarchingUpwindGradientTest(int, char *[])
270
288
passed = false ;
271
289
}
272
290
291
+ // Now stop the algorithm once SOME of the targets have been reached.
292
+ numberOfTargets = targetPoints->Size () + 1 ;
293
+ ITK_TRY_EXPECT_EXCEPTION (marcher->SetTargetReachedModeToSomeTargets (numberOfTargets));
294
+
295
+ numberOfTargets = targetPoints->Size () - 1 ;
296
+ marcher->SetTargetReachedModeToSomeTargets (numberOfTargets);
297
+ ITK_TEST_SET_GET_VALUE (FloatFMType::SomeTargets, marcher->GetTargetReachedMode ());
298
+
299
+ ITK_TEST_EXPECT_EQUAL (numberOfTargets, marcher->GetNumberOfTargets ());
300
+
301
+ ITK_TRY_EXPECT_NO_EXCEPTION (marcher->Update ());
302
+
303
+
304
+ ITK_TEST_EXPECT_EQUAL (numberOfTargets, marcher->GetReachedTargetPoints ()->Size ());
273
305
274
306
// Now stop the algorithm once ALL of the targets have been reached.
275
307
marcher->SetTargetReachedModeToAllTargets ();
276
308
ITK_TEST_SET_GET_VALUE (FloatFMType::AllTargets, marcher->GetTargetReachedMode ());
277
309
278
- marcher->Update ();
310
+ numberOfTargets = targetPoints->Size ();
311
+ ITK_TEST_EXPECT_EQUAL (numberOfTargets, marcher->GetNumberOfTargets ());
312
+
313
+ ITK_TRY_EXPECT_NO_EXCEPTION (marcher->Update ());
314
+
279
315
280
- reachedTargetPointCount = marcher->GetTargetPoints ()->Size ();
281
- ITK_TEST_EXPECT_EQUAL (reachedTargetPointCount, marcher->GetReachedTargetPoints ()->Size ());
316
+ ITK_TEST_EXPECT_EQUAL (numberOfTargets, marcher->GetReachedTargetPoints ()->Size ());
282
317
283
318
// Find the largest reaching time of the TargetPoints. This is the largest time of
284
319
// all of the target points.
0 commit comments