Route brush refresh view through app core
This commit is contained in:
@@ -1364,6 +1364,30 @@ if(TARGET pano_cli)
|
||||
LABELS "app;paint;integration;desktop-fast;fuzz"
|
||||
WILL_FAIL TRUE)
|
||||
|
||||
add_test(NAME pano_cli_plan_brush_refresh_smoke
|
||||
COMMAND pano_cli plan-brush-refresh --floating-picker --tip-flow 0.8 --tip-size 48 --r 0.2 --g 0.3 --b 0.4 --a 1)
|
||||
set_tests_properties(pano_cli_plan_brush_refresh_smoke PROPERTIES
|
||||
LABELS "app;paint;ui;integration;desktop-fast"
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-brush-refresh\".*\"updatesStrokeControls\":true.*\"updatesQuickFlow\":true.*\"updatesQuickSize\":true.*\"updatesQuickBrushPreview\":true.*\"updatesQuickColor\":true.*\"updatesFloatingPicker\":true.*\"updatesFloatingColorPanel\":false.*\"tipFlow\":0.8.*\"tipSize\":48.*\"r\":0.2.*\"g\":0.3.*\"b\":0.4.*\"a\":1")
|
||||
|
||||
add_test(NAME pano_cli_plan_brush_refresh_noop_smoke
|
||||
COMMAND pano_cli plan-brush-refresh --no-color --no-brush-update --no-brush)
|
||||
set_tests_properties(pano_cli_plan_brush_refresh_noop_smoke PROPERTIES
|
||||
LABELS "app;paint;ui;integration;desktop-fast"
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-brush-refresh\".*\"updatesQuickBrushPreview\":false.*\"updatesQuickColor\":false.*\"noOp\":true")
|
||||
|
||||
add_test(NAME pano_cli_plan_brush_refresh_rejects_missing_brush
|
||||
COMMAND pano_cli plan-brush-refresh --no-brush)
|
||||
set_tests_properties(pano_cli_plan_brush_refresh_rejects_missing_brush PROPERTIES
|
||||
LABELS "app;paint;ui;integration;desktop-fast;fuzz"
|
||||
WILL_FAIL TRUE)
|
||||
|
||||
add_test(NAME pano_cli_plan_brush_refresh_rejects_bad_float
|
||||
COMMAND pano_cli plan-brush-refresh --bad-float)
|
||||
set_tests_properties(pano_cli_plan_brush_refresh_rejects_bad_float PROPERTIES
|
||||
LABELS "app;paint;ui;integration;desktop-fast;fuzz"
|
||||
WILL_FAIL TRUE)
|
||||
|
||||
add_test(NAME pano_cli_plan_brush_texture_list_add_smoke
|
||||
COMMAND pano_cli plan-brush-texture-list --kind add --dir brushes --data-path data --source C:/Temp/soft.png)
|
||||
set_tests_properties(pano_cli_plan_brush_texture_list_add_smoke PROPERTIES
|
||||
|
||||
@@ -358,6 +358,98 @@ void stroke_settings_plan_updates_brush_preview(pp::tests::Harness& harness)
|
||||
PP_EXPECT(harness, !plan.loads_brush_resources);
|
||||
}
|
||||
|
||||
void brush_ui_refresh_projects_requested_surfaces(pp::tests::Harness& harness)
|
||||
{
|
||||
const auto view = pp::app::plan_brush_ui_refresh(pp::app::BrushUiRefreshInput {
|
||||
.update_color = true,
|
||||
.update_brush = true,
|
||||
.has_current_brush = true,
|
||||
.has_floating_picker = true,
|
||||
.has_floating_color_panel = false,
|
||||
.tip_flow = 0.9F,
|
||||
.tip_size = 64.0F,
|
||||
.r = 0.25F,
|
||||
.g = 0.5F,
|
||||
.b = 0.75F,
|
||||
.a = 1.0F,
|
||||
});
|
||||
|
||||
PP_EXPECT(harness, view);
|
||||
if (view) {
|
||||
PP_EXPECT(harness, view.value().updates_stroke_controls);
|
||||
PP_EXPECT(harness, view.value().updates_quick_flow);
|
||||
PP_EXPECT(harness, view.value().updates_quick_size);
|
||||
PP_EXPECT(harness, view.value().updates_quick_brush_preview);
|
||||
PP_EXPECT(harness, view.value().updates_quick_color);
|
||||
PP_EXPECT(harness, view.value().updates_floating_picker);
|
||||
PP_EXPECT(harness, !view.value().updates_floating_color_panel);
|
||||
PP_EXPECT(harness, !view.value().no_op);
|
||||
PP_EXPECT(harness, view.value().tip_flow == 0.9F);
|
||||
PP_EXPECT(harness, view.value().tip_size == 64.0F);
|
||||
PP_EXPECT(harness, view.value().r == 0.25F);
|
||||
PP_EXPECT(harness, view.value().g == 0.5F);
|
||||
PP_EXPECT(harness, view.value().b == 0.75F);
|
||||
PP_EXPECT(harness, view.value().a == 1.0F);
|
||||
}
|
||||
|
||||
const auto color_only = pp::app::plan_brush_ui_refresh(pp::app::BrushUiRefreshInput {
|
||||
.update_color = true,
|
||||
.update_brush = false,
|
||||
.has_current_brush = true,
|
||||
.has_floating_picker = false,
|
||||
.has_floating_color_panel = true,
|
||||
.r = 0.1F,
|
||||
.g = 0.2F,
|
||||
.b = 0.3F,
|
||||
.a = 1.0F,
|
||||
});
|
||||
PP_EXPECT(harness, color_only);
|
||||
if (color_only) {
|
||||
PP_EXPECT(harness, !color_only.value().updates_stroke_controls);
|
||||
PP_EXPECT(harness, !color_only.value().updates_quick_flow);
|
||||
PP_EXPECT(harness, color_only.value().updates_quick_color);
|
||||
PP_EXPECT(harness, !color_only.value().updates_floating_picker);
|
||||
PP_EXPECT(harness, color_only.value().updates_floating_color_panel);
|
||||
}
|
||||
|
||||
const auto no_op = pp::app::plan_brush_ui_refresh(pp::app::BrushUiRefreshInput {
|
||||
.update_color = false,
|
||||
.update_brush = false,
|
||||
.has_current_brush = false,
|
||||
});
|
||||
PP_EXPECT(harness, no_op);
|
||||
if (no_op) {
|
||||
PP_EXPECT(harness, no_op.value().no_op);
|
||||
PP_EXPECT(harness, !no_op.value().updates_quick_color);
|
||||
PP_EXPECT(harness, !no_op.value().updates_quick_brush_preview);
|
||||
}
|
||||
}
|
||||
|
||||
void brush_ui_refresh_rejects_invalid_state(pp::tests::Harness& harness)
|
||||
{
|
||||
PP_EXPECT(harness, !pp::app::plan_brush_ui_refresh(pp::app::BrushUiRefreshInput {
|
||||
.update_color = true,
|
||||
.update_brush = false,
|
||||
.has_current_brush = false,
|
||||
}));
|
||||
PP_EXPECT(harness, !pp::app::plan_brush_ui_refresh(pp::app::BrushUiRefreshInput {
|
||||
.update_color = true,
|
||||
.update_brush = false,
|
||||
.has_current_brush = true,
|
||||
.r = 1.25F,
|
||||
.g = 0.0F,
|
||||
.b = 0.0F,
|
||||
.a = 1.0F,
|
||||
}));
|
||||
PP_EXPECT(harness, !pp::app::plan_brush_ui_refresh(pp::app::BrushUiRefreshInput {
|
||||
.update_color = false,
|
||||
.update_brush = true,
|
||||
.has_current_brush = true,
|
||||
.tip_flow = std::nanf(""),
|
||||
.tip_size = 64.0F,
|
||||
}));
|
||||
}
|
||||
|
||||
void stroke_control_plans_validate_values_and_reject_breaking_points(pp::tests::Harness& harness)
|
||||
{
|
||||
const auto slider = pp::app::plan_brush_stroke_float_setting(
|
||||
@@ -920,6 +1012,8 @@ int main()
|
||||
harness.run("texture plan validates path and slot", texture_plan_validates_path_and_slot);
|
||||
harness.run("preset plan preserves color and requires brush", preset_plan_preserves_color_and_requires_brush);
|
||||
harness.run("stroke settings plan updates brush preview", stroke_settings_plan_updates_brush_preview);
|
||||
harness.run("brush UI refresh projects requested surfaces", brush_ui_refresh_projects_requested_surfaces);
|
||||
harness.run("brush UI refresh rejects invalid state", brush_ui_refresh_rejects_invalid_state);
|
||||
harness.run("stroke control plans validate values and reject breaking points", stroke_control_plans_validate_values_and_reject_breaking_points);
|
||||
harness.run("stroke panel view projects brush state", stroke_panel_view_projects_brush_state);
|
||||
harness.run("stroke panel view rejects invalid brush state", stroke_panel_view_rejects_invalid_brush_state);
|
||||
|
||||
Reference in New Issue
Block a user