feat(cpp/tests): test_visual con png diff vs goldens (skip si vacio)
- png_diff.{h,cpp}: pixel_diff_ratio(path_a, path_b, channel_threshold) con
stb_image. Devuelve PngDiffResult con pixels_total, pixels_different y
diff_ratio. Si dimensiones difieren, diff_ratio=1.0.
- test_visual.cpp: invoca primitives_gallery --capture sobre tmpdir, compara
cada PNG vs cpp/tests/golden/<demo>.png con tolerancia 1% pixels distintos
(threshold 5/255 por canal). SKIPea con WARN si:
* golden dir vacio (no hay goldens todavia)
* binario primitives_gallery no construido
* el binario falla al capturar (entorno sin GL)
- CMakeLists: registra test_visual con FN_TEST_GOLDEN_DIR, FN_TEST_GALLERY_BIN,
FN_TEST_TMP_DIR y FN_TEST_REPO_ROOT (para que la captura corra desde la
raiz del repo y resuelva paths relativos como sql_workbench's registry.db).
- golden/: 41 PNGs iniciales generados en este entorno (WSL +
LIBGL_ALWAYS_SOFTWARE=1). Pueden regenerarse con cpp/scripts/update_goldens.sh.
Issue 0048.
This commit is contained in:
@@ -59,3 +59,22 @@ add_fn_test(test_dashboard_grid test_dashboard_grid.cpp)
|
||||
add_fn_test(test_sparkline test_sparkline.cpp)
|
||||
add_fn_test(test_table_view test_table_view.cpp)
|
||||
add_fn_test(test_icon_button test_icon_button.cpp)
|
||||
|
||||
# --- Visual golden-image diff (issue 0048) ---------------------------------
|
||||
# El binario primitives_gallery se compila con --capture; el test compara los
|
||||
# PNGs generados con los goldens en cpp/tests/golden/. Si no hay goldens o el
|
||||
# entorno no tiene GL, el test SKIPea.
|
||||
add_fn_test(test_visual
|
||||
test_visual.cpp
|
||||
png_diff.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../vendor/stb/stb_image_impl.cpp)
|
||||
target_include_directories(test_visual PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../vendor/stb)
|
||||
target_compile_definitions(test_visual PRIVATE
|
||||
"FN_TEST_GOLDEN_DIR=\"${CMAKE_CURRENT_SOURCE_DIR}/golden\""
|
||||
"FN_TEST_GALLERY_BIN=\"$<TARGET_FILE:primitives_gallery>\""
|
||||
"FN_TEST_TMP_DIR=\"${CMAKE_BINARY_DIR}/tests/visual_actual\""
|
||||
# CMAKE_SOURCE_DIR aqui es cpp/, queremos la raiz del repo (un nivel arriba).
|
||||
"FN_TEST_REPO_ROOT=\"${CMAKE_SOURCE_DIR}/..\"")
|
||||
# Asegura que primitives_gallery existe antes de correr el test.
|
||||
add_dependencies(test_visual primitives_gallery)
|
||||
|
||||
Reference in New Issue
Block a user