# # I could check in test data files but I have to write a program to # build them, so it might as well get run as a percursor test. add_executable(BRAINSTransformConvertMakeTestFiles BRAINSTransformConvertMakeTestFiles.cxx) target_link_libraries(BRAINSTransformConvertMakeTestFiles BRAINSCommonLib ${BRAINSTransformConvert_ITK_LIBRARIES}) set_target_properties(BRAINSTransformConvertMakeTestFiles PROPERTIES FOLDER ${MODULE_FOLDER}) add_executable(ImageCompare ImageCompare.cxx) target_link_libraries(ImageCompare BRAINSCommonLib ${BRAINSTransformConvert_ITK_LIBRARIES}) set_target_properties(ImageCompare PROPERTIES FOLDER ${MODULE_FOLDER}) set_target_properties(BRAINSTransformConvertMakeTestFiles ImageCompare PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) # VersorRigid # ScaleVersor # ScaleSkewVersor # Affine # BSPlineDeformable # DisplacementField # # Test strategy: # foreach transform type # convert transform to each higher-dimensional type # # program to generate the test files add_test(NAME BRAINSTransformConvertMakeTestFilesTest COMMAND ${LAUNCH_EXE} $ ${CMAKE_CURRENT_BINARY_DIR}) set_property(TEST BRAINSTransformConvertMakeTestFilesTest APPEND PROPERTY DEPENDS BRAINSTransformConvertMakeTestFiles) # # need to run BRAINSTransformConvert where they were dumped set(BRAINSTransformConvert "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/BRAINSTransformConvert") set(BRAINSResample "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/BRAINSResample") set(ImageCompare "${CMAKE_CURRENT_BINARY_DIR}/ImageCompare") # # use BRAINSTransformConvert to make conversions set(VersorRigidTargets VersorRigid ScaleVersor ScaleSkewVersor Affine DisplacementField) set(ScaleVersorTargets ScaleVersor ScaleSkewVersor Affine DisplacementField) set(ScaleSkewVersorTargets Affine DisplacementField) set(AffineTargets Affine DisplacementField) set(BSplineDeformableTargets DisplacementField) set(TransformTestImage "${CMAKE_CURRENT_BINARY_DIR}/TransformConvertTestImage.nii.gz") # # INFO: Make tests for BSplineTransform to replace BSplineDeformable foreach(SourceTransform VersorRigid ScaleVersor ScaleSkewVersor Affine) # BSplineDeformable) foreach(TargetPrecisionType float double) foreach(TargetTransform IN LISTS ${SourceTransform}Targets) set(TransformConvertTestName Convert${SourceTransform}To${TargetTransform}In${TargetPrecisionType}) set(SourceTransformName "${CMAKE_CURRENT_BINARY_DIR}/${SourceTransform}Transform.txt") set(TargetTransformName "${CMAKE_CURRENT_BINARY_DIR}/${SourceTransform}To${TargetTransform}In${TargetPrecisionType}.txt") set(DisplacementVolumeImage "${CMAKE_CURRENT_BINARY_DIR}/${SourceTransform}Displacement.nii.gz") # # do the conversion add_test(NAME ${TransformConvertTestName} COMMAND ${LAUNCH_EXE} $ --inputTransform ${SourceTransformName} --outputTransform ${TargetTransformName} --outputTransformType ${TargetTransform} --outputPrecisionType ${TargetPrecisionType} --referenceVolume ${TransformTestImage} # Only needed for DisplacementField transforms --displacementVolume ${DisplacementVolumeImage} # Only needed for DisplacementField transforms ) set_property(TEST ${TransformConvertTestName} APPEND PROPERTY DEPENDS BRAINSTransformConvertMakeTestFilesTest) set_property(TEST ${TransformConvertTestName} APPEND PROPERTY DEPENDS BRAINSTransformConvert) if(NOT "${SourceTransform}" STREQUAL "${TargetTransform}") if(NOT "${TargetTransform}" STREQUAL "DisplacementField") # # Do the backwards conversion which will fail set(BadTransformConvertTestName "Bad${TransformConvertTestName}") set(BadTransformConvertTargetName ${BadTransformConvertTestName}.txt) add_test(NAME ${BadTransformConvertTestName} COMMAND ${LAUNCH_EXE} $ --inputTransform ${TargetTransformName} --outputTransform ${BadTransformConvertTargetName} --outputTransformType ${SourceTransform} --outputPrecisionType ${TargetPrecisionType} --referenceVolume ${TransformTestImage} --displacementVolume ${DisplacementVolumeImage} ) set_property(TEST ${BadTransformConvertTestName} APPEND PROPERTY DEPENDS BRAINSTransformConvertMakeTestFilesTest) set_property(TEST ${BadTransformConvertTestName} APPEND PROPERTY DEPENDS ${TransformConvertTestName}) set_tests_properties(${BadTransformConvertTestName} PROPERTIES WILL_FAIL ON) endif() endif() # resample the test image using BRAINSResample # and original transform set(ResampleWSourceTestName ResampleWSource${SourceTransform}${TargetTransform}${TargetPrecisionType}) set(ResampleWSourceOutputImage ${ResampleWSourceTestName}.nii.gz) add_test(NAME ${ResampleWSourceTestName} COMMAND ${LAUNCH_EXE} $ --inputVolume ${TransformTestImage} --outputVolume ${ResampleWSourceOutputImage} --pixelType short --warpTransform ${SourceTransformName}) set_property(TEST ${ResampleWSourceTestName} APPEND PROPERTY DEPENDS BRAINSResample) set_property(TEST ${ResampleWSourceTestName} APPEND PROPERTY DEPENDS BRAINSTransformConvertMakeTestFilesTest) # resample the test image using BRAINSResample # and converted transform set(ResampleWTargetTestName ResampleWTarget${SourceTransform}${TargetTransform}${TargetPrecisionType}) set(ResampleWTargetOutputImage ${ResampleWTargetTestName}.nii.gz) # Displacement field takes different command line if(NOT "${TargetTransform}" STREQUAL "DisplacementField") add_test(NAME ${ResampleWTargetTestName} COMMAND ${LAUNCH_EXE} $ --inputVolume ${TransformTestImage} --outputVolume ${ResampleWTargetOutputImage} --pixelType short --warpTransform ${TargetTransformName}) else() add_test(NAME ${ResampleWTargetTestName} COMMAND ${LAUNCH_EXE} $ --inputVolume ${TransformTestImage} --outputVolume ${ResampleWTargetOutputImage} --pixelType short --deformationVolume ${DisplacementVolumeImage}) endif() # depend on previous test, and BRAINSResample set_property(TEST ${ResampleWTargetTestName} APPEND PROPERTY DEPENDS ${TransformConvertTestName} BRAINSResample) set(ImageCompareTestName ImageCompare${SourceTransform}${TargetTransform}${TargetPrecisionType}) add_test(NAME ${ImageCompareTestName} COMMAND ${LAUNCH_EXE} ${ImageCompare} ${ResampleWSourceOutputImage} ${ResampleWTargetOutputImage}) set_property(TEST ${ImageCompareTestName} APPEND PROPERTY DEPENDS ImageCompare ${ResampleWSourceTestName} ${ResampleWTargetTestName}) endforeach() endforeach() endforeach()