add_definitions(${QT4_DEFINITIONS})
add_definitions(-DTESTDATADIR=\"${TESTDATADIR}\")

include_directories(
  ${CMAKE_CURRENT_SOURCE_DIR}
  ${CMAKE_CURRENT_SOURCE_DIR}/../src
  ${CMAKE_CURRENT_BINARY_DIR}
  ${QT4_INCLUDE_DIR}
)

macro(QT4_ADD_SIMPLETEST exe source)
  string(REPLACE "-" "" test_name ${exe})
  set(${test_name}_SOURCES
    ${source}
  )
  poppler_add_test(${exe} BUILD_QT4_TESTS ${${test_name}_SOURCES})
  target_link_libraries(${exe} poppler-qt4)
  if(MSVC)
    target_link_libraries(${exe} poppler ${poppler_LIBS})
  endif(MSVC)
endmacro(QT4_ADD_SIMPLETEST)

macro(QT4_ADD_QTEST exe source)
  if (QT4_QTTEST_FOUND)
    string(REPLACE "-" "" test_name ${exe})
    set(${test_name}_SOURCES
      ${source}
    )
    poppler_add_unittest(${exe} BUILD_QT4_TESTS ${${test_name}_SOURCES})
    qt4_automoc(${${test_name}_SOURCES})
    target_link_libraries(${exe} poppler-qt4 ${QT4_QTTEST_LIBRARY})
    if(MSVC)
      target_link_libraries(${exe} poppler ${poppler_LIBS})
    endif(MSVC)
  endif (QT4_QTTEST_FOUND)
endmacro(QT4_ADD_QTEST)


qt4_add_simpletest(test-poppler-qt4 test-poppler-qt4.cpp)
qt4_add_simpletest(test-password-qt4 test-password-qt4.cpp)
qt4_add_simpletest(test-render-to-file test-render-to-file.cpp)
qt4_add_simpletest(poppler-forms poppler-forms.cpp)
qt4_add_simpletest(poppler-fonts poppler-fonts.cpp)
qt4_add_simpletest(poppler_attachments poppler-attachments.cpp)
qt4_add_simpletest(stress-poppler-qt4 stress-poppler-qt4.cpp)
qt4_add_simpletest(stress-poppler-dir stress-poppler-dir.cpp)
qt4_add_simpletest(stress-threads-qt4 stress-threads-qt4.cpp)
qt4_add_simpletest(poppler-texts poppler-texts.cpp)

qt4_add_qtest(check_attachments check_attachments.cpp)
qt4_add_qtest(check_dateConversion check_dateConversion.cpp)
qt4_add_qtest(check_fonts check_fonts.cpp)
qt4_add_qtest(check_links check_links.cpp)
qt4_add_qtest(check_metadata check_metadata.cpp)
qt4_add_qtest(check_optcontent check_optcontent.cpp)
qt4_add_qtest(check_pagelayout check_pagelayout.cpp)
qt4_add_qtest(check_pagemode check_pagemode.cpp)
qt4_add_qtest(check_password check_password.cpp)
qt4_add_qtest(check_permissions check_permissions.cpp)
qt4_add_qtest(check_search check_search.cpp)
qt4_add_qtest(check_actualtext check_actualtext.cpp)
qt4_add_qtest(check_lexer check_lexer.cpp)
qt4_add_qtest(check_pagelabelinfo check_pagelabelinfo.cpp)
qt4_add_qtest(check_goostring check_goostring.cpp)
if (NOT WIN32)
  qt4_add_qtest(check_strings check_strings.cpp)
endif (NOT WIN32)
