# SPDX-FileCopyrightText: 2017 Niels Ole Salscheider <niels_ole@salscheider-online.de>
#
# SPDX-License-Identifier: CC0-1.0

include_directories(.)

find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Test)

# optional QtGui support (for testing header-only usage)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Gui QUIET)

macro(add_simple_test TEST_NAME)
    add_executable(tst_${TEST_NAME} ${TEST_NAME}/tst_${TEST_NAME}.cpp ${ARGN})
    add_test(tst_${TEST_NAME} tst_${TEST_NAME})
    target_link_libraries(tst_${TEST_NAME} Qt${QT_VERSION_MAJOR}::Test ${QXMPP_TARGET})
    if(${TEST_NAME} MATCHES "^qxmppomemo")
        target_link_libraries(tst_${TEST_NAME} ${QXMPPOMEMO_TARGET})
    endif()
endmacro()

include_directories(${PROJECT_SOURCE_DIR}/src/base)
include_directories(${PROJECT_SOURCE_DIR}/src/client)
include_directories(${PROJECT_SOURCE_DIR}/src/omemo)
include_directories(${PROJECT_SOURCE_DIR}/src/server)
include_directories(${PROJECT_BINARY_DIR}/src)
include_directories(${PROJECT_BINARY_DIR}/src/omemo)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
if(BUILD_INTERNAL_TESTS)
    add_definitions(-DBUILD_INTERNAL_TESTS)
endif()

add_simple_test(qxmpparchiveiq)
add_simple_test(qxmppaccountmigrationmanager TestClient.h)
add_simple_test(qxmppatmmanager)
add_simple_test(qxmppattentionmanager)
add_simple_test(qxmppbindiq)
add_simple_test(qxmppbitsofbinary)
add_simple_test(qxmppblockingmanager TestClient.h)
add_simple_test(qxmppcallinvitemanager)
add_simple_test(qxmppcarbonmanager)
add_simple_test(qxmppclient TestClient.h)
if(Qt${QT_VERSION_MAJOR}Gui_FOUND)
    target_link_libraries(tst_qxmppclient Qt::Gui)
endif()
add_simple_test(qxmppdataform)
add_simple_test(qxmppdiscoveryiq)
add_simple_test(qxmppdiscoverymanager TestClient.h)
add_simple_test(qxmppentitytimeiq)
add_simple_test(qxmppentitytimemanager TestClient.h)
add_simple_test(qxmppexternalservicediscoveryiq)
add_simple_test(qxmppexternalservicediscoverymanager TestClient.h)
add_simple_test(qxmpphttpuploadiq)
add_simple_test(qxmppiceconnection)
add_simple_test(qxmppiq)
add_simple_test(qxmppjingledata)
add_simple_test(qxmppjinglemessageinitiationmanager)
add_simple_test(qxmppmammanager TestClient.h)
add_simple_test(qxmppmixinvitation)
add_simple_test(qxmppmixitems)
add_simple_test(qxmppmixmanager TestClient.h)
add_simple_test(qxmppmessage)
add_simple_test(qxmppmessagereaction)
add_simple_test(qxmppmessagereceiptmanager)
add_simple_test(qxmppmixiq)
add_simple_test(qxmppmovedmanager TestClient.h)
add_simple_test(qxmppnonsaslauthiq)
add_simple_test(qxmpppushenableiq)
add_simple_test(qxmpppresence)
add_simple_test(qxmpppubsub)
add_simple_test(qxmpppubsubevent)
add_simple_test(qxmpppubsubforms)
add_simple_test(qxmpppubsubiq)
add_simple_test(qxmpppubsubmanager TestClient.h)
add_simple_test(qxmppregisteriq)
add_simple_test(qxmppregistrationmanager)
add_simple_test(qxmppresultset)
add_simple_test(qxmpprosteriq)
add_simple_test(qxmpprostermanager TestClient.h)
add_simple_test(qxmpprpciq)
add_simple_test(qxmppsceenvelope)
add_simple_test(qxmppserver)
add_simple_test(qxmppsocks)
add_simple_test(qxmppstanza)
add_simple_test(qxmppstream)
add_simple_test(qxmppstreamfeatures)
add_simple_test(qxmppstunmessage)
add_simple_test(qxmpptrustmessages)
add_simple_test(qxmpptrustmemorystorage)
add_simple_test(qxmppuri)
add_simple_test(qxmppuserlocationmanager TestClient.h)
add_simple_test(qxmppusertunemanager TestClient.h)
add_simple_test(qxmppvcardiq)
add_simple_test(qxmppvcardmanager TestClient.h)
add_simple_test(qxmppversioniq)
add_simple_test(qxmppversionmanager TestClient.h)

if(WITH_QCA)
    add_simple_test(qxmppfileencryption)
endif()

if(WITH_GSTREAMER)
    add_simple_test(qxmppcallmanager)
endif()

if(BUILD_OMEMO)
    if(BUILD_INTERNAL_TESTS)
        add_simple_test(qxmppomemodata)
    endif()
    add_simple_test(qxmppomemomemorystorage)

    add_simple_test(qxmppomemomanager)
    target_link_libraries(tst_qxmppomemomanager PkgConfig::OmemoC qca-qt${QT_VERSION_MAJOR})
endif()

if(BUILD_INTERNAL_TESTS)
    add_simple_test(qxmppsasl)
    add_simple_test(qxmppstreaminitiationiq)
endif()

add_subdirectory(qxmpptransfermanager)
add_subdirectory(qxmpputils)
add_subdirectory(qxmpphttpuploadmanager)
