include(${CMAKE_CURRENT_SOURCE_DIR}/CesLibrary.cmake)
add_sce_ces_library(libSceCesCs)

if(BUILD_TESTING)
    add_test_executable(guest_ces_tests ${LIBS_INCLUDE_DIR}/tests/GuestCes.cpp)
    target_include_directories(guest_ces_tests PRIVATE ${LIBS_INCLUDE_DIR})
    target_link_libraries(guest_ces_tests PRIVATE libSceCesCs)
    add_test(NAME guest_ces COMMAND guest_ces_tests)
    add_test_executable(guest_ces_module_tests ${LIBS_INCLUDE_DIR}/tests/GuestCes.cpp)
    target_include_directories(guest_ces_module_tests PRIVATE ${LIBS_INCLUDE_DIR})
    target_link_libraries(guest_ces_module_tests PRIVATE libSceCesCs-module)
    add_test(NAME guest_ces_module COMMAND guest_ces_module_tests)
    add_test_executable(guest_ces_dbcs_tests ${LIBS_INCLUDE_DIR}/tests/GuestCesDbcs.cpp)
    target_include_directories(guest_ces_dbcs_tests PRIVATE ${LIBS_INCLUDE_DIR})
    target_link_libraries(guest_ces_dbcs_tests PRIVATE libSceCesCs)
    add_test(NAME guest_ces_dbcs COMMAND guest_ces_dbcs_tests)
    add_test_executable(guest_ces_dbcs_module_tests ${LIBS_INCLUDE_DIR}/tests/GuestCesDbcs.cpp)
    target_include_directories(guest_ces_dbcs_module_tests PRIVATE ${LIBS_INCLUDE_DIR})
    target_link_libraries(guest_ces_dbcs_module_tests PRIVATE libSceCesCs-module)
    add_test(NAME guest_ces_dbcs_module COMMAND guest_ces_dbcs_module_tests)
    if(WIN32)
        set_tests_properties(guest_ces guest_ces_module guest_ces_dbcs guest_ces_dbcs_module PROPERTIES ENVIRONMENT_MODIFICATION
            "PATH=path_list_prepend:$<TARGET_FILE_DIR:libSceCesCs>")
    endif()
endif()

if(BUILD_TESTING)
    foreach(variant IN ITEMS unicode unicode_module japanese japanese_module wide wide_module chinese chinese_module mbc mbc_module)
        if(variant MATCHES "^mbc")
            add_test_executable(guest_ces_${variant}_tests ${LIBS_INCLUDE_DIR}/tests/GuestCesMbc.cpp)
        elseif(variant MATCHES "^chinese")
            add_test_executable(guest_ces_${variant}_tests ${LIBS_INCLUDE_DIR}/tests/GuestCesChinese.cpp)
        elseif(variant MATCHES "^wide")
            add_test_executable(guest_ces_${variant}_tests ${LIBS_INCLUDE_DIR}/tests/GuestCesWide.cpp)
        elseif(variant MATCHES "^japanese")
            add_test_executable(guest_ces_${variant}_tests ${LIBS_INCLUDE_DIR}/tests/GuestCesJapanese.cpp)
        else()
            add_test_executable(guest_ces_${variant}_tests ${LIBS_INCLUDE_DIR}/tests/GuestCesUnicode.cpp)
        endif()
        target_include_directories(guest_ces_${variant}_tests PRIVATE ${LIBS_INCLUDE_DIR})
        configure_windows_unwind(guest_ces_${variant}_tests)
        if(variant MATCHES "_module$")
            target_link_libraries(guest_ces_${variant}_tests PRIVATE libSceCesCs-module)
        else()
            target_link_libraries(guest_ces_${variant}_tests PRIVATE libSceCesCs)
        endif()
        add_test(NAME guest_ces_${variant} COMMAND guest_ces_${variant}_tests)
    endforeach()
    if(WIN32)
        set_tests_properties(guest_ces_unicode guest_ces_unicode_module guest_ces_japanese guest_ces_japanese_module guest_ces_wide guest_ces_wide_module guest_ces_chinese guest_ces_chinese_module guest_ces_mbc guest_ces_mbc_module PROPERTIES ENVIRONMENT_MODIFICATION
            "PATH=path_list_prepend:$<TARGET_FILE_DIR:libSceCesCs>")
    endif()
endif()
