itk_module_test()

set(
  ITKFastMarchingTests
  itkFastMarchingExtensionImageFilterTest.cxx
  itkFastMarchingTest.cxx
  itkFastMarchingTest2.cxx
  itkFastMarchingUpwindGradientTest.cxx
  # New files
  itkFastMarchingBaseTest.cxx
  itkFastMarchingImageFilterBaseTest.cxx
  itkFastMarchingImageFilterRealTest1.cxx
  itkFastMarchingImageFilterRealTest2.cxx
  itkFastMarchingImageFilterRealWithNumberOfElementsTest.cxx
  itkFastMarchingImageTopologicalTest.cxx
  itkFastMarchingQuadEdgeMeshFilterBaseTest2.cxx
  itkFastMarchingQuadEdgeMeshFilterBaseTest3.cxx
  itkFastMarchingQuadEdgeMeshFilterBaseTest4.cxx
  itkFastMarchingQuadEdgeMeshFilterBaseTest.cxx
  itkFastMarchingQuadEdgeMeshFilterWithNumberOfElementsTest.cxx
  itkFastMarchingStoppingCriterionBaseTest.cxx
  itkFastMarchingThresholdStoppingCriterionTest.cxx
  itkFastMarchingNumberOfElementsStoppingCriterionTest.cxx
  itkFastMarchingUpwindGradientBaseTest.cxx
)

createtestdriver(ITKFastMarching "${ITKFastMarching-Test_LIBRARIES}" "${ITKFastMarchingTests}")

itk_add_test(
  NAME itkFastMarchingExtensionImageFilterTest
  COMMAND
    ITKFastMarchingTestDriver
    itkFastMarchingExtensionImageFilterTest
)
itk_add_test(
  NAME itkFastMarchingTest
  COMMAND
    ITKFastMarchingTestDriver
    itkFastMarchingTest
    1.0
    1.0
    100.0
    0
    0
    1.0
    0.0
    0
)
itk_add_test(
  NAME itkFastMarchingTest2
  COMMAND
    ITKFastMarchingTestDriver
    itkFastMarchingTest2
)
itk_add_test(
  NAME itkFastMarchingUpwindGradientTest
  COMMAND
    ITKFastMarchingTestDriver
    itkFastMarchingUpwindGradientTest
)

itk_add_test(
  NAME itkFastMarchingBaseTest0
  COMMAND
    ITKFastMarchingTestDriver
    itkFastMarchingBaseTest
    0
)
itk_add_test(
  NAME itkFastMarchingBaseTest1
  COMMAND
    ITKFastMarchingTestDriver
    itkFastMarchingBaseTest
    1
)

itk_add_test(
  NAME itkFastMarchingImageFilterBaseTest
  COMMAND
    ITKFastMarchingTestDriver
    itkFastMarchingImageFilterBaseTest
)

itk_add_test(
  NAME itkFastMarchingImageFilterRealTest1
  COMMAND
    ITKFastMarchingTestDriver
    itkFastMarchingImageFilterRealTest1
)

itk_add_test(
  NAME itkFastMarchingImageFilterRealTest2
  COMMAND
    ITKFastMarchingTestDriver
    itkFastMarchingImageFilterRealTest2
)

itk_add_test(
  NAME itkFastMarchingImageFilterRealWithNumberOfElementsTest
  COMMAND
    ITKFastMarchingTestDriver
    itkFastMarchingImageFilterRealWithNumberOfElementsTest
)

itk_add_test(
  NAME itkFastMarchingUpwindGradientBaseTest
  COMMAND
    ITKFastMarchingTestDriver
    itkFastMarchingUpwindGradientBaseTest
)

itk_add_test(
  NAME itkFastMarchingQuadEdgeMeshFilterBaseTest
  COMMAND
    ITKFastMarchingTestDriver
    itkFastMarchingQuadEdgeMeshFilterBaseTest
)

