# TYPICAL_TEST_SOURCES      : all *.cc files of typical test
# TYPICAL_TEST_DEFINITIONS  : compile definition of typical test
# TYPICAL_TEST_INC_DIRS     : include directories of typical test
# TYPICAL_TEST_LINK_LIBS    : link libraries of typical test
get_target_property(TYPICAL_TEST_SOURCES ${PROJECT_NAME} SOURCES)
list(FILTER TYPICAL_TEST_SOURCES EXCLUDE REGEX ".*main\.cc")
list(TRANSFORM TYPICAL_TEST_SOURCES PREPEND ${PROJECT_SOURCE_DIR}/shell/)
list(APPEND TYPICAL_TEST_SOURCES ${PROJECT_SOURCE_DIR}/test/unit_test/unit_test_utils/unit_test_utils.cc)

# If TYPICAL_TEST_DEFINITIONS is set to the same as the homescreen build, it will change depending on the cmake arguments.
# When tweaking TYPICAL_TEST_DEFINITIONS in CMakeLists.txt for each test case, it is better to always set TYPICAL_TEST_DEFINITIONS the same.
# Therefore, TYPICAL_TEST_DEFINITIONS is set one by one without including options.cmake and plugins.cmake.
list(APPEND TYPICAL_TEST_DEFINITIONS ENABLE_XDG_CLIENT)
list(APPEND TYPICAL_TEST_DEFINITIONS BUILD_BACKEND_HEADLESS_EGL)
list(APPEND TYPICAL_TEST_DEFINITIONS ENABLE_EGL)
list(APPEND TYPICAL_TEST_DEFINITIONS BUILD_EXAMPLES)
list(APPEND TYPICAL_TEST_DEFINITIONS HAVE_STRCHRNUL)
list(APPEND TYPICAL_TEST_DEFINITIONS EGL_NO_X11)
list(APPEND TYPICAL_TEST_DEFINITIONS MESA_EGL_NO_X11_HEADERS)
list(APPEND TYPICAL_TEST_DEFINITIONS HAVE_MEMFD_CREATE)
list(APPEND TYPICAL_TEST_DEFINITIONS PATH_PREFIX="${CMAKE_INSTALL_PREFIX}")
list(APPEND TYPICAL_TEST_DEFINITIONS EXE_OUTPUT_NAME="${EXE_OUTPUT_NAME}")
list(APPEND TYPICAL_TEST_DEFINITIONS WL_EGL_PLATFORM)
list(APPEND TYPICAL_TEST_DEFINITIONS FILAMENT_SUPPORTS_WAYLAND)
list(APPEND TYPICAL_TEST_DEFINITIONS ASIO_STANDALONE)
list(APPEND TYPICAL_TEST_DEFINITIONS ASIO_HEADER_ONLY)
list(APPEND TYPICAL_TEST_DEFINITIONS ASIO_NO_TYPEID)
list(APPEND TYPICAL_TEST_DEFINITIONS ASIO_DISABLE_HANDLER_TYPE_REQUIREMENTS)
list(APPEND TYPICAL_TEST_DEFINITIONS ASIO_NO_DEPRECATED)

list(APPEND TYPICAL_TEST_DEFINITIONS UNIT_TEST)

list(APPEND TYPICAL_TEST_DEFINITIONS TEST_APP_BUNDLE_PATH="${UNIT_TEST_APP_BUNDLE}")
list(APPEND TYPICAL_TEST_DEFINITIONS GOLDEN_IMAGE_PATH="${CMAKE_BINARY_DIR}/test/unit_test/test_images_golden/")
list(APPEND TYPICAL_TEST_DEFINITIONS TEST_IMAGE_PATH="${CMAKE_BINARY_DIR}/test/unit_test/test_images/")

include (TestBigEndian)
TEST_BIG_ENDIAN(IS_BIG_ENDIAN)
list(APPEND TYPICAL_TEST_DEFINITIONS IS_ARCH_BIG_ENDIAN=${IS_BIG_ENDIAN})

get_target_property(TYPICAL_TEST_INC_DIRS ${PROJECT_NAME} INCLUDE_DIRECTORIES)
list(APPEND TYPICAL_TEST_INC_DIRS ${CMAKE_BINARY_DIR}/shell)
list(APPEND TYPICAL_TEST_INC_DIRS ${PROJECT_SOURCE_DIR}/test/unit_test/unit_test_utils)
get_target_property(TYPICAL_TEST_LINK_LIBS ${PROJECT_NAME} LINK_LIBRARIES)
set(CMAKE_THREAD_PREFER_PTHREAD ON)
include(FindThreads)

# Calculate test coverage
if(COVERAGE)
    set(CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} --coverage")
    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage")
    file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/run-ut-coverage.sh
        DESTINATION ${CMAKE_BINARY_DIR})
endif()

#add_subdirectory(template-test-case)
add_subdirectory(utils-test)
add_subdirectory(flutter_view-test)
add_subdirectory(app-test)
add_subdirectory(app-headless-test)
add_subdirectory(configuration-test-case)
add_subdirectory(timer-test)
add_subdirectory(gl_process_resolver-test)
add_subdirectory(shared_library-test)
#add_subdirectory(texture-test)
