find_package(GTest REQUIRED)
find_package(OpenSSL REQUIRED)
find_package(Threads REQUIRED)

enable_testing()

add_executable(SimpleTest
    simple_test.cpp
    fake_server.cpp
    fake_variable.cpp
)
target_compile_features(SimpleTest PRIVATE cxx_std_17)
if (HAVE_XML_SetReparseDeferralEnabled)
    target_compile_definitions(SimpleTest PRIVATE HAVE_XML_SetReparseDeferralEnabled)
endif()


target_link_libraries(SimpleTest
    PUBLIC ${LIBNAME}
    PUBLIC ${GTEST_BOTH_LIBRARIES}
    PUBLIC ${EXPAT_LIBRARIES}
    PUBLIC ${OPENSSL_CRYPTO_LIBRARY}
    PUBLIC Threads::Threads
)

target_include_directories(SimpleTest PUBLIC
    ${OPENSSL_INCLUDE_DIR}
    ${EXPAT_INCLUDE_DIR}
    ${GTEST_INCLUDE_DIRS}
)

add_executable(Internals
    internals.cpp
    ../src/msrproto/DataConverter.cpp
    ../src/IOLayer.cpp
    ../src/Variable.cpp
    ../src/Selector.cpp
)
target_compile_features(Internals PRIVATE cxx_std_17)

target_include_directories(Internals
    PUBLIC ../src
    PUBLIC ../include
    PUBLIC ${CMAKE_BINARY_DIR}/src
)
target_link_libraries(Internals
    PUBLIC ${GTEST_BOTH_LIBRARIES}
)


add_test(NAME SimpleTest COMMAND SimpleTest --gtest_output=xml:simple_test.xml)
add_test(NAME Internals COMMAND Internals --gtest_output=xml:internals.xml)
