if(ADIOS2_HAVE_MPI)
  set(MPI_DEFS USE_MPI)
  set(MPI_LIBS MPI::MPI_CXX)
endif()

add_executable(test-basic test-basic.cxx)
target_compile_definitions(test-basic PRIVATE ${MPI_DEFS})
target_link_libraries(test-basic PRIVATE adis adios2::adios2 ${MPI_LIBS})
add_test(NAME test-basic
  COMMAND test-basic
    ${CMAKE_CURRENT_SOURCE_DIR}/vtk-uns-grid-2.json
    ${CMAKE_CURRENT_SOURCE_DIR}/data
)

add_executable(test-explicit test-explicit.cxx)
target_compile_definitions(test-explicit PRIVATE ${MPI_DEFS})
target_link_libraries(test-explicit PRIVATE adis adios2::adios2 ${MPI_LIBS})
add_test(NAME test-explicit
  COMMAND test-explicit
    ${CMAKE_CURRENT_SOURCE_DIR}/vtk-uns-grid-3.json
    ${CMAKE_CURRENT_SOURCE_DIR}/data
)

add_executable(test-streaming test-streaming.cxx)
target_compile_definitions(test-streaming PRIVATE ${MPI_DEFS})
target_link_libraries(test-streaming PRIVATE adis adios2::adios2 ${MPI_LIBS})
add_test(NAME test-streaming
  COMMAND test-streaming
    ${CMAKE_CURRENT_SOURCE_DIR}/vtk-uns-grid-2.json
    ${CMAKE_CURRENT_SOURCE_DIR}/data
)

add_executable(test-streaming-separate-sources
  test-streaming-separate-sources.cxx
)
target_compile_definitions(test-streaming-separate-sources PRIVATE ${MPI_DEFS})
target_link_libraries(test-streaming-separate-sources
  PRIVATE adis adios2::adios2 ${MPI_LIBS}
)
add_test(NAME test-streaming-separate-sources
  COMMAND test-streaming-separate-sources
    ${CMAKE_CURRENT_SOURCE_DIR}/vtk-uns-grid-sep.json
    ${CMAKE_CURRENT_SOURCE_DIR}/data/
)

add_executable(test-time test-time.cxx)
target_compile_definitions(test-time PRIVATE ${MPI_DEFS})
target_link_libraries(test-time PRIVATE adis adios2::adios2 ${MPI_LIBS})
add_test(NAME test-time
  COMMAND test-time
    ${CMAKE_CURRENT_SOURCE_DIR}/vtk-uns-grid-2.json
    ${CMAKE_CURRENT_SOURCE_DIR}/data
)

add_executable(test-cartesian test-cartesian.cxx)
target_compile_definitions(test-cartesian PRIVATE ${MPI_DEFS})
target_link_libraries(test-cartesian PRIVATE adis adios2::adios2 ${MPI_LIBS})
add_test(NAME test-cartesian
  COMMAND test-cartesian
    ${CMAKE_CURRENT_SOURCE_DIR}/cartesian.json
    ${CMAKE_CURRENT_SOURCE_DIR}/data
)

add_executable(test-structured test-structured.cxx)
target_compile_definitions(test-structured PRIVATE ${MPI_DEFS})
target_link_libraries(test-structured PRIVATE adis adios2::adios2 ${MPI_LIBS})
add_test(NAME test-structured
  COMMAND test-structured
    ${CMAKE_CURRENT_SOURCE_DIR}/structured.json
    ${CMAKE_CURRENT_SOURCE_DIR}/data
)

add_executable(test-rectilinear test-rectilinear.cxx)
target_compile_definitions(test-rectilinear PRIVATE ${MPI_DEFS})
target_link_libraries(test-rectilinear PRIVATE adis adios2::adios2 ${MPI_LIBS})
add_test(NAME test-rectilinear
  COMMAND test-rectilinear
    ${CMAKE_CURRENT_SOURCE_DIR}/rectilinear.json
    ${CMAKE_CURRENT_SOURCE_DIR}/data
)

add_executable(test-inline test-inline.cxx)
target_compile_definitions(test-inline PRIVATE ${MPI_DEFS})
target_link_libraries(test-inline PRIVATE adis adios2::adios2 ${MPI_LIBS})
add_test(NAME test-inline
  COMMAND test-inline
    ${CMAKE_CURRENT_SOURCE_DIR}/test-inline.json
)
