SET(KIT CTKApplication)

SET(KIT_TEST_SRCS)

## Query / Retrieve Testing
if(CTK_APP_ctkDICOMQuery AND CTK_APP_ctkDICOMRetrieve)
  LIST(APPEND KIT_TEST_SRCS
    ctkDICOMApplicationTest1.cpp
    )
endif()

# If there is no tests, exit
LIST(LENGTH KIT_TEST_SRCS KIT_TEST_SRCS_LENGTH)
if(${KIT_TEST_SRCS_LENGTH} EQUAL 0)
  RETURN()
endif()

CREATE_TEST_SOURCELIST(Tests ${KIT}CppTests.cpp
  ${KIT_TEST_SRCS}
  )

SET (TestsToRun ${Tests})
REMOVE (TestsToRun ${KIT}CppTests.cpp)

# Target libraries - See CMake/ctkFunctionGetTargetLibraries.cmake
# The following macro will read the target libraries from the file 'target_libraries.cmake'
ctkFunctionGetTargetLibraries(KIT_target_libraries)

ADD_EXECUTABLE(${KIT}CppTests ${Tests})
TARGET_LINK_LIBRARIES(${KIT}CppTests ${KIT_target_libraries})

SET( KIT_TESTS ${CPP_TEST_PATH}/${KIT}CppTests)

MACRO( SIMPLE_TEST  TESTNAME )
  ADD_TEST( ${TESTNAME} ${KIT_TESTS} ${TESTNAME} )
  SET_PROPERTY(TEST ${TESTNAME} PROPERTY LABELS ${PROJECT_NAME})
ENDMACRO( SIMPLE_TEST  )


## Query / Retrieve Testing
if (CTK_APP_ctkDICOMQuery AND CTK_APP_ctkDICOMRetrieve)

  # create a dcm query/retrieve service config file that points to the build dir
  set (DCMQRSCP_STORE_DIR ${CTK_BINARY_DIR}/Testing/Temporary)
  set (ctkDICOMRetrieve_STORE_DIR ${CTK_BINARY_DIR}/Testing/Temporary/ctkDICOMRetrieveStorage)
  set (DCMQRSCP_CONFIG ${CTK_BINARY_DIR}/Testing/Temporary/dcmqrscp.cfg)
  CONFIGURE_FILE( dcmqrscp.cfg.in ${DCMQRSCP_CONFIG} )

  set(CTK_APPLICATION_RUNTIME_DIRECTORY ${CTK_CMAKE_RUNTIME_OUTPUT_DIRECTORY})
  if(WIN32)
    set(CTK_APPLICATION_RUNTIME_DIRECTORY
          ${CTK_APPLICATION_RUNTIME_DIRECTORY}/${CMAKE_BUILD_TYPE})
  endif(WIN32)

  set(ctkDICOMQuery_EXECUTABLE ${CTK_APPLICATION_RUNTIME_DIRECTORY}/ctkDICOMQuery)
  set(ctkDICOMQuery_DB_FILE ${CTK_BINARY_DIR}/Testing/Temporary/ctkDICOMApplicationTest1.db)
  set(ctkDICOMRetrieve_EXECUTABLE ${CTK_APPLICATION_RUNTIME_DIRECTORY}/ctkDICOMRetrieve)

  #
  # Add Tests
  #

  ADD_TEST( ctkDICOMApplicationTest1 ${KIT_TESTS}
            ctkDICOMApplicationTest1
                 ${DCMTK_DCMQRSCP_EXECUTABLE}
                 ${DCMQRSCP_CONFIG}
                 ${CTKData_DIR}/Data/DICOM/MRHEAD/000055.IMA
                 ${CTKData_DIR}/Data/DICOM/MRHEAD/000056.IMA
                 ${DCMTK_STORESCU_EXECUTABLE}
                 ${ctkDICOMQuery_EXECUTABLE}
                 ${ctkDICOMQuery_DB_FILE}
                 ${ctkDICOMRetrieve_EXECUTABLE}
                 ${ctkDICOMRetrieve_STORE_DIR}
                 )
  SET_PROPERTY(TEST ctkDICOMApplicationTest1 PROPERTY LABELS ${PROJECT_NAME})
endif (CTK_APP_ctkDICOMQuery AND CTK_APP_ctkDICOMRetrieve)
