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

include_directories(.)

find_package(Qt6 REQUIRED COMPONENTS Test)

# optional QtGui support (for testing header-only usage)
find_package(Qt6 COMPONENTS Gui QUIET)

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

macro(add_simple_test TEST_NAME)
    add_executable(tst_${TEST_NAME} tst_${TEST_NAME}.cpp $<TARGET_OBJECTS:testutils> ${ARGN})
    add_test(tst_${TEST_NAME} tst_${TEST_NAME})
    target_link_libraries(tst_${TEST_NAME} Qt6::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(Qt6Gui_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 resources/base.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(QXmppRosterMemoryStorage)
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 resources/base.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 resources/extended.qrc)
add_simple_test(QXmppVCardManager)
add_simple_test(QXmppVersionManager)
add_simple_test(QXmppXmlFormatter)

if(WITH_ENCRYPTION)
    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()
