cmake_minimum_required (VERSION 2.8.10)
project (HLJPSS_Fortran_TESTS Fortran)

#-----------------------------------------------------------------------------
# Setup include Directories
#-----------------------------------------------------------------------------
LINK_DIRECTORIES (
    ${CMAKE_Fortran_MODULE_DIRECTORY}
    ${PROJECT_BINARY_DIR}
    ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
)

#-----------------------------------------------------------------------------
# Define Sources
#-----------------------------------------------------------------------------
set (tests
    test_bitfield
    test_regref_hyper
)

foreach (test ${tests})
  add_executable (f90_${test} ${PROJECT_SOURCE_DIR}/${test}.f90 ${PROJECT_SOURCE_DIR}/test_util.f90)
  TARGET_NAMING (f90_${test} ${LIB_TYPE})
  TARGET_FORTRAN_WIN_PROPERTIES (f90_${test} "" "")
  if (WIN32)
    set_property (TARGET f90_${test} 
        APPEND PROPERTY COMPILE_DEFINITIONS 
          HDF5F90_WINDOWS
    )
  endif (WIN32)
  target_link_libraries (f90_${test} ${HLJPSS_Fortran_LIB_TARGET} ${LINK_LIBS})
  set_target_properties (f90_${test} PROPERTIES LINKER_LANGUAGE Fortran)
endforeach (test ${tests})

if (BUILD_TESTING)
	
# THIS TEST JUST CHECKS THAT THE RETURN VALUE FROM THE TEST IS 0,
# IT DOES NOT TEST THE OUTPUT; THAT IS DONE IN THE EXAMPLES DIR.
#
  macro (ADD_H5_CHECK_TEST testname)
    add_test (
        NAME f90_${testname}-clearall
        COMMAND    ${CMAKE_COMMAND}
            -E remove 
            f90_${testname}.out
            f90_${testname}.out.err
            *.h5
    )
    add_test (
        NAME f90_${testname}
        COMMAND "${CMAKE_COMMAND}"
            -D "TEST_PROGRAM=$<TARGET_FILE:f90_${testname}>"
            -D "TEST_ARGS:STRING=${ARGN}"
            -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
            -D "TEST_EXPECT=0"
            -D "TEST_OUTPUT=${testname}.out"
            -D "TEST_SKIP_COMPARE:BOOL=true"
            -D "TEST_REFERENCE=${testname}.test"
            -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake"
    )
    set_tests_properties (f90_${testname} PROPERTIES DEPENDS f90_${testname}-clearall)
  endmacro (ADD_H5_CHECK_TEST)

  foreach (test ${tests}) 
    ADD_H5_CHECK_TEST (${test})
  endforeach (test ${tests})
  
endif (BUILD_TESTING)
