itk_module_test()
set(
  ITKMetricsv4Tests
  itkEuclideanDistancePointSetMetricTest.cxx
  itkExpectationBasedPointSetMetricTest.cxx
  itkJensenHavrdaCharvatTsallisPointSetMetricTest.cxx
  itkJensenHavrdaCharvatTsallisPointSetMetricRegistrationTest.cxx
  itkLabeledPointSetMetricTest.cxx
  itkLabeledPointSetMetricRegistrationTest.cxx
  itkImageToImageMetricv4Test.cxx
  itkJointHistogramMutualInformationImageToImageMetricv4Test.cxx
  itkJointHistogramMutualInformationImageToImageRegistrationTest.cxx
  itkMeanSquaresImageToImageMetricv4Test.cxx
  itkCorrelationImageToImageMetricv4Test.cxx
  itkMeanSquaresImageToImageMetricv4OnVectorTest.cxx
  itkMeanSquaresImageToImageMetricv4OnVectorTest2.cxx
  itkANTSNeighborhoodCorrelationImageToImageMetricv4Test.cxx
  itkANTSNeighborhoodCorrelationImageToImageRegistrationTest.cxx
  itkMattesMutualInformationImageToImageMetricv4Test.cxx
  itkMattesMutualInformationImageToImageMetricv4RegistrationTest.cxx
  itkMultiStartImageToImageMetricv4RegistrationTest.cxx
  itkMultiGradientImageToImageMetricv4RegistrationTest.cxx
  itkMetricImageGradientTest.cxx
  itkMeanSquaresImageToImageMetricv4RegistrationTest.cxx
  itkMeanSquaresImageToImageMetricv4RegistrationTest2.cxx
  itkImageToImageMetricv4RegistrationTest.cxx
  itkDemonsImageToImageMetricv4Test.cxx
  itkDemonsImageToImageMetricv4RegistrationTest.cxx
  itkEuclideanDistancePointSetMetricRegistrationTest.cxx
  itkExpectationBasedPointSetMetricRegistrationTest.cxx
  itkEuclideanDistancePointSetMetricTest2.cxx
  itkEuclideanDistancePointSetMetricTest3.cxx
  itkObjectToObjectMultiMetricv4Test.cxx
  itkObjectToObjectMultiMetricv4RegistrationTest.cxx
  itkMeanSquaresImageToImageMetricv4SpeedTest.cxx
  itkMeanSquaresImageToImageMetricv4VectorRegistrationTest.cxx
)

set(INPUTDATA ${ITK_DATA_ROOT}/Input)
set(BASELINE_ROOT ${ITK_DATA_ROOT}/Baseline)
set(TEMP ${ITK_TEST_OUTPUT_DIR})

createtestdriver(ITKMetricsv4 "${ITKMetricsv4-Test_LIBRARIES}" "${ITKMetricsv4Tests}")

itk_add_test(
  NAME itkEuclideanDistancePointSetMetricTest
  COMMAND
    ITKMetricsv4TestDriver
    itkEuclideanDistancePointSetMetricTest
)

itk_add_test(
  NAME itkEuclideanDistancePointSetMetricTest2
  COMMAND
    ITKMetricsv4TestDriver
    itkEuclideanDistancePointSetMetricTest2
)

itk_add_test(
  NAME itkEuclideanDistancePointSetMetricTest3
  COMMAND
    ITKMetricsv4TestDriver
    itkEuclideanDistancePointSetMetricTest3
)

itk_add_test(
  NAME itkExpectationBasedPointSetMetricTest
  COMMAND
    ITKMetricsv4TestDriver
    itkExpectationBasedPointSetMetricTest
)

itk_add_test(
  NAME itkJensenHavrdaCharvatTsallisPointSetMetricTest
  COMMAND
    ITKMetricsv4TestDriver
    itkJensenHavrdaCharvatTsallisPointSetMetricTest
)

