#
# $Id$
# $HeadURL$
# $Author$
#

IF(BUILD_TESTING AND TARGET ddsgen AND TARGET ddsdtc AND TARGET ddsfts AND TARGET ddsQoS)

SET(xml_FILE ddsut.xml)

SET(SRCS_common
  ddsut_export.h
)
# Generates ddsut.idl / ddsut_enums.idl
CODEGEN_IDL_SVC(SRCS_common ${xml_FILE})
# Generate *.cpp/*.hpp from ddsut_enums.idl / ddsut.idl
RTIDDSGEN(SRCS_common ddsut_enums.idl)
RTIDDSGEN(SRCS_common ddsut.idl)
# Generate ddsut_dt[s,c]_types.h, ddsut_ft[s,c]_types.h
CODEGEN_TOPIC_TYPEDEFS(SRCS_common ${xml_FILE})
# generate ddsut_[d|f]tc.h
CODEGEN_CLIENT_TOPICS_IFC(SRCS_common ${xml_FILE})

NGL_ADD_LIBRARY(ALL ddsut_common SHARED ${SRCS_common})
NGL_TARGET_LINK_LIBRARIES(ddsut_common
  PRIVATE
    NGLLogger
  PUBLIC
    LtsUtilsCoreHeaderOnly
    Qt5::Core
    RTI::nddsc
    RTI::nddscore
    RTI::nddscpp2
    ddscore
)
NGL_TARGET_INCLUDE_DIRECTORIES(ddsut_common
  PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}/../
    ${CMAKE_CURRENT_BINARY_DIR}/../
)

# -----------------------------------------------------------------------------------
# Testing DataWriter/DataReader without DTS/DTC
# -----------------------------------------------------------------------------------
SET(SRCS_TEST1
  generic_data_tests.cpp
  generic_data_tests.h
  initialisation.cpp
  initialisation.h
)

# -----------------------------------------------------------------------------------
# Testing DataTopic Functionality (DTS/DTC)
# -----------------------------------------------------------------------------------
SET(SRCS_TEST2
  data_topic_tests_main.cpp
  data_topic_tests_main.h
  data_topic_tests.cpp
  data_topic_tests.h
)

# -----------------------------------------------------------------------------------
# Testing FunctionTopic Functionality (FTS/FTC)
# -----------------------------------------------------------------------------------
SET(SRCS_TEST3
  function_topic_tests.cpp
  function_topic_tests.h
)


# Testing DataWriter/DataReader without DTS/DTC
ADD_EXECUTABLE(ddsGenericDataTests ${SRCS_TEST1})
TARGET_LINK_LIBRARIES(ddsGenericDataTests
  ddsgen
  ddsdtc
  ddsQoS
  nglcoreapplication
  NGLLogger
  ProjectConfig
  Qt5::Core
  Qt5::Test
  ddsut_common
)
ADD_TEST(NAME ddsGenericDataTests COMMAND $<TARGET_FILE:ddsGenericDataTests>)

# Testing DataTopic Functionality (DTS/DTC)
ADD_EXECUTABLE(ddsDataTopicTests ${SRCS_TEST2})
TARGET_LINK_LIBRARIES(ddsDataTopicTests
  nglcoreapplication
  NGLLogger
  RTI::nddscpp2
  ddsgen
  ddsdts
  ddsdtc
  ddsQoS
  ProjectConfig
  Qt5::Core
  Qt5::Test
  ddsut_common
)
ADD_TEST(NAME ddsDataTopicTests COMMAND $<TARGET_FILE:ddsDataTopicTests>)

# Testing FunctionTopic Functionality (FTS/FTC)
ADD_EXECUTABLE(ddsFunctionTopicTests ${SRCS_TEST3})
TARGET_LINK_LIBRARIES(ddsFunctionTopicTests
  ddsgen
  ddsfts
  ddsftc
  ddsQoS
  ddsconnector
  nglcoreapplication
  NGLLogger
  ngltools
  Qt5::Core
  Qt5::Test
  ddsut_common
)
ADD_TEST(NAME ddsFunctionTopicTests COMMAND $<TARGET_FILE:ddsFunctionTopicTests>)

IF(NOT BUILD_RPM)
 NGL_INSTALL(AAR SV TARGETS ddsut_common            DESTINATION bin/test)
 NGL_INSTALL(AAR SV TARGETS ddsGenericDataTests     DESTINATION bin/test)
 NGL_INSTALL(AAR SV TARGETS ddsDataTopicTests       DESTINATION bin/test)
 NGL_INSTALL(AAR SV TARGETS ddsFunctionTopicTests   DESTINATION bin/test)

 NGL_INSTALL(AAR SV FILES log4cxx_ddsUnitTests.props DESTINATION bin/test)
ENDIF()
ENDIF()