itk_add_test(
  NAME itkFastMarchingQuadEdgeMeshFilterBaseTest2
  COMMAND
    ITKFastMarchingTestDriver
    itkFastMarchingQuadEdgeMeshFilterBaseTest2
)

itk_add_test(
  NAME itkFastMarchingQuadEdgeMeshFilterBaseTest3
  COMMAND
    ITKFastMarchingTestDriver
    itkFastMarchingQuadEdgeMeshFilterBaseTest3
)

itk_add_test(
  NAME itkFastMarchingQuadEdgeMeshFilterBaseTest4
  COMMAND
    ITKFastMarchingTestDriver
    itkFastMarchingQuadEdgeMeshFilterBaseTest4
)

itk_add_test(
  NAME itkFastMarchingQuadEdgeMeshFilterWithNumberOfElementsTest
  COMMAND
    ITKFastMarchingTestDriver
    itkFastMarchingQuadEdgeMeshFilterWithNumberOfElementsTest
)

itk_add_test(
  NAME itkFastMarchingStoppingCriterionBaseTest
  COMMAND
    ITKFastMarchingTestDriver
    itkFastMarchingStoppingCriterionBaseTest
)

itk_add_test(
  NAME itkFastMarchingThresholdStoppingCriterionTest
  COMMAND
    ITKFastMarchingTestDriver
    itkFastMarchingThresholdStoppingCriterionTest
)

itk_add_test(
  NAME itkFastMarchingNumberOfElementsStoppingCriterionTest
  COMMAND
    ITKFastMarchingTestDriver
    itkFastMarchingNumberOfElementsStoppingCriterionTest
)

# -------------------------------------------------------------------------
# Topology constrained front propagation
# -------------------------------------------------------------------------

# ************************************************************************
# 2D

itk_add_test(
  NAME itkFastMarchingImageFilterTest_Brain2D_SingleSeed_NoTopo
  COMMAND
    ITKFastMarchingTestDriver
    --compare
    ${ITK_TEST_OUTPUT_DIR}/test_Brain2D_singleSeed_NoTopo.nii.gz
    DATA{Baseline/BrainProtonDensitySlice_singleSeed_NoTopo_out.nii.gz}
    itkFastMarchingImageTopologicalTest
    2
    DATA{Baseline/BrainProtonDensitySlice_speed.nii.gz}
    ${ITK_TEST_OUTPUT_DIR}/test_Brain2D_singleSeed_NoTopo.nii.gz
    DATA{Baseline/BrainProtonDensitySlice_singleSeed.nii.gz}
    150
    0
)

itk_add_test(
  NAME itkFastMarchingImageFilterTest_Brain2D_SingleSeed_StrictTopo
  COMMAND
    ITKFastMarchingTestDriver
    --compare
    DATA{Baseline/BrainProtonDensitySlice_singleSeed_StrictTopo_out.nii.gz}
    ${ITK_TEST_OUTPUT_DIR}/test_Brain2D_singleSeed_StrictTopo.nii.gz
    itkFastMarchingImageTopologicalTest
    2
    DATA{Baseline/BrainProtonDensitySlice_speed.nii.gz}
    ${ITK_TEST_OUTPUT_DIR}/test_Brain2D_singleSeed_StrictTopo.nii.gz
    DATA{Baseline/BrainProtonDensitySlice_singleSeed.nii.gz}
    150
    1
)

itk_add_test(
  NAME itkFastMarchingImageFilterTest_Brain2D_SingleSeed_NoHandlesTopo
  COMMAND
    ITKFastMarchingTestDriver
    --compare
    ${ITK_TEST_OUTPUT_DIR}/test_Brain2D_singleSeed_NoHandlesTopo.nii.gz
    DATA{Baseline/BrainProtonDensitySlice_singleSeed_NoHandlesTopo_out.nii.gz}
    itkFastMarchingImageTopologicalTest
    2
    DATA{Baseline/BrainProtonDensitySlice_speed.nii.gz}
    ${ITK_TEST_OUTPUT_DIR}/test_Brain2D_singleSeed_NoHandlesTopo.nii.gz
    DATA{Baseline/BrainProtonDensitySlice_singleSeed.nii.gz}
    150
    2
)

