itk_module_test()

set(
  ITKLevelSetsv4Tests
  itkLevelSetDenseImageTest.cxx
  itkWhitakerSparseLevelSetImageTest.cxx
  itkShiSparseLevelSetImageTest.cxx
  itkMalcolmSparseLevelSetImageTest.cxx
  # binary image to sparse level set adaptors
  itkBinaryImageToWhitakerSparseLevelSetAdaptorTest.cxx
  itkBinaryImageToMalcolmSparseLevelSetAdaptorTest.cxx
  itkBinaryImageToShiSparseLevelSetAdaptorTest.cxx
  itkLevelSetEquationChanAndVeseExternalTermTest.cxx
  itkLevelSetEquationChanAndVeseInternalTermTest.cxx
  itkLevelSetEquationCurvatureTermTest.cxx
  itkLevelSetEquationLaplacianTermTest.cxx
  itkLevelSetEquationPropagationTermTest.cxx
  itkLevelSetEquationBinaryMaskTermTest.cxx
  itkLevelSetEquationOverlapPenaltyTermTest.cxx
  itkLevelSetEquationRegionTermTest.cxx
  itkLevelSetEquationTermBaseTest.cxx
  itkLevelSetEquationTermContainerTest.cxx
  # domain partition classes
  itkLevelSetDomainPartitionBaseTest.cxx
  itkLevelSetDomainPartitionImageTest.cxx
  itkLevelSetDomainPartitionImageWithKdTreeTest.cxx
  itkLevelSetDomainMapImageFilterTest.cxx
  # level set container
  itkDenseLevelSetContainerTest.cxx
  itkSparseLevelSetContainerTest.cxx
  # single level set
  itkSingleLevelSetDenseImage2DTest.cxx
  itkSingleLevelSetDenseAdvectionImage2DTest.cxx
  itkSingleLevelSetWhitakerImage2DTest.cxx
  itkSingleLevelSetMalcolmImage2DTest.cxx
  itkSingleLevelSetShiImage2DTest.cxx
  itkSingleLevelSetWhitakerImage2DWithCurvatureTest.cxx
  itkSingleLevelSetWhitakerImage2DWithLaplacianTest.cxx
  itkSingleLevelSetWhitakerImage2DWithPropagationTest.cxx
  # two level set
  itkTwoLevelSetDenseImage2DTest.cxx
  itkTwoLevelSetWhitakerImage2DTest.cxx
  itkTwoLevelSetMalcolmImage2DTest.cxx
  itkTwoLevelSetShiImage2DTest.cxx
  # multi level set
  itkMultiLevelSetDenseImageTest.cxx
  itkMultiLevelSetChanAndVeseInternalTermTest.cxx
  itkMultiLevelSetEvolutionTest.cxx
  itkMultiLevelSetDenseImageSubset2DTest.cxx
  itkMultiLevelSetWhitakerImageSubset2DTest.cxx
  itkMultiLevelSetShiImageSubset2DTest.cxx
  itkMultiLevelSetMalcolmImageSubset2DTest.cxx
  # stopping criterion
  itkLevelSetEvolutionNumberOfIterationsStoppingCriterionTest.cxx
)

createtestdriver(ITKLevelSetsv4 "${ITKLevelSetsv4-Test_LIBRARIES}" "${ITKLevelSetsv4Tests}")

itk_add_test(
  NAME itkLevelSetsv4EquationBinaryMaskTermTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkLevelSetEquationBinaryMaskTermTest
)
itk_add_test(
  NAME itkLevelSetsv4EquationOverlapPenaltyTermTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkLevelSetEquationOverlapPenaltyTermTest
)
itk_add_test(
  NAME itkLevelSetsv4DenseImageBaseTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkLevelSetDenseImageTest
)
itk_add_test(
  NAME itkWhitakerSparseLevelSetsv4BaseTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkWhitakerSparseLevelSetImageTest
)
itk_add_test(
  NAME itkShiSparseLevelSetsv4BaseTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkShiSparseLevelSetImageTest
)
itk_add_test(
  NAME itkMalcolmSparseLevelSetsv4BaseTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkMalcolmSparseLevelSetImageTest
)
# binary image to sparse level set adaptors
itk_add_test(
  NAME itkBinaryImageToWhitakerSparseLevelSetsv4AdaptorTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkBinaryImageToWhitakerSparseLevelSetAdaptorTest
    DATA{${ITK_DATA_ROOT}/Input/circle.png}
    ${ITK_TEST_OUTPUT_DIR}/output_binary_whitaker_adaptor.mha
    ${ITK_TEST_OUTPUT_DIR}/status_binary_whitaker_adaptor.mha
)
itk_add_test(
  NAME itkBinaryImageToMalcolmSparseLevelSetsv4AdaptorTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkBinaryImageToMalcolmSparseLevelSetAdaptorTest
    DATA{${ITK_DATA_ROOT}/Input/circle.png}
    ${ITK_TEST_OUTPUT_DIR}/output_binary_malcolm_adaptor.mha
)
itk_add_test(
  NAME itkBinaryImageToShiSparseLevelSetsv4AdaptorTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkBinaryImageToShiSparseLevelSetAdaptorTest
    DATA{${ITK_DATA_ROOT}/Input/circle.png}
    ${ITK_TEST_OUTPUT_DIR}/output_binary_shi_adaptor.mha
)
# domain partition classes
itk_add_test(
  NAME itkLevelSetsv4DomainPartitionBaseTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkLevelSetDomainPartitionBaseTest
)
itk_add_test(
  NAME itkLevelSetsv4DomainPartitionImageTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkLevelSetDomainPartitionImageTest
)
itk_add_test(
  NAME itkLevelSetsv4DomainPartitionImageWithKdTreeTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkLevelSetDomainPartitionImageWithKdTreeTest
)
itk_add_test(
  NAME itkLevelSetsv4DomainMapImageFilterTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkLevelSetDomainMapImageFilterTest
)
# level set container
itk_add_test(
  NAME itkLevelSetsv4SparseLevelSetContainerTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkSparseLevelSetContainerTest
)
itk_add_test(
  NAME itkLevelSetsv4DenseLevelSetContainerTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkDenseLevelSetContainerTest
)
# single level set
itk_add_test(
  NAME itkSingleLevelSetsv4DenseImage2DTest
  COMMAND
    ITKLevelSetsv4TestDriver
    --compare
    DATA{Baseline/solution_whiteSpot_output_dense_single.mha}
    ${ITK_TEST_OUTPUT_DIR}/whiteSpot_output_dense_single.mha
    itkSingleLevelSetDenseImage2DTest
    DATA{${ITK_DATA_ROOT}/Input/whiteSpot.png}
    25
    25
    25
    ${ITK_TEST_OUTPUT_DIR}/whiteSpot_output_dense_single.mha
)

