# 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)

add_library(testutils OBJECT util.h TestClient.h)
target_link_libraries(testutils PUBLIC Qt${QT_VERSION_MAJOR}::Test ${QXMPP_TARGET}_internal)

macro(add_simple_test TEST_NAME)
    add_executable(tst_${TEST_NAME} ${TEST_NAME}/tst_${TEST_NAME}.cpp $<TARGET_OBJECTS:testutils> ${ARGN})
    add_test(tst_${TEST_NAME} tst_${TEST_NAME})
    target_link_libraries(tst_${TEST_NAME} Qt${QT_VERSION_MAJOR}::Test ${QXMPP_TARGET}_internal)
    target_compile_definitions(tst_${TEST_NAME} PRIVATE QXMPP_STATIC_DEFINE)

    if(${TEST_NAME} MATCHES "^qxmppomemo")
        target_link_libraries(tst_${TEST_NAME} ${QXMPPOMEMO_TARGET}_internal)
        target_compile_definitions(tst_${TEST_NAME} PRIVATE QXMPPOMEMO_STATIC_DEFINE)
    endif()
endmacro()

add_simple_test(qxmppaccountmigrationmanager)
add_simple_test(qxmppattentionmanager)
add_simple_test(qxmppbitsofbinary)
add_simple_test(qxmppblockingmanager)
add_simple_test(qxmppcallinvitemanager)
add_simple_test(qxmppcarbonmanager)
add_simple_test(qxmppclient)
if(Qt${QT_VERSION_MAJOR}Gui_FOUND)
    target_link_libraries(tst_qxmppclient Qt::Gui)
endif()
add_simple_test(qxmppdataform)
add_simple_test(qxmppdiscoverymanager)
add_simple_test(qxmppentitytimemanager)
add_simple_test(qxmppexternalservicediscoverymanager)
add_simple_test(qxmpphttpuploadmanager qxmpphttpuploadmanager/tst_qxmpphttpuploadmanager.qrc)
add_simple_test(qxmppiceconnection)
add_simple_test(qxmppiq)
add_simple_test(qxmppjingledata)
add_simple_test(qxmppjinglemessageinitiationmanager)
add_simple_test(qxmppmammanager)
add_simple_test(qxmppmessage)
add_simple_test(qxmppmessagereaction)
add_simple_test(qxmppmessagereceiptmanager)
add_simple_test(qxmppmixinvitation)
add_simple_test(qxmppmixiq)
add_simple_test(qxmppmixitems)
add_simple_test(qxmppmixmanager)
add_simple_test(qxmppmovedmanager)
add_simple_test(qxmppmuc)
add_simple_test(qxmpppresence)
add_simple_test(qxmpppubsub)
add_simple_test(qxmpppubsubevent)
add_simple_test(qxmpppubsubforms)
add_simple_test(qxmpppubsubiq)
add_simple_test(qxmpppubsubmanager)
add_simple_test(qxmppregistrationmanager)
add_simple_test(qxmppresultset)
add_simple_test(qxmpprostermanager)
add_simple_test(qxmppsasl)
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(qxmpptransfermanager qxmpptransfermanager/tst_qxmpptransfermanager.qrc)
add_simple_test(qxmpptrustmanager)
add_simple_test(qxmpptrustmessages)
add_simple_test(qxmppuri)
add_simple_test(qxmppuserlocationmanager)
add_simple_test(qxmppusertunemanager)
add_simple_test(qxmpputils qxmpputils/tst_qxmpputils.qrc)
add_simple_test(qxmppvcardmanager)
add_simple_test(qxmppversionmanager)

if(WITH_QCA)
    add_simple_test(qxmppfileencryption)
endif()

if(WITH_GSTREAMER)
    add_simple_test(qxmppcallmanager)
endif()

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