############################################################################## ############################################################################## ### T E S T I N G ### ############################################################################## ############################################################################## #-- Copy all the dat files from the test directory into the source directory set (HDF4_REFERENCE_TEST_FILES hdfimport.input1 hdfimport.out1 # hdfimport.out2 hdfimport.out3 SDSfloat2.hdf SDSfloat3.hdf ) foreach (h4_file ${HDF4_REFERENCE_TEST_FILES}) set (dest "${PROJECT_BINARY_DIR}/${h4_file}") #message (STATUS " Copying ${HDF4_MFHDF_HDFIMPORT_SOURCE_DIR}/${h4_file} to ${PROJECT_BINARY_DIR}/") add_custom_command ( TARGET hdfimport POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${HDF4_MFHDF_HDFIMPORT_SOURCE_DIR}/${h4_file} ${dest} ) endforeach () if (WIN32 AND MSVC_VERSION LESS 1900) add_custom_command ( TARGET hdfimport POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${HDF4_MFHDF_HDFIMPORT_SOURCE_DIR}/hdfimport-w.out2 ${PROJECT_BINARY_DIR}/hdfimport.out2 ) else () add_custom_command ( TARGET hdfimport POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${HDF4_MFHDF_HDFIMPORT_SOURCE_DIR}/hdfimport.out2 ${PROJECT_BINARY_DIR}/hdfimport.out2 ) endif () #-- Copy all the hdfls tst files from the test directory into the source directory set (HDF4_LS_TEST_FILES ctxtr2.tst ctxtr3.tst cb32i2.tst cb32i3.tst cb16i2.tst cb16i3.tst cb32r2.tst cb32r3.tst cb64r2.tst cb64r3.tst cb64r2-n.tst cb64r3-n.tst ctxtr2_ris.tst cb64r2_ris.tst SDSfloat2.tst SDSfloat3.tst ) foreach (ls_file ${HDF4_LS_TEST_FILES}) set (dest "${PROJECT_BINARY_DIR}/${ls_file}") #message (STATUS " Copying ${HDF4_MFHDF_HDFIMPORT_SOURCE_DIR}/${ls_file} to ${PROJECT_BINARY_DIR}/") ADD_CUSTOM_COMMAND ( TARGET hdfimport POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${HDF4_MFHDF_HDFIMPORT_SOURCE_DIR}/testfiles/${ls_file} ${dest} ) endforeach () #-- hdfimporttest set (hdfimporttest_SRCS ${HDF4_MFHDF_HDFIMPORT_SOURCE_DIR}/hdfimporttest.c ) add_executable (hdfimporttest ${hdfimporttest_SRCS}) TARGET_C_PROPERTIES (hdfimporttest STATIC " " " ") if (HDF4_BUILD_XDR_LIB) target_link_libraries (hdfimporttest ${HDF4_MF_LIB_TARGET} ${HDF4_SRC_LIB_TARGET} ${LINK_LIBS} ${HDF4_MF_XDR_LIB_TARGET}) else () target_link_libraries (hdfimporttest ${HDF4_MF_LIB_TARGET} ${HDF4_SRC_LIB_TARGET} ${LINK_LIBS}) endif () TARGET_NAMING (hdfimporttest STATIC) #-- gen_sds_floats set (gen_sds_floats_SRCS ${HDF4_MFHDF_HDFIMPORT_SOURCE_DIR}/gen_sds_floats.c ) add_executable (gen_sds_floats ${gen_sds_floats_SRCS}) TARGET_C_PROPERTIES (gen_sds_floats STATIC " " " ") if (HDF4_BUILD_XDR_LIB) target_link_libraries (gen_sds_floats ${HDF4_MF_LIB_TARGET} ${HDF4_SRC_LIB_TARGET} ${LINK_LIBS} ${HDF4_MF_XDR_LIB_TARGET}) else () target_link_libraries (gen_sds_floats ${HDF4_MF_LIB_TARGET} ${HDF4_SRC_LIB_TARGET} ${LINK_LIBS}) endif () TARGET_NAMING (gen_sds_floats STATIC) ############################################################################## ############################################################################## ### T H E T E S T S M A C R O S ### ############################################################################## ############################################################################## macro (ADD_H4_TEST resultfile resultcode testtfile testtype) if (NOT ${testtype} STREQUAL "") if (${testtype} STREQUAL "N") add_test (NAME HIMPORT-${testtfile} COMMAND $ ${resultfile} -n -o ${testtfile}.hdf) endif () if (${testtype} STREQUAL "R") add_test (NAME HIMPORT-${testtfile} COMMAND $ ${resultfile} -o ${testtfile}.hdf -raster ${ARGN}) endif () else () add_test (NAME HIMPORT-${testtfile} COMMAND $ ${resultfile} -o ${testtfile}.hdf) endif () if (NOT "${last_test}" STREQUAL "") set_tests_properties (HIMPORT-${testtfile} PROPERTIES DEPENDS ${last_test} LABELS ${PROJECT_NAME}) else () set_tests_properties (HIMPORT-${testtfile} PROPERTIES LABELS ${PROJECT_NAME}) endif () if (HDF4_ENABLE_USING_MEMCHECKER) add_test (NAME HIMPORTLS-${testtfile} COMMAND $ -l ${testtfile}.hdf) else () add_test ( NAME HIMPORTLS-${testtfile} COMMAND "${CMAKE_COMMAND}" -D "TEST_PROGRAM=$" -D "TEST_ARGS:STRING=-l;${testtfile}.hdf" -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" -D "TEST_OUTPUT=${testtfile}.tmp" -D "TEST_EXPECT=${resultcode}" -D "TEST_FILTER:STRING=(File library|String)[^\n]+\n" -D "TEST_REFERENCE=${testtfile}.tst" -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" ) endif () set_tests_properties (HIMPORTLS-${testtfile} PROPERTIES DEPENDS HIMPORT-${testtfile} LABELS ${PROJECT_NAME}) set (last_test "HIMPORTLS-${testtfile}") endmacro () macro (ADD_H4_TEST_OUT resultfile resultcode) add_test (NAME HIMPORT-OUT-${resultfile} COMMAND $ ${resultfile}.hdf -o ${resultfile}.out) if (NOT "${last_test}" STREQUAL "") set_tests_properties (HIMPORT-OUT-${resultfile} PROPERTIES DEPENDS ${last_test} LABELS ${PROJECT_NAME}) else () set_tests_properties (HIMPORT-OUT-${resultfile} PROPERTIES LABELS ${PROJECT_NAME}) endif () if (HDF4_ENABLE_USING_MEMCHECKER) add_test (NAME HIMPORTLS-OUT-${resultfile} COMMAND $ ${resultfile}.out) else () add_test ( NAME HIMPORTLS-OUT-${resultfile} COMMAND "${CMAKE_COMMAND}" -D "TEST_PROGRAM=$" -D "TEST_ARGS:STRING=${resultfile}.out" -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" -D "TEST_OUTPUT=${resultfile}.tmp" -D "TEST_EXPECT=${resultcode}" -D "TEST_FILTER:STRING=(File library|String)[^\n]+\n" -D "TEST_REFERENCE=${resultfile}.tst" -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" ) endif () set_tests_properties (HIMPORTLS-OUT-${resultfile} PROPERTIES DEPENDS HIMPORT-OUT-${resultfile} LABELS ${PROJECT_NAME}) set (last_test "HIMPORTLS-OUT-${resultfile}") endmacro () macro (ADD_H4_TEST_ED testfile resultfile resultcode) if (HDF4_ENABLE_USING_MEMCHECKER) add_test (NAME HIMPORT-EDIT COMMAND $ -batch) else () add_test ( NAME HIMPORT-EDIT COMMAND "${CMAKE_COMMAND}" -D "TEST_PROGRAM=$" -D "TEST_ARGS:STRING=-batch" -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" -D "TEST_INPUT=${testfile}" -D "TEST_OUTPUT=${testfile}.tmp" -D "TEST_EXPECT=${resultcode}" -D "TEST_REFERENCE=${resultfile}" -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" ) endif () if (NOT "${last_test}" STREQUAL "") set_tests_properties (HIMPORT-EDIT PROPERTIES DEPENDS ${last_test} LABELS ${PROJECT_NAME}) else () set_tests_properties (HIMPORT-EDIT PROPERTIES LABELS ${PROJECT_NAME}) endif () set (last_test "HIMPORT-EDIT") endmacro () ############################################################################## ############################################################################## ### T H E T E S T S ### ############################################################################## ############################################################################## # Remove any output file left over from previous test run add_test ( NAME hdfimport-clear-refs COMMAND ${CMAKE_COMMAND} -E remove ctxtr2 ctxtr3 cb32i2 cb32i3 cb16i2 cb16i3 cb32r2 cb32r3 cb64r2 cb64r3 cb64r2-n cb64r3-n ctxtr2_ris cb64r2_ris ctxtr2.hdf ctxtr3.hdf cb32i2.hdf cb32i3.hdf cb16i2.hdf cb16i3.hdf cb32r2.hdf cb32r3.hdf cb64r2.hdf cb64r3.hdf cb64r2-n.hdf cb64r3-n.hdf ctxtr2_ris.hdf cb64r2_ris.hdf ctxtr2.tmp ctxtr3.tmp cb32i2.tmp cb32i3.tmp cb16i2.tmp cb16i3.tmp cb32r2.tmp cb32r3.tmp cb64r2.tmp cb64r3.tmp cb64r2-n.tmp cb64r3-n.tmp ctxtr2_ris.tmp cb64r2_ris.tmp SDSfloat2.tmp SDSfloat3.tmp ctxtr2.tmp.err ctxtr3.tmp.err cb32i2.tmp.err cb32i3.tmp.err cb16i2.tmp.err cb16i3.tmp.err cb32r2.tmp.err cb32r3.tmp.err cb64r2.tmp.err cb64r3.tmp.err cb64r2-n.tmp.err cb64r3-n.tmp.err ctxtr2_ris.tmp.err cb64r2_ris.tmp.err SDSfloat2.tmp.err SDSfloat3.tmp.err ) if (NOT "${last_test}" STREQUAL "") set_tests_properties (hdfimport-clear-refs PROPERTIES DEPENDS ${last_test} LABELS ${PROJECT_NAME}) else () set_tests_properties (hdfimport-clear-refs PROPERTIES LABELS ${PROJECT_NAME}) endif () set (last_test "hdfimport-clear-refs") add_test (NAME HIMPORTtest COMMAND $) if (NOT "${last_test}" STREQUAL "") set_tests_properties (HIMPORTtest PROPERTIES DEPENDS ${last_test} LABELS ${PROJECT_NAME}) else () set_tests_properties (HIMPORTtest PROPERTIES LABELS ${PROJECT_NAME}) endif () set (last_test "HIMPORTtest") # "Testing for 32-bit floating point ASCII (2D data)" ADD_H4_TEST (ctxtr2 0 ctxtr2 "") # "Testing for 32-bit floating point ASCII (3D data)" ADD_H4_TEST (ctxtr3 0 ctxtr3 "") # "Testing for 32-bit integer binary (2D data)" ADD_H4_TEST (cb32i2 0 cb32i2 "") # "Testing for 32-bit integer binary (3D data)" ADD_H4_TEST (cb32i3 0 cb32i3 "") # "Testing for 16-bit integer binary (2D data)" ADD_H4_TEST (cb16i2 0 cb16i2 "") # "Testing for 16-bit integer (3D data)" ADD_H4_TEST (cb16i3 0 cb16i3 "") # "Testing for 32-bit floating point binary (2D data)" ADD_H4_TEST (cb32r2 0 cb32r2 "") # "Testing for 32-bit floating point binary (3D data)" ADD_H4_TEST (cb32r3 0 cb32r3 "") # "Testing for 64-bit floating point binary (2D data) - Default Behaviour (Conversion to 32 bit FP SDS)" ADD_H4_TEST (cb64r2 0 cb64r2 "") # "Testing for 64-bit floating point binary (3D data) - Default Behaviour (Conversion to 32-bit FP SDS)" ADD_H4_TEST (cb64r3 0 cb64r3 "") # "Testing for 64-bit floating point binary (2D data) - Conversion to 64-bit FP SDS" ADD_H4_TEST (cb64r2 0 cb64r2-n "N") # "Testing for 64-bit floating point binary (3D data) - Conversion to 64-bit FP SDS" ADD_H4_TEST (cb64r3 0 cb64r3-n "N") # "Testing for raster options" ADD_H4_TEST (ctxtr2 0 ctxtr2_ris "R" -e 50 50) ADD_H4_TEST (cb64r2 0 cb64r2_ris "R" -i 50 50 -f) # # test with hdf files # "Testing for reading from hdf files" ADD_H4_TEST_OUT (SDSfloat2 0) ADD_H4_TEST_OUT (SDSfloat3 0) ADD_H4_TEST_ED (hdfimport.input1 hdfimport.out2 0)