
remove_definitions(-DQT_NO_CAST_FROM_ASCII)

include(ECMMarkAsTest)

find_package(Qt5Test ${REQUIRED_QT_VERSION} CONFIG QUIET)
find_package(Qt5Concurrent ${REQUIRED_QT_VERSION} CONFIG QUIET)

if(NOT Qt5Test_FOUND)
    message(STATUS "Qt5Test not found, autotests will not be built.")
    return()
endif()

if(NOT Qt5Concurrent_FOUND)
    message(STATUS "Qt5Concurrent not found, autotests will not be built.")
    return()
endif()

macro(KCONFIGCORE_UNIT_TESTS)
   foreach(_testname ${ARGN})
      add_executable(${_testname} ${_testname}.cpp) # TODO NOGUI
      add_test(kconfigcore-${_testname} ${_testname})
      target_link_libraries(${_testname} KF5::ConfigCore Qt5::Test Qt5::Concurrent)
      ecm_mark_as_test(${_testname})
   endforeach()
endmacro()

macro(KCONFIGGUI_UNIT_TESTS)
   foreach(_testname ${ARGN})
      add_executable(${_testname} ${_testname}.cpp)
      add_test(kconfiggui-${_testname} ${_testname})
      target_link_libraries(${_testname} KF5::ConfigGui Qt5::Test)
      ecm_mark_as_test(${_testname})
   endforeach()
endmacro()

kconfigcore_unit_tests(
   kconfignokdehometest
   kconfigtest
   kdesktopfiletest
   ksharedconfigtest
   test_kconf_update
)

target_include_directories(test_kconf_update PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../src/kconf_update)

# compile KEntryMap into the test since it's not exported
set(kentrymaptest_SRCS kentrymaptest.cpp ../src/core/kconfigdata.cpp)
add_executable(kentrymaptest ${kentrymaptest_SRCS})
add_test(kconfigcore-kentrymaptest kentrymaptest)
target_link_libraries(kentrymaptest KF5::ConfigCore Qt5::Test)
ecm_mark_as_test(kentrymaptest)

# compile KConfigUtils into the test since it's not exported
set(test_kconfigutils_SRCS test_kconfigutils ../src/kconf_update/kconfigutils.cpp)
add_executable(test_kconfigutils ${test_kconfigutils_SRCS})
add_test(kconfigcore-test_kconfigutils test_kconfigutils)
target_link_libraries(test_kconfigutils KF5::ConfigCore Qt5::Test)
target_include_directories(test_kconfigutils PRIVATE ../src/kconf_update)
ecm_mark_as_test(test_kconfigutils)

kconfiggui_unit_tests(
   kconfigguitest
   kconfigloadertest
   kconfigskeletontest
   kstandardshortcuttest
)

add_subdirectory(kconfig_compiler)