itk_add_test(
  NAME itkJensenHavrdaCharvatTsallisPointSetMetricRegistrationTest
  COMMAND
    ITKMetricsv4TestDriver
    itkJensenHavrdaCharvatTsallisPointSetMetricRegistrationTest
)

itk_add_test(
  NAME itkLabeledPointSetMetricTest
  COMMAND
    ITKMetricsv4TestDriver
    itkLabeledPointSetMetricTest
)

itk_add_test(
  NAME itkLabeledPointSetMetricRegistrationTest
  COMMAND
    ITKMetricsv4TestDriver
    itkLabeledPointSetMetricRegistrationTest
)

itk_add_test(
  NAME itkImageToImageMetricv4Test
  COMMAND
    ITKMetricsv4TestDriver
    itkImageToImageMetricv4Test
)

itk_add_test(
  NAME itkJointHistogramMutualInformationImageToImageMetricv4Test
  COMMAND
    ITKMetricsv4TestDriver
    itkJointHistogramMutualInformationImageToImageMetricv4Test
)

itk_add_test(
  NAME itkJointHistogramMutualInformationImageToImageRegistrationTest
  COMMAND
    ITKMetricsv4TestDriver
    itkJointHistogramMutualInformationImageToImageRegistrationTest
    ${ITK_EXAMPLE_DATA_ROOT}/BrainProtonDensitySliceBorder20.png
    ${ITK_EXAMPLE_DATA_ROOT}/BrainProtonDensitySliceBSplined10.png
    ${TEMP}/itkJointHistogramMutualInformationImageToImageRegistrationTest.nii.gz
    2
    1
)

itk_add_test(
  NAME itkJointHistogramMutualInformationImageToImageRegistrationTest2
  COMMAND
    ITKMetricsv4TestDriver
    itkJointHistogramMutualInformationImageToImageRegistrationTest
    DATA{Baseline/face_avg.jpg}
    DATA{Input/face_b.jpg}
    ${TEMP}/itkJointHistogramMutualInformationImageToImageRegistrationTest2.nii.gz
    2
    1
)

itk_add_test(
  NAME itkMeanSquaresImageToImageMetricv4Test
  COMMAND
    ITKMetricsv4TestDriver
    itkMeanSquaresImageToImageMetricv4Test
)

itk_add_test(
  NAME itkCorrelationImageToImageMetricv4Test
  COMMAND
    ITKMetricsv4TestDriver
    itkCorrelationImageToImageMetricv4Test
)

itk_add_test(
  NAME itkMeanSquaresImageToImageMetricv4OnVectorTest
  COMMAND
    ITKMetricsv4TestDriver
    itkMeanSquaresImageToImageMetricv4OnVectorTest
)

itk_add_test(
  NAME itkMeanSquaresImageToImageMetricv4OnVectorTest2
  COMMAND
    ITKMetricsv4TestDriver
    itkMeanSquaresImageToImageMetricv4OnVectorTest2
)

itk_add_test(
  NAME itkANTSNeighborhoodCorrelationImageToImageMetricv4Test
  COMMAND
    ITKMetricsv4TestDriver
    itkANTSNeighborhoodCorrelationImageToImageMetricv4Test
)

itk_add_test(
  NAME itkANTSNeighborhoodCorrelationImageToImageRegistrationTest
  COMMAND
    ITKMetricsv4TestDriver
    itkANTSNeighborhoodCorrelationImageToImageRegistrationTest
    ${ITK_EXAMPLE_DATA_ROOT}/BrainProtonDensitySliceBorder20.png
    ${ITK_EXAMPLE_DATA_ROOT}/BrainProtonDensitySliceBSplined10.png
    ${TEMP}/itkANTSNeighborhoodCorrelationImageToImageRegistrationTest.nii.gz
    1
    1
    0.25
)