itk_add_test(
  NAME itkFastMarchingImageFilterTest_Brain2D_multipleSeeds_NoTopo
  COMMAND
    ITKFastMarchingTestDriver
    --compare
    DATA{Baseline/BrainProtonDensitySlice_multipleSeeds_NoTopo_out.nii.gz}
    ${ITK_TEST_OUTPUT_DIR}/test_Brain2D_multipleSeeds_NoTopo.nii.gz
    itkFastMarchingImageTopologicalTest
    2
    DATA{Baseline/BrainProtonDensitySlice_speed.nii.gz}
    ${ITK_TEST_OUTPUT_DIR}/test_Brain2D_multipleSeeds_NoTopo.nii.gz
    DATA{Baseline/BrainProtonDensitySlice_multipleSeeds.nii.gz}
    150
    0
)

itk_add_test(
  NAME itkFastMarchingImageFilterTest_Brain2D_multipleSeeds_StrictTopo
  COMMAND
    ITKFastMarchingTestDriver
    --compare
    DATA{Baseline/BrainProtonDensitySlice_multipleSeeds_StrictTopo_out.nii.gz}
    ${ITK_TEST_OUTPUT_DIR}/test_Brain2D_multipleSeeds_StrictTopo.nii.gz
    itkFastMarchingImageTopologicalTest
    2
    DATA{Baseline/BrainProtonDensitySlice_speed.nii.gz}
    ${ITK_TEST_OUTPUT_DIR}/test_Brain2D_multipleSeeds_StrictTopo.nii.gz
    DATA{Baseline/BrainProtonDensitySlice_multipleSeeds.nii.gz}
    150
    1
)

itk_add_test(
  NAME itkFastMarchingImageFilterTest_Brain2D_multipleSeeds_NoHandlesTopo
  COMMAND
    ITKFastMarchingTestDriver
    --compare
    DATA{Baseline/BrainProtonDensitySlice_multipleSeeds_NoHandlesTopo_out.nii.gz}
    ${ITK_TEST_OUTPUT_DIR}/test_Brain2D_multipleSeeds_NoHandlesTopo.nii.gz
    itkFastMarchingImageTopologicalTest
    2
    DATA{Baseline/BrainProtonDensitySlice_speed.nii.gz}
    ${ITK_TEST_OUTPUT_DIR}/test_Brain2D_multipleSeeds_NoHandlesTopo.nii.gz
    DATA{Baseline/BrainProtonDensitySlice_multipleSeeds.nii.gz}
    150
    2
)

# ************************************************************************
# 3D
itk_add_test(
  NAME itkFastMarchingImageFilterTest_torus_multipleSeeds_NoTopo
  COMMAND
    ITKFastMarchingTestDriver
    --compare
    DATA{Baseline/torus_multipleSeeds_NoTopo_out.nii.gz}
    ${ITK_TEST_OUTPUT_DIR}/test_torus_multipleSeeds_NoTopo.nii.gz
    itkFastMarchingImageTopologicalTest
    3
    DATA{Baseline/torus.nii.gz}
    ${ITK_TEST_OUTPUT_DIR}/test_torus_multipleSeeds_NoTopo.nii.gz
    DATA{Baseline/torus_multipleSeeds.nii.gz}
    150
    0
)

