project(drape_tests)

set(DRAPE_TESTABLE_SRC_PREFIXED  ${DRAPE_TESTABLE_SRC})
list(TRANSFORM DRAPE_TESTABLE_SRC_PREFIXED PREPEND "../")

set(SRC
  ${DRAPE_TESTABLE_SRC_PREFIXED}
  attribute_provides_tests.cpp
  batcher_tests.cpp
  bingind_info_tests.cpp
  buffer_tests.cpp
  color_tests.cpp
  dummy_texture.hpp
  font_texture_tests.cpp
  gl_functions.cpp
  gl_mock_functions.cpp
  gl_mock_functions.hpp
  glyph_mng_tests.cpp
  glyph_packer_test.cpp
  harfbuzz_shaping_test.cpp
  img.cpp
  img.hpp
  memory_comparer.hpp
  object_pool_tests.cpp
  pointers_tests.cpp
  static_texture_tests.cpp
  stipple_pen_tests.cpp
  text_metrics_cache_bench.cpp
  texture_of_colors_tests.cpp
  testing_graphics_context.hpp
  uniform_value_tests.cpp
  vertex_buffer_tests.cpp
  vulkan_memory_manager_tests.cpp
)

omim_add_test(${PROJECT_NAME} ${SRC})

target_compile_definitions(${PROJECT_NAME}
  PRIVATE GTEST_DONT_DEFINE_TEST WITH_GL_MOCK
)

if (WITH_SYSTEM_PROVIDED_3PARTY)
  find_package(GTest REQUIRED)
  target_link_libraries(${PROJECT_NAME} PRIVATE GTest::gtest)
else()
  add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/../../../3party/googletest" "${CMAKE_CURRENT_BINARY_DIR}/googletest")
  # Same treatment as for libs under 3party/CMakeLists.txt: undo -ffinite-math-only
  # (gtest uses inf for ULP math) and silence the char8_t -> char32_t cast in
  # gtest-printers.h (Clang 19+ flags it).
  target_compile_options(gtest PRIVATE
    $<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-fno-finite-math-only>
    $<$<CXX_COMPILER_ID:AppleClang,Clang>:-Wno-character-conversion>)
  target_include_directories(${PROJECT_NAME} PUBLIC ${OMIM_ROOT}/3party/glm)
endif()

target_link_libraries(${PROJECT_NAME}
  PRIVATE
    qt_tstfrm
    gmock
    ${DRAPE_LINK_LIBRARIES}
)