itk_add_test(
  NAME itkMattesMutualInformationImageToImageMetricv4Test
  COMMAND
    ITKMetricsv4TestDriver
    itkMattesMutualInformationImageToImageMetricv4Test
)

itk_add_test(
  NAME itkMattesMutualInformationImageToImageMetricv4RegistrationTest
  COMMAND
    ITKMetricsv4TestDriver
    itkMattesMutualInformationImageToImageMetricv4RegistrationTest
    DATA{Baseline/face_avg.jpg}
    DATA{Input/face_b.jpg}
    ${TEMP}/itkMattesMutualInformationImageToImageMetricv4RegistrationTest.nii.gz
    5
    0
)

itk_add_test(
  NAME itkMultiStartImageToImageMetricv4RegistrationTest
  COMMAND
    ITKMetricsv4TestDriver
    itkMultiStartImageToImageMetricv4RegistrationTest
    DATA{Baseline/face_avg.jpg}
    DATA{Input/face_b.jpg}
    ${TEMP}/itkMultiStartImageToImageMetricv4RegistrationTest.nii.gz
    5
    1
)

itk_add_test(
  NAME itkMultiGradientImageToImageMetricv4RegistrationTest
  COMMAND
    ITKMetricsv4TestDriver
    itkMultiGradientImageToImageMetricv4RegistrationTest
    DATA{Baseline/face_avg.jpg}
    DATA{Input/face_b.jpg}
    ${TEMP}/itkMultiGradientImageToImageMetricv4RegistrationTest.nii.gz
    5
)

itk_add_test(
  NAME itkMetricImageGradientTest
  COMMAND
    ITKMetricsv4TestDriver
    itkMetricImageGradientTest
)

itk_add_test(
  NAME itkMeanSquaresImageToImageMetricv4RegistrationTest
  COMMAND
    ITKMetricsv4TestDriver
    itkMeanSquaresImageToImageMetricv4RegistrationTest
    DATA{Baseline/face_avg.jpg}
    DATA{Input/face_b.jpg}
    ${TEMP}/itkMeanSquaresImageToImageMetricv4RegistrationTest.nii.gz
    2
    1
)

itk_add_test(
  NAME itkMeanSquaresImageToImageMetricv4RegistrationTest2
  COMMAND
    ITKMetricsv4TestDriver
    itkMeanSquaresImageToImageMetricv4RegistrationTest2
    DATA{${INPUTDATA}/r16slice.nii.gz}
    DATA{${INPUTDATA}/r64slice.nii.gz}
    ${TEMP}/itkMeanSquaresImageToImageMetricv4RegistrationTest2.nii.gz
)

itk_add_test(
  NAME itkImageToImageMetricv4RegistrationTest
  COMMAND
    ITKMetricsv4TestDriver
    itkImageToImageMetricv4RegistrationTest
    75 #iterations1
    0.8 #maxStepSize1
    120 #iterations2
    0.1 #maxStepSize2
    0 #doSampling
    0 #useGradientFilter
)

itk_add_test(
  NAME itkImageToImageMetricv4RegistrationTest2
  COMMAND
    ITKMetricsv4TestDriver
    itkImageToImageMetricv4RegistrationTest
    47 #iterations1
    1.0 #maxStepSize1
    120 #iterations2
    0.1 #maxStepSize2
    1 #doSampling
    0 #useGradientFilter
)

itk_add_test(
  NAME itkImageToImageMetricv4RegistrationTest3
  COMMAND
    ITKMetricsv4TestDriver
    itkImageToImageMetricv4RegistrationTest
    50 #iterations1
    1.0 #maxStepSize1
    120 #iterations2
    0.1 #maxStepSize2
    0 #doSampling
    1 #useGradientFilter
)

itk_add_test(
  NAME itkDemonsImageToImageMetricv4Test
  COMMAND
    ITKMetricsv4TestDriver
    itkDemonsImageToImageMetricv4Test
)

