Route quick slider preview through app core

This commit is contained in:
2026-06-05 01:26:02 +02:00
parent 31c26c3127
commit e95861e9b7
9 changed files with 324 additions and 32 deletions

View File

@@ -1,6 +1,7 @@
#include "app_core/quick_ui.h"
#include "test_harness.h"
#include <cmath>
#include <string>
namespace {
@@ -125,6 +126,66 @@ void restore_and_reset_validate_state(pp::tests::Harness& harness)
PP_EXPECT(harness, !pp::app::plan_quick_state_reset(0, false));
}
void slider_preview_projects_cursor_and_mode_flags(pp::tests::Harness& harness)
{
const auto ltr = pp::app::plan_quick_slider_preview(pp::app::QuickSliderPreviewInput {
.ui_rtl = false,
.slider_x = 10.0F,
.slider_y = 20.0F,
.slider_height = 40.0F,
.zoom = 2.0F,
.has_pen_mode = true,
.has_line_mode = false,
});
PP_EXPECT(harness, ltr);
if (ltr) {
PP_EXPECT(harness, ltr.value().cursor_x == 220.0F);
PP_EXPECT(harness, ltr.value().cursor_y == 80.0F);
PP_EXPECT(harness, ltr.value().updates_pen_mode);
PP_EXPECT(harness, !ltr.value().updates_line_mode);
PP_EXPECT(harness, ltr.value().draws_tip);
PP_EXPECT(harness, ltr.value().disables_pen_outline);
PP_EXPECT(harness, ltr.value().redraws_brush_preview);
PP_EXPECT(harness, ltr.value().invokes_change_callback);
}
const auto rtl_line = pp::app::plan_quick_slider_preview(pp::app::QuickSliderPreviewInput {
.ui_rtl = true,
.slider_x = 50.0F,
.slider_y = 10.0F,
.slider_height = 20.0F,
.zoom = 1.5F,
.has_pen_mode = false,
.has_line_mode = true,
});
PP_EXPECT(harness, rtl_line);
if (rtl_line) {
PP_EXPECT(harness, rtl_line.value().cursor_x == -75.0F);
PP_EXPECT(harness, rtl_line.value().cursor_y == 30.0F);
PP_EXPECT(harness, !rtl_line.value().updates_pen_mode);
PP_EXPECT(harness, rtl_line.value().updates_line_mode);
PP_EXPECT(harness, rtl_line.value().draws_tip);
PP_EXPECT(harness, !rtl_line.value().disables_pen_outline);
}
}
void slider_preview_rejects_invalid_geometry(pp::tests::Harness& harness)
{
PP_EXPECT(harness, !pp::app::plan_quick_slider_preview(pp::app::QuickSliderPreviewInput {
.slider_x = std::nanf(""),
.slider_height = 1.0F,
.zoom = 1.0F,
}));
PP_EXPECT(harness, !pp::app::plan_quick_slider_preview(pp::app::QuickSliderPreviewInput {
.slider_height = -1.0F,
.zoom = 1.0F,
}));
PP_EXPECT(harness, !pp::app::plan_quick_slider_preview(pp::app::QuickSliderPreviewInput {
.slider_height = 1.0F,
.zoom = 0.0F,
}));
}
void executor_dispatches_selection_popup_restore_and_reset(pp::tests::Harness& harness)
{
FakeQuickUiServices services;
@@ -216,6 +277,8 @@ int main()
harness.run("slot click selects or opens popup", slot_click_selects_or_opens_popup);
harness.run("slot click rejects invalid indices", slot_click_rejects_invalid_indices);
harness.run("restore and reset validate state", restore_and_reset_validate_state);
harness.run("slider preview projects cursor and mode flags", slider_preview_projects_cursor_and_mode_flags);
harness.run("slider preview rejects invalid geometry", slider_preview_rejects_invalid_geometry);
harness.run("executor dispatches selection popup restore and reset", executor_dispatches_selection_popup_restore_and_reset);
harness.run("executor rejects malformed quick plans", executor_rejects_malformed_quick_plans);
return harness.finish();