project(kca-tests)

set(test_SRCS
  authority_test.cpp
 )

IF(WITH_SQLite3)
  set(test_SRCS ${test_SRCS} sqlite_db_test.cpp)
  set(backend_includes ${backend_includes} ${SQLITE3_INCLUDES})
  set(backend_libraries ${backend_libraries} ${SQLITE3_LIBRARIES})
ENDIF(WITH_SQLite3)

enable_testing()

include_directories(
  ${backend_includes}
  ${KDE4_INCLUDES} ${QT_INCLUDES}
 )

FOREACH(it ${test_SRCS})
  GET_FILENAME_COMPONENT(_abs_FILE ${it} ABSOLUTE)
  GET_FILENAME_COMPONENT(test ${it} NAME_WE)

  qt4_make_output_file(${_abs_FILE} "" moc outfile)
  qt4_generate_moc(${_abs_FILE} ${outfile})
  set(it_SRCS ${it} ${outfile})

  IF(EXISTS ${_abs_FILE})
    GET_FILENAME_COMPONENT(_abs_PATH ${_abs_FILE} PATH)
    FILE(READ ${_abs_FILE} _contents)

    STRING(REGEX MATCHALL "# *include +[\"<]\\.\\./[^ ]+\\.h[\">]" _match "${_contents}")
    IF(_match)
      FOREACH(_current_H_INC ${_match})
        STRING(REGEX MATCH "[^ <\"]+\\.h" _current_H "${_current_H_INC}")
        GET_FILENAME_COMPONENT(_basename ${_current_H} NAME_WE)
        SET(_unit_SRC ${_abs_PATH}/../${_basename}.cpp)
        IF(EXISTS ${_unit_SRC})
          FILE(READ ${_unit_SRC} _unit_contents)
          STRING(REGEX MATCH "# *include +[\"<][^ ]+\\.moc[\">]" _unit_moc "${_unit_contents}")
          IF(_unit_moc)
            qt4_make_output_file(${_unit_SRC} "" moc _current_MOC)
            STRING(REPLACE "__/" "" _current_MOC ${_current_MOC})
            qt4_generate_moc(${_abs_PATH}/../${_basename}.h ${_current_MOC})
            SET(it_SRCS ${it_SRCS} ${_unit_SRC} ${_current_MOC})
          ENDIF(_unit_moc)
        ENDIF(EXISTS ${_unit_SRC})
      ENDFOREACH(_current_H_INC)
    ENDIF(_match)
  ENDIF(EXISTS ${_abs_FILE})

  add_executable(${test} ${it_SRCS})
  add_test(kca-tests_${test} ${test})
  target_link_libraries(${test}
    kca_ossl-1
    kca_backends
    ${backend_libraries}
    ${KDE4_KDECORE_LIBS}
    ${KDE4_KDEUI_LIBS}
    ${QT_QTTEST_LIBRARY}
  )
ENDFOREACH(it)

#kde4_add_unit_test(kca-tests
#  TESTNAME kca-tests_full
#  ${test_SRCS}
#)
