include(FetchContent)

# システムに GoogleTest があればそれを使い、無ければ取得する（オフライン環境と CI の両対応）
find_package(GTest QUIET)
if(NOT GTest_FOUND)
  FetchContent_Declare(googletest
    GIT_REPOSITORY https://github.com/google/googletest.git
    GIT_TAG v1.15.2
    GIT_SHALLOW TRUE
  )
  set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
  set(INSTALL_GTEST OFF CACHE BOOL "" FORCE)
  FetchContent_MakeAvailable(googletest)
endif()

add_executable(gr_tests
  smoke_test.cpp
  ndarray_test.cpp
  nash_solver_test.cpp
  action_test.cpp
  nash_equilibrium_test.cpp
  bayesian_test.cpp
  golden_test.cpp
)

target_link_libraries(gr_tests PRIVATE game_resolver::game_resolver GTest::gtest_main)
target_include_directories(gr_tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
target_compile_definitions(gr_tests PRIVATE
  GR_GOLDEN_DIR="${CMAKE_CURRENT_SOURCE_DIR}/golden")

if(NOT MSVC)
  target_compile_options(gr_tests PRIVATE -Wall -Wextra -Wpedantic)
  if(GAME_RESOLVER_WERROR)
    target_compile_options(gr_tests PRIVATE -Werror)
  endif()
endif()

include(GoogleTest)
gtest_discover_tests(gr_tests)