itk_add_test(
  NAME itkSingleLevelSetsv4DenseAdvectionImage2DTest_5
  COMMAND
    ITKLevelSetsv4TestDriver
    # --compare DATA{Baseline/solution_whiteSpot_output_dense_single_5.mha}
    #          ${ITK_TEST_OUTPUT_DIR}/whiteSpot_output_dense_advection_single_5.mha
    itkSingleLevelSetDenseAdvectionImage2DTest
    DATA{${ITK_DATA_ROOT}/Input/whiteSpot.png}
    25
    25
    25
    ${ITK_TEST_OUTPUT_DIR}/whiteSpot_output_dense_advection_single_5.mha
    5
)

itk_add_test(
  NAME itkSingleLevelSetsv4WhitakerImage2DTest
  COMMAND
    ITKLevelSetsv4TestDriver
    --compare
    DATA{Baseline/solution_whiteSpot_output_sparse_single.mha}
    ${ITK_TEST_OUTPUT_DIR}/whiteSpot_output_sparse_single.mha
    itkSingleLevelSetWhitakerImage2DTest
    DATA{${ITK_DATA_ROOT}/Input/whiteSpot.png}
    50
    ${ITK_TEST_OUTPUT_DIR}/whiteSpot_output_sparse_single.mha
)
itk_add_test(
  NAME itkSingleLevelSetsv4WhitakerImage2DTestThreads
  COMMAND
    ITKLevelSetsv4TestDriver
    --with-threads
    16
    --compare
    DATA{Baseline/solution_whiteSpot_output_sparse_single.mha}
    ${ITK_TEST_OUTPUT_DIR}/whiteSpot_output_sparse_single_threads.mha
    itkSingleLevelSetWhitakerImage2DTest
    DATA{${ITK_DATA_ROOT}/Input/whiteSpot.png}
    50
    ${ITK_TEST_OUTPUT_DIR}/whiteSpot_output_sparse_single_threads.mha
)

itk_add_test(
  NAME itkSingleLevelSetsv4MalcolmImage2DTest
  COMMAND
    ITKLevelSetsv4TestDriver
    --compare
    DATA{Baseline/solution_whiteSpot_output_malcolm_single.mha}
    ${ITK_TEST_OUTPUT_DIR}/whiteSpot_output_malcolm_single.mha
    itkSingleLevelSetMalcolmImage2DTest
    DATA{${ITK_DATA_ROOT}/Input/whiteSpot.png}
    15
    ${ITK_TEST_OUTPUT_DIR}/whiteSpot_output_malcolm_single.mha
)
itk_add_test(
  NAME itkSingleLevelSetsv4ShiImage2DTest
  COMMAND
    ITKLevelSetsv4TestDriver
    --compare
    DATA{Baseline/solution_whiteSpot_output_shi_single.mha}
    ${ITK_TEST_OUTPUT_DIR}/whiteSpot_output_shi_single.mha
    itkSingleLevelSetShiImage2DTest
    DATA{${ITK_DATA_ROOT}/Input/whiteSpot.png}
    15
    ${ITK_TEST_OUTPUT_DIR}/whiteSpot_output_shi_single.mha
)
itk_add_test(
  NAME itkSingleLevelSetsv4WhitakerImage2DWithCurvatureTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkSingleLevelSetWhitakerImage2DWithCurvatureTest
    DATA{${ITK_DATA_ROOT}/Input/whiteSpot.png}
)
itk_add_test(
  NAME itkSingleLevelSetsv4WhitakerImage2DWithLaplacianTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkSingleLevelSetWhitakerImage2DWithLaplacianTest
    DATA{${ITK_DATA_ROOT}/Input/whiteSpot.png}
)
itk_add_test(
  NAME itkSingleLevelSetsv4WhitakerImage2DWithPropagationTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkSingleLevelSetWhitakerImage2DWithPropagationTest
    DATA{${ITK_DATA_ROOT}/Input/whiteSpot.png}
)

