Extract canvas clear command planning

This commit is contained in:
2026-06-03 11:35:20 +02:00
parent c56d301b29
commit 888e94a77c
8 changed files with 251 additions and 2 deletions

View File

@@ -0,0 +1,57 @@
#include "app_core/document_canvas.h"
#include "test_harness.h"
#include <limits>
namespace {
void clear_plan_records_legacy_canvas_effects(pp::tests::Harness& harness)
{
const auto plan = pp::app::plan_document_canvas_clear(true, 0.0F, 0.1F, 0.2F, 0.3F);
PP_EXPECT(harness, plan);
if (plan) {
PP_EXPECT(harness, plan.value().clears_canvas);
PP_EXPECT(harness, plan.value().records_undo);
PP_EXPECT(harness, plan.value().marks_unsaved);
PP_EXPECT(harness, !plan.value().no_op);
PP_EXPECT(harness, plan.value().r == 0.0F);
PP_EXPECT(harness, plan.value().g == 0.1F);
PP_EXPECT(harness, plan.value().b == 0.2F);
PP_EXPECT(harness, plan.value().a == 0.3F);
}
}
void clear_plan_noops_without_canvas(pp::tests::Harness& harness)
{
const auto plan = pp::app::plan_document_canvas_clear(false);
PP_EXPECT(harness, plan);
if (plan) {
PP_EXPECT(harness, !plan.value().clears_canvas);
PP_EXPECT(harness, !plan.value().records_undo);
PP_EXPECT(harness, !plan.value().marks_unsaved);
PP_EXPECT(harness, plan.value().no_op);
}
}
void clear_plan_rejects_bad_color_channels(pp::tests::Harness& harness)
{
PP_EXPECT(harness, !pp::app::plan_document_canvas_clear(true, -0.01F, 0.0F, 0.0F, 0.0F));
PP_EXPECT(harness, !pp::app::plan_document_canvas_clear(true, 0.0F, 1.01F, 0.0F, 0.0F));
PP_EXPECT(harness, !pp::app::plan_document_canvas_clear(
true,
0.0F,
0.0F,
std::numeric_limits<float>::infinity(),
0.0F));
}
} // namespace
int main()
{
pp::tests::Harness harness;
harness.run("clear plan records legacy canvas effects", clear_plan_records_legacy_canvas_effects);
harness.run("clear plan noops without canvas", clear_plan_noops_without_canvas);
harness.run("clear plan rejects bad color channels", clear_plan_rejects_bad_color_channels);
return harness.finish();
}