itk_add_test(
  NAME itkDemonsImageToImageMetricv4RegistrationTest
  COMMAND
    ITKMetricsv4TestDriver
    --with-threads
    1
    --compare
    DATA{Baseline/itkDemonsImageToImageMetricv4RegistrationTest_I35_S0_T1_F0.nii.gz}
    ${TEMP}/itkDemonsImageToImageMetricv4RegistrationTest.nii.gz
    itkDemonsImageToImageMetricv4RegistrationTest
    DATA{${INPUTDATA}/r16slice.nii.gz}
    DATA{${INPUTDATA}/r64slice.nii.gz}
    ${TEMP}/itkDemonsImageToImageMetricv4RegistrationTest.nii.gz
    35 #iterations
    0 #sampling
    0 #image gradient filter
)

itk_add_test(
  NAME itkDemonsImageToImageMetricv4RegistrationTest2
  COMMAND
    ITKMetricsv4TestDriver
    --with-threads
    1
    --compare
    DATA{Baseline/itkDemonsImageToImageMetricv4RegistrationTest_I35_S1_T1_F0.nii.gz}
    ${TEMP}/itkDemonsImageToImageMetricv4RegistrationTest2.nii.gz
    itkDemonsImageToImageMetricv4RegistrationTest
    DATA{${INPUTDATA}/r16slice.nii.gz}
    DATA{${INPUTDATA}/r64slice.nii.gz}
    ${TEMP}/itkDemonsImageToImageMetricv4RegistrationTest2.nii.gz
    35 #iterations
    1 #sampling
    0 #image gradient filter
)

itk_add_test(
  NAME itkDemonsImageToImageMetricv4RegistrationTest3
  COMMAND
    ITKMetricsv4TestDriver
    --with-threads
    1
    --compare
    DATA{Baseline/itkDemonsImageToImageMetricv4RegistrationTest_I35_S0_T1_F1.nii.gz}
    ${TEMP}/itkDemonsImageToImageMetricv4RegistrationTest3.nii.gz
    itkDemonsImageToImageMetricv4RegistrationTest
    DATA{${INPUTDATA}/r16slice.nii.gz}
    DATA{${INPUTDATA}/r64slice.nii.gz}
    ${TEMP}/itkDemonsImageToImageMetricv4RegistrationTest3.nii.gz
    35 #iterations
    0 #sampling
    1 #image gradient filter
)

itk_add_test(
  NAME itkEuclideanDistancePointSetMetricRegistrationTest
  COMMAND
    ITKMetricsv4TestDriver
    itkEuclideanDistancePointSetMetricRegistrationTest
)

itk_add_test(
  NAME itkExpectationBasedPointSetMetricRegistrationTest
  COMMAND
    ITKMetricsv4TestDriver
    itkExpectationBasedPointSetMetricRegistrationTest
)

itk_add_test(
  NAME itkObjectToObjectMultiMetricv4Test
  COMMAND
    ITKMetricsv4TestDriver
    itkObjectToObjectMultiMetricv4Test
)

itk_add_test(
  NAME itkObjectToObjectMultiMetricv4RegistrationTest
  COMMAND
    ITKMetricsv4TestDriver
    itkObjectToObjectMultiMetricv4RegistrationTest
)

itk_add_test(
  NAME itkMeanSquaresImageToImageMetricv4VectorRegistrationTest
  COMMAND
    ITKMetricsv4TestDriver
    --with-threads
    1
    --compare
    DATA{Baseline/itkMeanSquaresImageToImageMetricv4VectorRegistrationTest.nii.gz}
    ${TEMP}/itkMeanSquaresImageToImageMetricv4VectorRegistrationTest.nii.gz
    itkMeanSquaresImageToImageMetricv4VectorRegistrationTest
    DATA{Input/orange.jpg}
    DATA{Input/apple.jpg}
    ${TEMP}/itkMeanSquaresImageToImageMetricv4VectorRegistrationTest.nii.gz
    100
    25
)
