cmake_minimum_required(VERSION 3.2.2)
PROJECT (H4H5_LIB_TEST C CXX)

#-----------------------------------------------------------------------------
# Setup source files
#-----------------------------------------------------------------------------

if (H4H5_USE_HDFEOS2)
  add_definitions (-DHAVE_LIBHDFEOS)
endif ()

set (H4H5_TESTS
    h4h5apitestdefault
)

foreach (test ${H4H5_TESTS})
  add_executable (${test} ${H4H5_LIB_TEST_SOURCE_DIR}/${test}.c)
  TARGET_NAMING (${test} STATIC)
  TARGET_C_PROPERTIES (${test} STATIC " " " ")
  target_link_libraries (${test} ${LINK_LIBS})
endforeach ()

if (BUILD_SHARED_LIBS)
  foreach (test ${H4H5_TESTS})
    add_executable (${test}-shared ${H4H5_LIB_TEST_SOURCE_DIR}/${test}.c)
    TARGET_NAMING (${test}-shared SHARED)
    TARGET_C_PROPERTIES (${test}-shared SHARED " " " ")
    target_link_libraries (${test}-shared ${LINK_SHLIBS})
  endforeach ()
endif ()

#-- Copy all the dat files from the test directory into the source directory
set (H4H5_REFERENCE_TEST_FILES
    vg_all_test
)

file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/Expected")
foreach (h4h5_file ${H4H5_REFERENCE_TEST_FILES})
   set (desth5 "${PROJECT_BINARY_DIR}/Expected/${h4h5_file}.h5")
   #MESSAGE(STATUS " Copying ${h4h5_file} to ${dest} and ${desth5}")
   add_custom_command (
       TARGET     h4h5apitestdefault
       POST_BUILD
       COMMAND    ${CMAKE_COMMAND}
       ARGS       -E copy_if_different ${H4H5_LIB_TEST_SOURCE_DIR}/Expected/${h4h5_file}.h5 ${desth5}
   )
endforeach ()

MACRO (ADD_H4H5_TEST testname testfile)
  # Remove any output file left over from previous test run
  add_test (
      NAME TESTH4TOH5_CLEAR-${testname}
      COMMAND    ${CMAKE_COMMAND}
          -E remove
          ${testfile}.h5
  )
  if (NOT "${last_test}" STREQUAL "")
    set_tests_properties (TESTH4TOH5_CLEAR-${testname} PROPERTIES DEPENDS ${last_test})
  endif ()
  add_test (
      NAME TESTH4TOH5_COPY-${testname}
      COMMAND ${CMAKE_COMMAND} -E copy_if_different ${H4H5_LIB_TEST_SOURCE_DIR}/${testfile}.hdf ${PROJECT_BINARY_DIR}/${testfile}.hdf
  )
  set_tests_properties (TESTH4TOH5_COPY-${testname} PROPERTIES DEPENDS TESTH4TOH5_CLEAR-${testname})

  add_test (NAME TESTH4TOH5-${testname} COMMAND $<TARGET_FILE:${testname}> ${testfile}.hdf ${testfile}.h5)
  set_tests_properties (TESTH4TOH5-${testname} PROPERTIES DEPENDS TESTH4TOH5_COPY-${testname})
  set (last_test "TESTH4TOH5-${testname}")
ENDMACRO ()


ADD_H4H5_TEST (h4h5apitestdefault vg_all_test)

if (BUILD_SHARED_LIBS)
  ADD_H4H5_TEST (h4h5apitestdefault-shared vg_all_test)

endif ()
