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
)

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

add_executable(test-predefined-model test-predefined-models.cxx)
target_compile_definitions(test-predefined-model PRIVATE ${MPI_DEFS})
target_link_libraries(test-predefined-model PRIVATE adis adios2::adios2 adis_rapidjson ${MPI_LIBS})
add_test(NAME test-predefined-model-uniform
  COMMAND test-predefined-model
    uniform
    ${CMAKE_CURRENT_SOURCE_DIR}/data
    ${CMAKE_CURRENT_SOURCE_DIR}/adis-schema.json
)
add_test(NAME test-predefined-model-rectilinear
  COMMAND test-predefined-model
    rectilinear
    ${CMAKE_CURRENT_SOURCE_DIR}/data
    ${CMAKE_CURRENT_SOURCE_DIR}/adis-schema.json
)
add_test(NAME test-predefined-model-unstructured
  COMMAND test-predefined-model
    unstructured
    ${CMAKE_CURRENT_SOURCE_DIR}/data
    ${CMAKE_CURRENT_SOURCE_DIR}/adis-schema.json
)
add_test(NAME test-predefined-model-unstructured-single
  COMMAND test-predefined-model
    unstructured_single
    ${CMAKE_CURRENT_SOURCE_DIR}/data
    ${CMAKE_CURRENT_SOURCE_DIR}/adis-schema.json
)
add_test(NAME test-predefined-model-xgc
  COMMAND test-predefined-model
    xgc
    ${CMAKE_CURRENT_SOURCE_DIR}/data
    ${CMAKE_CURRENT_SOURCE_DIR}/adis-schema.json
)

add_executable(validate-schema validate-schema.cxx)
target_link_libraries(validate-schema PRIVATE adis_rapidjson)
add_test(NAME validate-vtk-uns-grid-2
  COMMAND validate-schema
  ${CMAKE_CURRENT_SOURCE_DIR}/adis-schema.json
  ${CMAKE_CURRENT_SOURCE_DIR}/vtk-uns-grid-2.json)
add_test(NAME validate-vtk-uns-grid-3
  COMMAND validate-schema
  ${CMAKE_CURRENT_SOURCE_DIR}/adis-schema.json
  ${CMAKE_CURRENT_SOURCE_DIR}/vtk-uns-grid-3.json)
add_test(NAME validate-vtk-uns-grid-sep
  COMMAND validate-schema
  ${CMAKE_CURRENT_SOURCE_DIR}/adis-schema.json
  ${CMAKE_CURRENT_SOURCE_DIR}/vtk-uns-grid-sep.json)
add_test(NAME validate-cartesian
  COMMAND validate-schema
  ${CMAKE_CURRENT_SOURCE_DIR}/adis-schema.json
  ${CMAKE_CURRENT_SOURCE_DIR}/cartesian.json)
add_test(NAME validate-rectilinear
  COMMAND validate-schema
  ${CMAKE_CURRENT_SOURCE_DIR}/adis-schema.json
  ${CMAKE_CURRENT_SOURCE_DIR}/rectilinear.json)
add_test(NAME validate-structured
  COMMAND validate-schema
  ${CMAKE_CURRENT_SOURCE_DIR}/adis-schema.json
  ${CMAKE_CURRENT_SOURCE_DIR}/structured.json)
add_test(NAME validate-inline
  COMMAND validate-schema
  ${CMAKE_CURRENT_SOURCE_DIR}/adis-schema.json
  ${CMAKE_CURRENT_SOURCE_DIR}/test-inline.json)
