Extract image import route planning

This commit is contained in:
2026-06-03 11:41:28 +02:00
parent 888e94a77c
commit ef50f4a361
8 changed files with 226 additions and 1 deletions

View File

@@ -338,6 +338,16 @@ add_test(NAME pp_app_core_document_canvas_tests COMMAND pp_app_core_document_can
set_tests_properties(pp_app_core_document_canvas_tests PROPERTIES
LABELS "app;document;desktop-fast;fuzz")
add_executable(pp_app_core_document_import_tests
app_core/document_import_tests.cpp)
target_link_libraries(pp_app_core_document_import_tests PRIVATE
pp_app_core
pp_test_harness)
add_test(NAME pp_app_core_document_import_tests COMMAND pp_app_core_document_import_tests)
set_tests_properties(pp_app_core_document_import_tests PROPERTIES
LABELS "app;document;desktop-fast;fuzz")
add_executable(pp_app_core_document_export_tests
app_core/document_export_tests.cpp)
target_link_libraries(pp_app_core_document_export_tests PRIVATE
@@ -788,6 +798,24 @@ if(TARGET pano_cli)
LABELS "app;document;integration;desktop-fast;fuzz"
WILL_FAIL TRUE)
add_test(NAME pano_cli_plan_image_import_wide_equirect_smoke
COMMAND pano_cli plan-image-import --width 4096 --height 2048)
set_tests_properties(pano_cli_plan_image_import_wide_equirect_smoke PROPERTIES
LABELS "app;document;integration;desktop-fast"
PASS_REGULAR_EXPRESSION "\"command\":\"plan-image-import\".*\"width\":4096.*\"height\":2048.*\"action\":\"import-equirectangular\".*\"importsEquirectangular\":true.*\"entersTransformMode\":false")
add_test(NAME pano_cli_plan_image_import_transform_smoke
COMMAND pano_cli plan-image-import --width 1024 --height 1024)
set_tests_properties(pano_cli_plan_image_import_transform_smoke PROPERTIES
LABELS "app;document;integration;desktop-fast"
PASS_REGULAR_EXPRESSION "\"command\":\"plan-image-import\".*\"width\":1024.*\"height\":1024.*\"action\":\"place-transform\".*\"importsEquirectangular\":false.*\"entersTransformMode\":true")
add_test(NAME pano_cli_plan_image_import_rejects_invalid_dimensions
COMMAND pano_cli plan-image-import --width 0 --height 1024)
set_tests_properties(pano_cli_plan_image_import_rejects_invalid_dimensions PROPERTIES
LABELS "app;document;integration;desktop-fast;fuzz"
WILL_FAIL TRUE)
add_test(NAME pano_cli_plan_layer_rename_smoke
COMMAND pano_cli plan-layer-rename --old-name Base --new-name Paint)
set_tests_properties(pano_cli_plan_layer_rename_smoke PROPERTIES

View File

@@ -0,0 +1,56 @@
#include "app_core/document_import.h"
#include "test_harness.h"
namespace {
void import_plan_detects_wide_equirectangular_images(pp::tests::Harness& harness)
{
const auto plan = pp::app::plan_document_image_import(4096, 2048);
PP_EXPECT(harness, plan);
if (plan) {
PP_EXPECT(harness, plan.value().action == pp::app::DocumentImageImportAction::import_equirectangular);
PP_EXPECT(harness, plan.value().imports_equirectangular);
PP_EXPECT(harness, !plan.value().enters_transform_mode);
}
}
void import_plan_detects_legacy_vertical_cube_strips(pp::tests::Harness& harness)
{
const auto plan = pp::app::plan_document_image_import(512, 3072);
PP_EXPECT(harness, plan);
if (plan) {
PP_EXPECT(harness, plan.value().action == pp::app::DocumentImageImportAction::import_equirectangular);
PP_EXPECT(harness, plan.value().imports_equirectangular);
PP_EXPECT(harness, !plan.value().enters_transform_mode);
}
}
void import_plan_places_regular_images_as_transform_sources(pp::tests::Harness& harness)
{
const auto plan = pp::app::plan_document_image_import(1024, 1024);
PP_EXPECT(harness, plan);
if (plan) {
PP_EXPECT(harness, plan.value().action == pp::app::DocumentImageImportAction::place_transform);
PP_EXPECT(harness, !plan.value().imports_equirectangular);
PP_EXPECT(harness, plan.value().enters_transform_mode);
}
}
void import_plan_rejects_invalid_dimensions(pp::tests::Harness& harness)
{
PP_EXPECT(harness, !pp::app::plan_document_image_import(0, 1024));
PP_EXPECT(harness, !pp::app::plan_document_image_import(1024, 0));
PP_EXPECT(harness, !pp::app::plan_document_image_import(-1, 1024));
}
}
int main()
{
pp::tests::Harness harness;
harness.run("import plan detects wide equirectangular images", import_plan_detects_wide_equirectangular_images);
harness.run("import plan detects legacy vertical cube strips", import_plan_detects_legacy_vertical_cube_strips);
harness.run("import plan places regular images as transform sources", import_plan_places_regular_images_as_transform_sources);
harness.run("import plan rejects invalid dimensions", import_plan_rejects_invalid_dimensions);
return harness.finish();
}