Extract layer menu action planning
This commit is contained in:
@@ -898,6 +898,30 @@ if(TARGET pano_cli)
|
||||
LABELS "app;integration;desktop-fast;fuzz"
|
||||
WILL_FAIL TRUE)
|
||||
|
||||
add_test(NAME pano_cli_plan_layer_menu_merge_smoke
|
||||
COMMAND pano_cli plan-layer-menu --command merge --current-index 2 --current-name Ink --lower-name Paint)
|
||||
set_tests_properties(pano_cli_plan_layer_menu_merge_smoke PROPERTIES
|
||||
LABELS "app;document;integration;desktop-fast"
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-layer-menu\".*\"command\":\"merge\".*\"action\":\"merge-with-lower-layer\".*\"label\":\"Merge with Paint\".*\"fromIndex\":2.*\"toIndex\":1")
|
||||
|
||||
add_test(NAME pano_cli_plan_layer_menu_merge_animated_blocked_smoke
|
||||
COMMAND pano_cli plan-layer-menu --command merge --current-index 2 --current-name Ink --lower-name Paint --animation-duration 3)
|
||||
set_tests_properties(pano_cli_plan_layer_menu_merge_animated_blocked_smoke PROPERTIES
|
||||
LABELS "app;document;integration;desktop-fast"
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-layer-menu\".*\"animationDuration\":3.*\"action\":\"show-merge-animated-not-supported\"")
|
||||
|
||||
add_test(NAME pano_cli_plan_layer_menu_missing_selection_smoke
|
||||
COMMAND pano_cli plan-layer-menu --command rename --no-current-layer)
|
||||
set_tests_properties(pano_cli_plan_layer_menu_missing_selection_smoke PROPERTIES
|
||||
LABELS "app;document;integration;desktop-fast;fuzz"
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-layer-menu\".*\"hasCurrentLayer\":false.*\"action\":\"no-op-select-layer\".*\"label\":\"Rename Layer \\(Select a layer\\)\"")
|
||||
|
||||
add_test(NAME pano_cli_plan_layer_menu_rejects_bad_state
|
||||
COMMAND pano_cli plan-layer-menu --command merge --current-index -1)
|
||||
set_tests_properties(pano_cli_plan_layer_menu_rejects_bad_state PROPERTIES
|
||||
LABELS "app;document;integration;desktop-fast;fuzz"
|
||||
WILL_FAIL TRUE)
|
||||
|
||||
add_test(NAME pano_cli_plan_layer_operation_add_smoke
|
||||
COMMAND pano_cli plan-layer-operation --kind add --layer-count 2 --index 1 --name Paint)
|
||||
set_tests_properties(pano_cli_plan_layer_operation_add_smoke PROPERTIES
|
||||
|
||||
@@ -178,6 +178,115 @@ void layer_highlight_is_transient(pp::tests::Harness& harness)
|
||||
PP_EXPECT(harness, !pp::app::plan_document_layer_highlight(2, 2, true));
|
||||
}
|
||||
|
||||
void layer_menu_labels_selected_layer_commands(pp::tests::Harness& harness)
|
||||
{
|
||||
const auto clear = pp::app::plan_document_layer_menu(
|
||||
pp::app::DocumentLayerMenuCommand::clear,
|
||||
true,
|
||||
1,
|
||||
1,
|
||||
"Paint",
|
||||
"Base");
|
||||
const auto rename = pp::app::plan_document_layer_menu(
|
||||
pp::app::DocumentLayerMenuCommand::rename,
|
||||
true,
|
||||
1,
|
||||
1,
|
||||
"Paint",
|
||||
"Base");
|
||||
|
||||
PP_EXPECT(harness, clear);
|
||||
PP_EXPECT(harness, rename);
|
||||
if (clear) {
|
||||
PP_EXPECT(harness, clear.value().label == "Clear Layer Paint");
|
||||
PP_EXPECT(harness, clear.value().action == pp::app::DocumentLayerMenuAction::clear_current_layer);
|
||||
}
|
||||
if (rename) {
|
||||
PP_EXPECT(harness, rename.value().label == "Rename Layer Paint");
|
||||
PP_EXPECT(harness, rename.value().action == pp::app::DocumentLayerMenuAction::show_rename_dialog);
|
||||
}
|
||||
}
|
||||
|
||||
void layer_menu_plans_merge_down_or_blocks_it(pp::tests::Harness& harness)
|
||||
{
|
||||
const auto merge = pp::app::plan_document_layer_menu(
|
||||
pp::app::DocumentLayerMenuCommand::merge_down,
|
||||
true,
|
||||
2,
|
||||
1,
|
||||
"Ink",
|
||||
"Paint");
|
||||
const auto base_layer = pp::app::plan_document_layer_menu(
|
||||
pp::app::DocumentLayerMenuCommand::merge_down,
|
||||
true,
|
||||
0,
|
||||
1,
|
||||
"Base",
|
||||
"");
|
||||
const auto animated = pp::app::plan_document_layer_menu(
|
||||
pp::app::DocumentLayerMenuCommand::merge_down,
|
||||
true,
|
||||
2,
|
||||
3,
|
||||
"Ink",
|
||||
"Paint");
|
||||
|
||||
PP_EXPECT(harness, merge);
|
||||
PP_EXPECT(harness, base_layer);
|
||||
PP_EXPECT(harness, animated);
|
||||
if (merge) {
|
||||
PP_EXPECT(harness, merge.value().label == "Merge with Paint");
|
||||
PP_EXPECT(harness, merge.value().from_index == 2);
|
||||
PP_EXPECT(harness, merge.value().to_index == 1);
|
||||
PP_EXPECT(harness, merge.value().action == pp::app::DocumentLayerMenuAction::merge_with_lower_layer);
|
||||
}
|
||||
if (base_layer) {
|
||||
PP_EXPECT(harness, base_layer.value().action == pp::app::DocumentLayerMenuAction::no_op_select_upper_layer);
|
||||
PP_EXPECT(harness, base_layer.value().label == "Merge Layer (Select upper layers)");
|
||||
}
|
||||
if (animated) {
|
||||
PP_EXPECT(
|
||||
harness,
|
||||
animated.value().action == pp::app::DocumentLayerMenuAction::show_merge_animated_not_supported);
|
||||
}
|
||||
}
|
||||
|
||||
void layer_menu_handles_missing_selection_and_bad_state(pp::tests::Harness& harness)
|
||||
{
|
||||
const auto missing = pp::app::plan_document_layer_menu(
|
||||
pp::app::DocumentLayerMenuCommand::rename,
|
||||
false,
|
||||
0,
|
||||
1,
|
||||
"",
|
||||
"");
|
||||
|
||||
PP_EXPECT(harness, missing);
|
||||
if (missing) {
|
||||
PP_EXPECT(harness, missing.value().action == pp::app::DocumentLayerMenuAction::no_op_select_layer);
|
||||
PP_EXPECT(harness, missing.value().label == "Rename Layer (Select a layer)");
|
||||
}
|
||||
|
||||
PP_EXPECT(
|
||||
harness,
|
||||
!pp::app::plan_document_layer_menu(
|
||||
pp::app::DocumentLayerMenuCommand::merge_down,
|
||||
true,
|
||||
-1,
|
||||
1,
|
||||
"Ink",
|
||||
"Paint"));
|
||||
PP_EXPECT(
|
||||
harness,
|
||||
!pp::app::plan_document_layer_menu(
|
||||
pp::app::DocumentLayerMenuCommand::merge_down,
|
||||
true,
|
||||
1,
|
||||
-1,
|
||||
"Ink",
|
||||
"Paint"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int main()
|
||||
@@ -192,5 +301,8 @@ int main()
|
||||
harness.run("layer remove keeps at least one layer", layer_remove_keeps_at_least_one_layer);
|
||||
harness.run("layer metadata plans validate values", layer_metadata_plans_validate_values);
|
||||
harness.run("layer highlight is transient", layer_highlight_is_transient);
|
||||
harness.run("layer menu labels selected layer commands", layer_menu_labels_selected_layer_commands);
|
||||
harness.run("layer menu plans merge down or blocks it", layer_menu_plans_merge_down_or_blocks_it);
|
||||
harness.run("layer menu handles missing selection and bad state", layer_menu_handles_missing_selection_and_bad_state);
|
||||
return harness.finish();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user