Files
panopainter/tests/app_core/document_canvas_tests.cpp

58 lines
1.9 KiB
C++

#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();
}