set(TESTS
#    MIR-333
#    MIR-356
    MIR-425
    MIR-536
    PGEN-412
    PGEN-492
    PGEN-558
    action_graph
    area
    atlas
    bounding_box
    earthkit-geo
    formula
    gaussian_grid
    healpix
    in_memory_cache
    grib_basic_angle
    grib_encoding
    grib_input
    grib_scanning_mode
    grid_box_method
    grids
    gridspec
    increments
    input
    interpolations
    interpolationspec
    iterator
    job
    knn_weighting
    packing
    raw_memory
    spectral_order
    statistics
    style
    vector-space
    weight_matrix
    wind)

if(mir_HAVE_NETCDF)
    list(APPEND TESTS interpolation_netcdf)
endif()

foreach(_t ${TESTS})
    ecbuild_add_test(
        TARGET            mir_tests_unit_${_t}
        SOURCES           ${_t}.cc
        LIBS              mir
        ENVIRONMENT       ${_testEnvironment}
        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
    )
endforeach()

# in-memory cache capacities below the cache files footprint, per cache file loader (see cache.cc)
foreach(_loader counted-file-io tmp-counted-shmem)
    ecbuild_add_test(
        TARGET            mir_tests_unit_cache_${_loader}
        SOURCES           cache.cc
        LIBS              mir
        ENVIRONMENT       ${_testEnvironment}
                          MIR_LEGENDRE_LOADER=${_loader}
                          MIR_MATRIX_LOADER=${_loader}
                          MIR_COEFFICIENT_CACHE=1
                          MIR_MATRIX_CACHE_MEMORY_FOOTPRINT=1
        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
    )
endforeach()

ecbuild_add_test(
    TARGET            mir_tests_unit_legendre_shared_memory_loader
    SOURCES           legendre_shared_memory_loader.cc
    LIBS              mir
    ENVIRONMENT       ${_testEnvironment} MIR_LEGENDRE_LOADER=tmp-shmem
    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)

if(mir_HAVE_METKIT)
    # set(_t metkit_encoding)
    # ecbuild_add_test(TARGET mir_tests_unit_${_t}       SOURCES ${_t}.cc LIBS mir WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ENVIRONMENT ${_testEnvironment})

    set(_t metkit_control)
    ecbuild_add_test(TARGET mir_tests_unit_${_t}       SOURCES ${_t}.cc LIBS mir WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ENVIRONMENT ${_testEnvironment})
    ecbuild_add_test(TARGET mir_tests_unit_${_t}_env_0 SOURCES ${_t}.cc LIBS mir WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ENVIRONMENT ${_testEnvironment} MIR_GRIB_USE_METKIT_ENCODER=0)
    ecbuild_add_test(TARGET mir_tests_unit_${_t}_env_1 SOURCES ${_t}.cc LIBS mir WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ENVIRONMENT ${_testEnvironment} MIR_GRIB_USE_METKIT_ENCODER=1)
endif()

if(ENABLE_BUILD_TOOLS)
    ecbuild_configure_file(grib_fail_decode.sh.in grib_fail_decode.sh)

    foreach(_t
            MIR-637.001.grib2
            MIR-637.002.grib2)
        ecbuild_add_test(
            TARGET            mir_tests_unit_grib_fail_decode_${_t}
            COMMAND           ${CMAKE_CURRENT_BINARY_DIR}/grib_fail_decode.sh
            ARGS              --dryrun ${_t}
            ENVIRONMENT       ${_testEnvironment} MIR_GRIB_CHECK_IS_MESSAGE_VALID=1
            WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
            TEST_PROPERTIES   WILL_FAIL TRUE
        )
    endforeach()

    foreach(_t
            gridName=F1280.area=55_65_0_145.grib1
            gridName=F1280.area=55_65_0_145.grib2
            gridName=N320.area=5_75_-50_180.grib2)
        ecbuild_add_test(
            TARGET            mir_tests_unit_grib_decode_${_t}
            COMMAND           mir-get-data
            ARGS              ${_t} --diff-ecc --tolerance-lat=1e-3 --tolerance-lon=1e-3
            ENVIRONMENT       ${_testEnvironment}
            WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
    endforeach()

    if(NOT eccodes_HAVE_AEC)
        set_tests_properties(
	        mir_tests_unit_grib_decode_gridName=F1280.area=55_65_0_145.grib2
            PROPERTIES WILL_FAIL TRUE)
    endif()
endif()
