# Description: Build configuration for the Unit tests of the GeoDMA Feature Extraction Module
#
#  Author: Raian Vargas Maretto <raian@dpi.inpe.br>
#          Thales Sehn Korting <tkorting@dpi.inpe.br>
#          Emiliano Ferreira Castejon <castejon@dpi.inpe.br>
#

# Includes
include_directories(${Boost_INCLUDE_DIRS})
include_directories(${terralib_INCLUDE_DIRS})
#include_directories(${terralib_DIR})
include_directories(${GTEST_INCLUDE_DIR})
include_directories(${GMOCK_INCLUDE_DIR})

include_directories(${GEODMA_SRC_DIR})

# Source files
set(GEODMA_UNITTEST_ALL_SRCS)
set(GEODMA_UNITTEST_LIBS)

file(GLOB GEODMA_UNITTEST_MAIN_SRCS ${GEODMA_TESTS_DIR}/unittest/*.cpp)
# Creating source groups for IDEs
source_group("Source Files" FILES ${GEODMA_UNITTEST_MAIN_SRCS})
list(APPEND GEODMA_UNITTEST_ALL_SRCS ${GEODMA_UNITTEST_MAIN_SRCS})


if(GEODMA_MOD_COMMON_ENABLED)
  #include_directories(${GEODMA_SRC_DIR}/geodmalib/common)
  file(GLOB GEODMA_UNITTEST_COMMON_SRCS ${GEODMA_TESTS_DIR}/unittest/common/*.cpp)
  list(APPEND GEODMA_UNITTEST_ALL_SRCS ${GEODMA_UNITTEST_COMMON_SRCS})
  # Creating source group for IDEs
  source_group("Source Files\\common"  FILES ${GEODMA_UNITTEST_COMMON_SRCS})

  list(APPEND GEODMA_UNITTEST_LIBS geodma_mod_common)
endif()

if(GEODMA_MOD_FTE_ENABLED)
    #include_directories(${GEODMA_SRC_DIR}/geodmalib/featureextraction)
    file(GLOB GEODMA_UNITTEST_FTE_SRCS ${GEODMA_TESTS_DIR}/unittest/featureextraction/*.cpp)
    list(APPEND GEODMA_UNITTEST_ALL_SRCS ${GEODMA_UNITTEST_FTE_SRCS})
    # Creating source group for IDEs
    source_group("Source Files\\featureextraction"  FILES ${GEODMA_UNITTEST_FTE_SRCS})

    list(APPEND GEODMA_UNITTEST_LIBS geodma_mod_featextraction)
endif()

if(GEODMA_MOD_CLASSIFICATION_ENABLED)
    #include_directories(${GEODMA_SRC_DIR}/geodmalib/classification)
    file(GLOB GEODMA_UNITTEST_CLFC_SRCS ${GEODMA_TESTS_DIR}/unittest/classification/*.cpp)
    file(GLOB GEODMA_UNITTEST_CLFC_DCTREE_SRCS ${GEODMA_TESTS_DIR}/unittest/classification/decision_trees/*.cpp)
    list(APPEND GEODMA_UNITTEST_ALL_SRCS ${GEODMA_UNITTEST_CLFC_SRCS} ${GEODMA_UNITTEST_CLFC_DCTREE_SRCS})
    # Creating source group for IDEs
    source_group("Source Files\\classification"  FILES ${GEODMA_UNITTEST_CLFC_SRCS})
    source_group("Source Files\\classification\\decision_trees"  FILES ${GEODMA_UNITTEST_CLFC_DCTREE_SRCS})

    list(APPEND GEODMA_UNITTEST_LIBS geodma_mod_classification)
endif()

# Configuring unittests for Data Manager Module
if(GEODMA_MOD_DM_ENABLED)
    #include_directories(${GEODMA_SRC_DIR}/geodmalib/datamanager)
    file(GLOB GEODMA_UNITTEST_DM_SRCS ${GEODMA_TESTS_DIR}/unittest/datamanager/*.cpp)
    list(APPEND GEODMA_UNITTEST_ALL_SRCS ${GEODMA_UNITTEST_DM_SRCS})
    # Creating source group for IDEs
    source_group("Source Files\\datamanager"  FILES ${GEODMA_UNITTEST_DM_SRCS})

    list(APPEND GEODMA_UNITTEST_LIBS geodma_mod_datamanager)
endif()

# Task Processing Module
if(GEODMA_MOD_TP_ENABLED)
    #include_directories(${GEODMA_SRC_DIR}/geodmalib/taskprocessing)
    file(GLOB GEODMA_UNITTEST_TASKPROCESSING_SRCS ${GEODMA_TESTS_DIR}/unittest/taskprocessing/*.cpp)
    list(APPEND GEODMA_UNITTEST_ALL_SRCS ${GEODMA_UNITTEST_TASKPROCESSING_SRCS})
    # Creating source group for IDEs
    source_group("Source Files\\taskprocessing"  FILES ${GEODMA_UNITTEST_TASKPROCESSING_SRCS})

    list(APPEND GEODMA_UNITTEST_LIBS geodma_mod_taskprocessing)
endif()

# Semantic Analysis Module
if(GEODMA_MOD_SA_ENABLED)
    file(GLOB GEODMA_UNITTEST_SEMANTICANALYSIS_SRCS ${GEODMA_TESTS_DIR}/unittest/semanticanalysis/*.cpp)
    list(APPEND GEODMA_UNITTEST_ALL_SRCS ${GEODMA_UNITTEST_SEMANTICANALYSIS_SRCS})
    # Creating source group for IDEs
    source_group("Source Files\\semanticanalysis"  FILES ${GEODMA_UNITTEST_SEMANTICANALYSIS_SRCS})

    list(APPEND GEODMA_UNITTEST_LIBS geodma_mod_semanticanalysis)
endif()

# Gui Components Module
if(GEODMA_MOD_GUICMP_ENABLED)
    file(GLOB GEODMA_UNITTEST_GUICMP_SRCS ${GEODMA_TESTS_DIR}/unittest/guicomponents/*.cpp)
    file(GLOB GEODMA_UNITTEST_GUICMP_DT_SRCS ${GEODMA_TESTS_DIR}/unittest/guicomponents/decision_trees/*.cpp)
    file(GLOB GEODMA_UNITTEST_GUICMP_KM_SRCS ${GEODMA_TESTS_DIR}/unittest/guicomponents/kmeans/*.cpp)
    list(APPEND GEODMA_UNITTEST_ALL_SRCS ${GEODMA_UNITTEST_GUICMP_SRCS} ${GEODMA_UNITTEST_GUICMP_DT_SRCS} ${GEODMA_UNITTEST_GUICMP_KM_SRCS})
    # Creating source group for IDEs
    source_group("Source Files\\guicomponents"  FILES ${GEODMA_UNITTEST_GUICMP_SRCS})
    source_group("Source Files\\guicomponents\\decision_trees"  FILES ${GEODMA_UNITTEST_GUICMP_DT_SRCS})
    source_group("Source Files\\guicomponents\\kmeans"  FILES ${GEODMA_UNITTEST_GUICMP_KM_SRCS})

    list(APPEND GEODMA_UNITTEST_LIBS geodma_mod_guicomponents)
endif()

# Setting Dependencies
set(GEODMA_UNITTEST_LIBS_DEPENDENCIES ${GEODMA_UNITTEST_LIBS}
                                      ${GTEST_BOTH_LIBRARIES}
                                      ${GMOCK_BOTH_LIBRARIES}
                                      # ${Boost_SYSTEM_LIBRARY}
                                      # ${TERRALIB_COMMON_LIBRARY}
                                      # ${TERRALIB_RP_LIBRARY}
                                      # ${TERRALIB_GEOMETRY_LIBRARY}
                                      # ${TERRALIB_DATAACCESS_LIBRARY}
                                      # ${TERRALIB_STAT_CORE_LIBRARY}
)



add_executable(geodma_unittest ${GEODMA_UNITTEST_ALL_SRCS})

target_link_libraries(geodma_unittest ${GEODMA_UNITTEST_LIBS_DEPENDENCIES})


if(GEODMA_SOURCE_VERIFY_ENABLED)
    add_style_check_target(geodma_unittest "${GEODMA_UNITTEST_GUICMP_SRCS}${GEODMA_UNITTEST_SEMANTICANALYSIS_SRCS};${GEODMA_UNITTEST_TASKPROCESSING_SRCS};${GEODMA_UNITTEST_FTE_SRCS};${GEODMA_UNITTEST_DM_SRCS};${GEODMA_UNITTEST_COMMON_SRCS};${GEODMA_UNITTEST_MAIN_SRCS};${GEODMA_UNITTEST_GUICMP_DT_SRCS};${GEODMA_UNITTEST_CLFC_SRCS};${GEODMA_UNITTEST_CLFC_DCTREE_SRCS};${GEODMA_UNITTEST_GUICMP_KM_SRCS}")
endif()
