Extract layer rename planning
This commit is contained in:
@@ -318,6 +318,16 @@ add_test(NAME pp_app_core_document_recording_tests COMMAND pp_app_core_document_
|
||||
set_tests_properties(pp_app_core_document_recording_tests PROPERTIES
|
||||
LABELS "app;desktop-fast;fuzz")
|
||||
|
||||
add_executable(pp_app_core_document_layer_tests
|
||||
app_core/document_layer_tests.cpp)
|
||||
target_link_libraries(pp_app_core_document_layer_tests PRIVATE
|
||||
pp_app_core
|
||||
pp_test_harness)
|
||||
|
||||
add_test(NAME pp_app_core_document_layer_tests COMMAND pp_app_core_document_layer_tests)
|
||||
set_tests_properties(pp_app_core_document_layer_tests PROPERTIES
|
||||
LABELS "app;desktop-fast;fuzz")
|
||||
|
||||
add_executable(pp_app_core_document_resize_tests
|
||||
app_core/document_resize_tests.cpp)
|
||||
target_link_libraries(pp_app_core_document_resize_tests PRIVATE
|
||||
@@ -690,6 +700,24 @@ if(TARGET pano_cli)
|
||||
LABELS "app;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
|
||||
LABELS "app;integration;desktop-fast"
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-layer-rename\".*\"oldName\":\"Base\".*\"newName\":\"Paint\".*\"action\":\"rename-and-record-undo\"")
|
||||
|
||||
add_test(NAME pano_cli_plan_layer_rename_no_op_smoke
|
||||
COMMAND pano_cli plan-layer-rename --old-name Ink --new-name Ink)
|
||||
set_tests_properties(pano_cli_plan_layer_rename_no_op_smoke PROPERTIES
|
||||
LABELS "app;integration;desktop-fast"
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-layer-rename\".*\"oldName\":\"Ink\".*\"newName\":\"Ink\".*\"action\":\"no-op-same-name\"")
|
||||
|
||||
add_test(NAME pano_cli_plan_layer_rename_rejects_empty_name
|
||||
COMMAND pano_cli plan-layer-rename --old-name Ink --new-name "")
|
||||
set_tests_properties(pano_cli_plan_layer_rename_rejects_empty_name PROPERTIES
|
||||
LABELS "app;integration;desktop-fast;fuzz"
|
||||
WILL_FAIL TRUE)
|
||||
|
||||
add_test(NAME pano_cli_plan_share_file_unsaved_smoke
|
||||
COMMAND pano_cli plan-share-file)
|
||||
set_tests_properties(pano_cli_plan_share_file_unsaved_smoke PROPERTIES
|
||||
|
||||
63
tests/app_core/document_layer_tests.cpp
Normal file
63
tests/app_core/document_layer_tests.cpp
Normal file
@@ -0,0 +1,63 @@
|
||||
#include "app_core/document_layer.h"
|
||||
#include "test_harness.h"
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace {
|
||||
|
||||
void layer_rename_records_changed_name(pp::tests::Harness& harness)
|
||||
{
|
||||
const auto plan = pp::app::plan_document_layer_rename("Base", "Paint");
|
||||
PP_EXPECT(harness, plan);
|
||||
if (plan) {
|
||||
PP_EXPECT(harness, plan.value().old_name == "Base");
|
||||
PP_EXPECT(harness, plan.value().new_name == "Paint");
|
||||
PP_EXPECT(
|
||||
harness,
|
||||
plan.value().action == pp::app::DocumentLayerRenameAction::rename_and_record_undo);
|
||||
}
|
||||
}
|
||||
|
||||
void layer_rename_ignores_unchanged_name(pp::tests::Harness& harness)
|
||||
{
|
||||
const auto plan = pp::app::plan_document_layer_rename("Ink", "Ink");
|
||||
PP_EXPECT(harness, plan);
|
||||
if (plan) {
|
||||
PP_EXPECT(harness, plan.value().old_name == "Ink");
|
||||
PP_EXPECT(harness, plan.value().new_name == "Ink");
|
||||
PP_EXPECT(
|
||||
harness,
|
||||
plan.value().action == pp::app::DocumentLayerRenameAction::no_op_same_name);
|
||||
}
|
||||
}
|
||||
|
||||
void layer_rename_rejects_empty_name(pp::tests::Harness& harness)
|
||||
{
|
||||
const auto plan = pp::app::plan_document_layer_rename("Ink", "");
|
||||
PP_EXPECT(harness, !plan);
|
||||
if (!plan) {
|
||||
PP_EXPECT(harness, plan.status().code == pp::foundation::StatusCode::invalid_argument);
|
||||
}
|
||||
}
|
||||
|
||||
void layer_rename_rejects_overlong_name(pp::tests::Harness& harness)
|
||||
{
|
||||
const std::string too_long(pp::app::document_layer_name_max_length + 1U, 'x');
|
||||
const auto plan = pp::app::plan_document_layer_rename("Ink", too_long);
|
||||
PP_EXPECT(harness, !plan);
|
||||
if (!plan) {
|
||||
PP_EXPECT(harness, plan.status().code == pp::foundation::StatusCode::out_of_range);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
pp::tests::Harness harness;
|
||||
harness.run("layer rename records changed name", layer_rename_records_changed_name);
|
||||
harness.run("layer rename ignores unchanged name", layer_rename_ignores_unchanged_name);
|
||||
harness.run("layer rename rejects empty name", layer_rename_rejects_empty_name);
|
||||
harness.run("layer rename rejects overlong name", layer_rename_rejects_overlong_name);
|
||||
return harness.finish();
|
||||
}
|
||||
Reference in New Issue
Block a user