
# ------------------------------------------------------------------------
# MACRO metview_etc_files
# Ensures the files listed in ETC_FILES are copied to the build directory
# and that they will be installed at install time
# ------------------------------------------------------------------------

macro(metview_macro_test)
    set(options)
    set(single_value_args MACRO)
    set(multi_value_args RESOURCES)
    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}" ${_FIRST_ARG} ${ARGN} )

    ecbuild_add_test(TARGET      ${_PAR_MACRO}_dummy_target
                     COMMAND     ${FULL_STARTUP_SCRIPT_PATH}
                     TYPE        SCRIPT
                     ARGS        -b ${_PAR_MACRO}
                     RESOURCES   ${_PAR_MACRO} ${_PAR_RESOURCES})

    set(all_tests "${all_tests}${_PAR_MACRO} ") # note the spacing
endmacro()



set(all_tests) # empty to start with



if(ENABLE_PLOTTING)
    metview_macro_test(MACRO     HelloWorld.mv
                       RESOURCES set_output.mv ../data/z500.grb)

    metview_macro_test(MACRO     layoutx3.mv
                       RESOURCES set_output.mv ../data/z500.grb)
endif()


metview_macro_test(MACRO     grib_dates.mv
                   RESOURCES  ../data/fc_data.grib
                              ../data/hindcast.grib)

metview_macro_test(MACRO     grib_nearest_gridpoint.mv
                   RESOURCES  ../data/t1000_LL_1x1.grb
                              ../data/t1000_LL_1x1_subarea.grb
                              ../data/t1000_LL_2x2.grb)

metview_macro_test(MACRO     interpolation_sh_to_ll.mv
                   RESOURCES  ../data/t1000_SH.grb)

metview_macro_test(MACRO     interpolation_sh_to_rgg.mv
                   RESOURCES  ../data/t1000_SH.grb)

metview_macro_test(MACRO     interpolation_rgg_to_ll.mv
                   RESOURCES  ../data/t1000_SH_to_RGG_reference.grb)

metview_macro_test(MACRO     grib_to_gpt.mv
                   RESOURCES  ../data/t1000_LL_2x2.grb)

metview_macro_test(MACRO     gpt_to_grib_core.mv
                   RESOURCES  ../data/bufr_obs_filter_reference.gpt
                              ../data/gpt_to_grib_reciprocal_reference.grb
                              ../data/gpt_to_grib_exp_mean_reference.grb
                              ../data/gpt_to_grib_exp_sum_reference.grb)

metview_macro_test(MACRO     gpt_to_grib_with_template.mv
                   RESOURCES  ../data/t1000_LL_2x2.grb ../data/10U_GG.grb)

metview_macro_test(MACRO     gpt_to_grib_nearest.mv
                   RESOURCES  ../data/t1000_LL_7x7.grb
                              ../data/example_XYLDTZ.geo
                              ../data/gpt_to_grib_nearest_sum_reference.grb
                              ../data/gpt_to_grib_nearest_mean_reference.grb
                              ../data/gpt_to_grib_nearest_count_reference.grb)

#metview_macro_test(MACRO     interpolation_gg_to_subarea.mv
#                   RESOURCES  ../data/10U_GG.grb)

metview_macro_test(MACRO     bufr_obs_filter.mv
                   RESOURCES  ../data/bufr-1.bufr ../data/bufr_obs_filter_reference.gpt)

metview_macro_test(MACRO     bufr_picker.mv
                   RESOURCES  ../data/bufr-2.bufr ../data/bufr_picker_reference.gpt)

metview_macro_test(MACRO     inline_c.mv
                   RESOURCES ../data/z500.grb)

metview_macro_test(MACRO     inline_fortran.mv
                   RESOURCES ../data/z500.grb)

metview_macro_test(MACRO     station.mv)

metview_macro_test(MACRO     vectors.mv)

metview_macro_test(MACRO     lists.mv)

metview_macro_test(MACRO     dates.mv)

metview_macro_test(MACRO     fieldsets.mv)


metview_macro_test(MACRO     divrot.mv
                   RESOURCES ../data/vorticity_divergence_500_sh.grb)

if(ENABLE_MARS)
    metview_macro_test(MACRO      MarsAccess.mv
                       RESOURCES  ../data/10U_GG.grb )
endif()


if(METVIEW_ODB)
    metview_macro_test(MACRO      odb_read.mv
                       RESOURCES  ../data/odb_test_set.odb )

    metview_macro_test(MACRO      odb_filter.mv
                       RESOURCES  ../data/odb_test_set.odb )

    if(ENABLE_PLOTTING)
        metview_macro_test(MACRO      odb_visualiser.mv
                           RESOURCES  ../data/odb_test_set.odb )
    endif()
endif()

# generate a script which can be used to run the tests on the installed version
set(METVIEW_COMMAND "${CMAKE_INSTALL_PREFIX}/bin/${METVIEW_SCRIPT}")
set(TESTS_DIR       "${CMAKE_CURRENT_BINARY_DIR}")
configure_file(post_install_tests.sh.in ${CMAKE_CURRENT_BINARY_DIR}/metview_post_install_tests.sh @ONLY)

install( FILES ${CMAKE_CURRENT_BINARY_DIR}/metview_post_install_tests.sh 
         DESTINATION ${MV_BIN_DIR}
         PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE)