itk_add_test(
  NAME itkLevelSetsv4EquationCurvatureTermTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkLevelSetEquationCurvatureTermTest
    DATA{${ITK_DATA_ROOT}/Input/whiteSpot.png}
)

itk_add_test(
  NAME itkLevelSetsv4EquationPropagationTermTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkLevelSetEquationPropagationTermTest
    DATA{${ITK_DATA_ROOT}/Input/whiteSpot.png}
)

itk_add_test(
  NAME itkLevelSetsv4EquationLaplacianTermTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkLevelSetEquationLaplacianTermTest
    DATA{${ITK_DATA_ROOT}/Input/whiteSpot.png}
)

# two level sets
itk_add_test(
  NAME itkTwoLevelSetsv4DenseImage2DTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkTwoLevelSetDenseImage2DTest
    DATA{${ITK_DATA_ROOT}/Input/whiteSpot.png}
    25
    25
    10
    ${ITK_TEST_OUTPUT_DIR}/whiteSpot_output_dense_two.mha
)

itk_add_test(
  NAME itkTwoLevelSetsv4WhitakerImage2DTest
  COMMAND
    ITKLevelSetsv4TestDriver
    --compare
    DATA{Baseline/solution_whiteSpot_output_sparse_two.mha}
    ${ITK_TEST_OUTPUT_DIR}/whiteSpot_output_sparse_two.mha
    itkTwoLevelSetWhitakerImage2DTest
    DATA{${ITK_DATA_ROOT}/Input/whiteSpot.png}
    1
    ${ITK_TEST_OUTPUT_DIR}/whiteSpot_output_sparse_two.mha
)

itk_add_test(
  NAME itkTwoLevelSetsv4MalcolmImage2DTest
  COMMAND
    ITKLevelSetsv4TestDriver
    --compare
    DATA{Baseline/solution_whiteSpot_output_malcolm_two.mha}
    ${ITK_TEST_OUTPUT_DIR}/whiteSpot_output_malcolm_two.mha
    itkTwoLevelSetMalcolmImage2DTest
    DATA{${ITK_DATA_ROOT}/Input/whiteSpot.png}
    1
    ${ITK_TEST_OUTPUT_DIR}/whiteSpot_output_malcolm_two.mha
)

itk_add_test(
  NAME itkTwoLevelSetsv4ShiImage2DTest
  COMMAND
    ITKLevelSetsv4TestDriver
    --compare
    DATA{Baseline/solution_whiteSpot_output_shi_two.mha}
    ${ITK_TEST_OUTPUT_DIR}/whiteSpot_output_shi_two.mha
    itkTwoLevelSetShiImage2DTest
    DATA{${ITK_DATA_ROOT}/Input/whiteSpot.png}
    1
    ${ITK_TEST_OUTPUT_DIR}/whiteSpot_output_shi_two.mha
)

itk_add_test(
  NAME itkLevelSetsv4EvolutionNumberOfIterationsStoppingCriterionTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkLevelSetEvolutionNumberOfIterationsStoppingCriterionTest
)
itk_add_test(
  NAME itkMultiLevelSetsv4DenseImageTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkMultiLevelSetDenseImageTest
)
itk_add_test(
  NAME itkMultiLevelSetsv4DenseImageTwoThreadsTest
  COMMAND
    ITKLevelSetsv4TestDriver
    --with-threads
    2
    itkMultiLevelSetDenseImageTest
)
itk_add_test(
  NAME itkMultiLevelSetsv4ChanAndVeseInternalTermTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkMultiLevelSetChanAndVeseInternalTermTest
)
itk_add_test(
  NAME itkMultiLevelSetsv4SetEvolutionTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkMultiLevelSetEvolutionTest
)
itk_add_test(
  NAME itkMultiLevelSetsv4SetEvolutionTwoThreadsTest
  COMMAND
    ITKLevelSetsv4TestDriver
    --with-threads
    2
    itkMultiLevelSetEvolutionTest
)
itk_add_test(
  NAME itkMultiLevelSetsv4DenseImageSubset2DTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkMultiLevelSetDenseImageSubset2DTest
)
itk_add_test(
  NAME itkMultiLevelSetsv4WhitakerImageSubset2DTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkMultiLevelSetWhitakerImageSubset2DTest
)
itk_add_test(
  NAME itkMultiLevelSetsv4ShiImageSubset2DTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkMultiLevelSetShiImageSubset2DTest
)
itk_add_test(
  NAME itkMultiLevelSetsv4MalcolmImageSubset2DTest
  COMMAND
    ITKLevelSetsv4TestDriver
    itkMultiLevelSetMalcolmImageSubset2DTest
)
