# Copyright (c) 2025 The YAC Authors
#
# SPDX-License-Identifier: BSD-3-Clause

set(YAC_TEST_DEFAULT_LABELS "mci")
set(YAC_TEST_DEFAULT_LINK yac_mci yac_utils)

yac_add_test(NAME "test_mpi_abort_c")
yac_add_test(NAME "test_abort" MPI_PROCS 2)

yac_add_test(NAME "test_component_config" MPI_PROCS 8)
yac_add_test(NAME "test_def_comps")
yac_add_test(NAME "test_def_datetime")
yac_add_test(NAME "test_def_grid_dble")
yac_add_test(NAME "test_def_grid_real")
yac_add_test(NAME "test_def_mask")
yac_add_test(NAME "test_def_points_dble")
yac_add_test(NAME "test_def_points_real")
yac_add_test(
  NAME "test_dummy_coupling2_c"
  MPI_PROCS 3
  LINK yaxt::yaxt_c
)
yac_add_test(
  NAME "test_dummy_coupling3_c"
  MPI_PROCS 10
  LINK yaxt::yaxt_c
)
yac_add_test(
  NAME "test_dummy_coupling3_dble"
  LINK MPI::MPI_Fortran
  MPI_PROCS 10
)
yac_add_test(
  NAME "test_dummy_coupling3_real"
  LINK MPI::MPI_Fortran
  MPI_PROCS 10
)
yac_add_test(
  NAME "test_dummy_coupling4_c"
  MPI_PROCS 2
  LINK yaxt::yaxt_c
)
yac_add_test(NAME "test_dummy_coupling5_c" MPI_PROCS 3)
yac_add_test(
  NAME "test_dummy_coupling5_dble"
  LINK MPI::MPI_Fortran
  MPI_PROCS 3
)
yac_add_test(
  NAME "test_dummy_coupling5_real"
  LINK MPI::MPI_Fortran
  MPI_PROCS 3
)
yac_add_test(
  NAME "test_dummy_coupling6_c"
  MPI_PROCS 3
  LINK yaxt::yaxt_c
)
yac_add_test(
  NAME "test_dummy_coupling6_dble"
  LINK MPI::MPI_Fortran
  MPI_PROCS 3
)
yac_add_test(
  NAME "test_dummy_coupling6_real"
  LINK MPI::MPI_Fortran
  MPI_PROCS 3
)
yac_add_test(
  NAME "test_dummy_coupling7_c"
  MPI_PROCS 3
  LINK yaxt::yaxt_c
)
yac_add_test(
  NAME "test_dummy_coupling7_dble"
  LINK MPI::MPI_Fortran
  MPI_PROCS 3
)
yac_add_test(
  NAME "test_dummy_coupling7_real"
  LINK MPI::MPI_Fortran
  MPI_PROCS 3
)
yac_add_test(NAME "test_dummy_coupling8_c" MPI_PROCS 2)
yac_add_test(NAME "test_dummy_coupling9_c" MPI_PROCS 2)
yac_add_test(
  NAME "test_dummy_coupling9"
  LINK MPI::MPI_Fortran
  MPI_PROCS 3
)
yac_add_test(NAME "test_dummy_coupling10_c" MPI_PROCS 4)
yac_add_test(
  NAME "test_dummy_coupling_c"
  MPI_PROCS 3
  LINK yaxt::yaxt_c
)
yac_add_test(
  NAME "test_dummy_coupling_dble"
  LINK MPI::MPI_Fortran
  MPI_PROCS 3
)
yac_add_test(
  NAME "test_dummy_coupling_real"
  LINK MPI::MPI_Fortran
  MPI_PROCS 3
)
yac_add_test(NAME "test_dummy_coupling_raw_c" MPI_PROCS 4)
yac_add_test(
  NAME "test_dummy_coupling_raw_dble"
  LINK MPI::MPI_Fortran
  MPI_PROCS 4
)
yac_add_test(
  NAME "test_dummy_coupling_raw_real"
  LINK MPI::MPI_Fortran
  MPI_PROCS 4
)
yac_add_test(NAME "test_dynamic_config_c" MPI_PROCS 4)
yac_add_test(
  NAME "test_dynamic_config"
  LINK MPI::MPI_Fortran
  MPI_PROCS 4
)
yac_add_test(NAME "test_events" LINK mtime::mtime_c)
yac_add_test(
  NAME "test_init_comm_final"
  LINK MPI::MPI_Fortran
  MPI_PROCS 6
)
yac_add_test(NAME "test_init_final" LINK MPI::MPI_Fortran)
yac_add_test(
  NAME "test_instance_parallel2"
  LINK mtime::mtime_c
  MPI_PROCS 9
)
yac_add_test(
  NAME "test_instance_parallel3"
  LINK yaxt::yaxt_c mtime::mtime_c
  MPI_PROCS 9
)
yac_add_test(
  NAME "test_instance_parallel4"
  MPI_PROCS 9
  LINK yaxt::yaxt_c
)
yac_add_test(
  NAME "test_instance_parallel5"
  LINK mtime::mtime_c
  MPI_PROCS 4
)
yac_add_test(
  NAME "test_mpi_handshake_c"
  MPI_PROCS 6
  LINK yaxt::yaxt_c
)
yac_add_test(
  NAME "test_mpi_handshake"
  LINK MPI::MPI_Fortran
  MPI_PROCS 6
)
yac_add_test(
  NAME "test_query_routines_c"
  MPI_PROCS 13
  LINK yaxt::yaxt_c
)
yac_add_test(
  NAME "test_query_routines"
  LINK MPI::MPI_Fortran
  MPI_PROCS 13
)
yac_add_test(NAME "test_restart2" MPI_PROCS 15)
yac_add_test(NAME "test_restart_c" MPI_PROCS 3)
yac_add_test(
  NAME "test_restart_dble"
  LINK MPI::MPI_Fortran
  MPI_PROCS 3
)
yac_add_test(NAME "test_version")

include(CheckIncludeFile)
check_include_file("pthread.h" YAC_HAVE_PTHREAD)
if(YAC_HAVE_PTHREAD)
  yac_add_test(NAME "test_multithreading" MPI_PROCS 2)
  set(TEST_PTHREAD_FALSE "#")
endif()

yac_add_test(
  NAME "test_instance_parallel1"
  LINK yaxt::yaxt_c tests_file_common mtime::mtime_c
  MPI_PROCS 3
)

add_subdirectory(couple_config)
