include(FetchContent)

set(GOOGLETEST_FETCHCONTENT_ARGS
  URL https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip
)

if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.24")
  list(APPEND GOOGLETEST_FETCHCONTENT_ARGS DOWNLOAD_EXTRACT_TIMESTAMP TRUE)
endif()

FetchContent_Declare(googletest ${GOOGLETEST_FETCHCONTENT_ARGS})

set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(googletest)

include(GoogleTest)

file(GLOB_RECURSE TEST_SOURCES CONFIGURE_DEPENDS "*.cpp")

set(TEST_RESOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/resources")

add_executable(cbc_test "${TEST_SOURCES}")

target_link_libraries(cbc_test PRIVATE cbc_lib GTest::gtest_main)
target_compile_definitions(cbc_test PRIVATE TEST_RESOURCE_DIR="${TEST_RESOURCE_DIR}")

gtest_discover_tests(cbc_test)