itk_add_test(
  NAME itkFastMarchingImageFilterTest_torus_multipleSeeds_StrictTopo
  COMMAND
    ITKFastMarchingTestDriver
    --compare
    DATA{Baseline/torus_multipleSeeds_StrictTopo_out.nii.gz}
    ${ITK_TEST_OUTPUT_DIR}/test_torus_multipleSeeds_StrictTopo.nii.gz
    itkFastMarchingImageTopologicalTest
    3
    DATA{Baseline/torus.nii.gz}
    ${ITK_TEST_OUTPUT_DIR}/test_torus_multipleSeeds_StrictTopo.nii.gz
    DATA{Baseline/torus_multipleSeeds.nii.gz}
    150
    1
)

itk_add_test(
  NAME itkFastMarchingImageFilterTest_torus_multipleSeeds_NoHandlesTopo
  COMMAND
    ITKFastMarchingTestDriver
    --compare
    DATA{Baseline/torus_multipleSeeds_NoHandlesTopo_out.nii.gz}
    ${ITK_TEST_OUTPUT_DIR}/test_torus_multipleSeeds_NoHandlesTopo.nii.gz
    itkFastMarchingImageTopologicalTest
    3
    DATA{Baseline/torus.nii.gz}
    ${ITK_TEST_OUTPUT_DIR}/test_torus_multipleSeeds_NoHandlesTopo.nii.gz
    DATA{Baseline/torus_multipleSeeds.nii.gz}
    150
    2
)

itk_add_test(
  NAME itkFastMarchingImageFilterTest_wm_multipleSeeds_NoTopo
  COMMAND
    ITKFastMarchingTestDriver
    --compare
    DATA{Baseline/wm_multipleSeeds_NoTopo_out.nii.gz}
    ${ITK_TEST_OUTPUT_DIR}/test_wm_multipleSeeds_NoTopo.nii.gz
    itkFastMarchingImageTopologicalTest
    3
    DATA{Baseline/wm.nii.gz}
    ${ITK_TEST_OUTPUT_DIR}/test_wm_multipleSeeds_NoTopo.nii.gz
    DATA{Baseline/wm_multipleSeeds.nii.gz}
    150
    0
)
set_property(
  TEST
    itkFastMarchingImageFilterTest_wm_multipleSeeds_NoTopo
  APPEND
  PROPERTY
    LABELS
      RUNS_LONG
)

itk_add_test(
  NAME itkFastMarchingImageFilterTest_wm_multipleSeeds_StrictTopo
  COMMAND
    ITKFastMarchingTestDriver
    --compare
    DATA{Baseline/wm_multipleSeeds_StrictTopo_out.nii.gz}
    ${ITK_TEST_OUTPUT_DIR}/test_wm_multipleSeeds_StrictTopo.nii.gz
    itkFastMarchingImageTopologicalTest
    3
    DATA{Baseline/wm.nii.gz}
    ${ITK_TEST_OUTPUT_DIR}/test_wm_multipleSeeds_StrictTopo.nii.gz
    DATA{Baseline/wm_multipleSeeds.nii.gz}
    150
    1
)
set_property(
  TEST
    itkFastMarchingImageFilterTest_wm_multipleSeeds_StrictTopo
  APPEND
  PROPERTY
    LABELS
      RUNS_LONG
)

itk_add_test(
  NAME itkFastMarchingImageFilterTest_wm_multipleSeeds_NoHandlesTopo
  COMMAND
    ITKFastMarchingTestDriver
    --compare
    DATA{Baseline/wm_multipleSeeds_NoHandlesTopo_out.nii.gz}
    ${ITK_TEST_OUTPUT_DIR}/test_wm_multipleSeeds_NoHandlesTopo.nii.gz
    itkFastMarchingImageTopologicalTest
    3
    DATA{Baseline/wm.nii.gz}
    ${ITK_TEST_OUTPUT_DIR}/test_wm_multipleSeeds_NoHandlesTopo.nii.gz
    DATA{Baseline/wm_multipleSeeds.nii.gz}
    150
    2
)
set_property(
  TEST
    itkFastMarchingImageFilterTest_wm_multipleSeeds_NoHandlesTopo
  APPEND
  PROPERTY
    LABELS
      RUNS_LONG
)
