cmake_minimum_required(VERSION 3.20)
project(Wr64AchievementsServiceTests LANGUAGES C CXX)
get_filename_component(WR64_ROOT "../.." ABSOLUTE BASE_DIR "${CMAKE_CURRENT_LIST_DIR}")
add_subdirectory("${WR64_ROOT}/lib/rcheevos" rcheevos)
add_executable(wr64_achievements_service_test service_test.cpp)
target_compile_features(wr64_achievements_service_test PRIVATE cxx_std_20)
target_include_directories(wr64_achievements_service_test PRIVATE "${WR64_ROOT}/include")
target_link_libraries(wr64_achievements_service_test PRIVATE wr64_rcheevos)
if(MSVC)
    target_compile_options(wr64_achievements_service_test PRIVATE /utf-8)
endif()
enable_testing()
add_test(NAME achievements_service COMMAND wr64_achievements_service_test)
set_tests_properties(achievements_service PROPERTIES TIMEOUT 15)
foreach(case IN ITEMS last-award-stop last-award-logout old-account-retry retired-retry-failure shutdown-drain invalid-token expired-token transient-token queued-logout-shutdown)
    add_test(NAME "achievements_service_${case}" COMMAND wr64_achievements_service_test --lifecycle "${case}")
    set_tests_properties("achievements_service_${case}" PROPERTIES TIMEOUT 15)
endforeach()
foreach(case IN ITEMS prelaunch refresh logout account-swap live-unlock)
    add_test(NAME "achievements_catalog_${case}" COMMAND wr64_achievements_service_test --catalog "${case}")
    set_tests_properties("achievements_catalog_${case}" PROPERTIES TIMEOUT 15)
endforeach()
