# 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 flutter-auto SOURCES)
list(FILTER TYPICAL_TEST_SOURCES EXCLUDE REGEX ".*main\.cc")
list(TRANSFORM TYPICAL_TEST_SOURCES PREPEND ${PROJECT_SOURCE_DIR}/shell/)
# If TYPICAL_TEST_DEFINITIONS is set to the same as the flutter-auto 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 ENABLE_AGL_CLIENT)
list(APPEND TYPICAL_TEST_DEFINITIONS ENABLE_IVI_SHELL_CLIENT)
list(APPEND TYPICAL_TEST_DEFINITIONS ENABLE_DART_VM_LOGGING)
if (ENABLE_DLT)
    list(APPEND TYPICAL_TEST_DEFINITIONS ENABLE_DLT)
endif ()
list(APPEND TYPICAL_TEST_DEFINITIONS BUILD_BACKEND_WAYLAND_EGL)
list(APPEND TYPICAL_TEST_DEFINITIONS BUILD_EGL_ENABLE_TRANSPARENCY)
list(APPEND TYPICAL_TEST_DEFINITIONS BUILD_BACKEND_WAYLAND_VULKAN)
#list(APPEND TYPICAL_TEST_DEFINITIONS BUILD_BACKEND_WAYLAND_DRM)
list(APPEND TYPICAL_TEST_DEFINITIONS ENABLE_PLUGIN_ISOLATE)
list(APPEND TYPICAL_TEST_DEFINITIONS ENABLE_PLUGIN_RESTORATION)
list(APPEND TYPICAL_TEST_DEFINITIONS ENABLE_PLUGIN_PLATFORM)
list(APPEND TYPICAL_TEST_DEFINITIONS ENABLE_PLUGIN_MOUSE_CURSOR)
#list(APPEND TYPICAL_TEST_DEFINITIONS ENABLE_PLUGIN_GSTREAMER_EGL)
list(APPEND TYPICAL_TEST_DEFINITIONS ENABLE_PLUGIN_TEXT_INPUT)
list(APPEND TYPICAL_TEST_DEFINITIONS ENABLE_PLUGIN_KEY_EVENT)
list(APPEND TYPICAL_TEST_DEFINITIONS ENABLE_PLUGIN_URL_LAUNCHER)
list(APPEND TYPICAL_TEST_DEFINITIONS ENABLE_PLUGIN_PACKAGE_INFO)
list(APPEND TYPICAL_TEST_DEFINITIONS ENABLE_PLUGIN_COMP_SURF)
list(APPEND TYPICAL_TEST_DEFINITIONS ENABLE_PLUGIN_COMP_REGION)
list(APPEND TYPICAL_TEST_DEFINITIONS ENABLE_PLUGIN_OPENGL_TEXTURE)
list(APPEND TYPICAL_TEST_DEFINITIONS ENABLE_PLUGIN_NAVIGATION)
list(APPEND TYPICAL_TEST_DEFINITIONS ENABLE_PLUGIN_ACCESSIBILITY)
#list(APPEND TYPICAL_TEST_DEFINITIONS ENABLE_PLUGIN_PLATFORM_VIEWS)
list(APPEND TYPICAL_TEST_DEFINITIONS ENABLE_PLUGIN_DESKTOP_WINDOW)
#list(APPEND TYPICAL_TEST_DEFINITIONS ENABLE_PLUGIN_SECURE_STORAGE)
list(APPEND TYPICAL_TEST_DEFINITIONS ENABLE_TEXTURE_EGL)
list(APPEND TYPICAL_TEST_DEFINITIONS ENABLE_TEXTURE_NAVI_RENDER_EGL)
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 LINUX)
list(APPEND TYPICAL_TEST_DEFINITIONS HAVE_MEMFD_CREATE)
list(APPEND TYPICAL_TEST_DEFINITIONS PATH_PREFIX="${CMAKE_INSTALL_PREFIX}")
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)

get_target_property(TYPICAL_TEST_INC_DIRS flutter-auto INCLUDE_DIRECTORIES)
list(APPEND TYPICAL_TEST_INC_DIRS ${CMAKE_BINARY_DIR}/shell)
get_target_property(TYPICAL_TEST_LINK_LIBS flutter-auto 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(configuration-test-case)
add_subdirectory(timer-test)
