86 lines
3.5 KiB
C++
86 lines
3.5 KiB
C++
#include "app_core/brush_ui.h"
|
|
#include "test_harness.h"
|
|
|
|
#include <cmath>
|
|
|
|
namespace {
|
|
|
|
void color_plan_validates_all_channels(pp::tests::Harness& harness)
|
|
{
|
|
const auto plan = pp::app::plan_brush_ui_color(0.25F, 0.5F, 0.75F, 1.0F);
|
|
PP_EXPECT(harness, plan);
|
|
if (plan) {
|
|
PP_EXPECT(harness, plan.value().operation == pp::app::BrushUiOperation::set_tip_color);
|
|
PP_EXPECT(harness, plan.value().r == 0.25F);
|
|
PP_EXPECT(harness, plan.value().g == 0.5F);
|
|
PP_EXPECT(harness, plan.value().b == 0.75F);
|
|
PP_EXPECT(harness, plan.value().a == 1.0F);
|
|
PP_EXPECT(harness, plan.value().mutates_brush);
|
|
PP_EXPECT(harness, plan.value().update_color_ui);
|
|
PP_EXPECT(harness, !plan.value().update_brush_ui);
|
|
}
|
|
|
|
PP_EXPECT(harness, !pp::app::plan_brush_ui_color(-0.01F, 0.5F, 0.5F, 1.0F));
|
|
PP_EXPECT(harness, !pp::app::plan_brush_ui_color(0.5F, 1.01F, 0.5F, 1.0F));
|
|
PP_EXPECT(harness, !pp::app::plan_brush_ui_color(0.5F, 0.5F, std::nanf(""), 1.0F));
|
|
}
|
|
|
|
void texture_plan_validates_path_and_slot(pp::tests::Harness& harness)
|
|
{
|
|
const auto plan = pp::app::plan_brush_ui_texture(
|
|
pp::app::BrushUiTextureSlot::pattern,
|
|
"data/patterns/noise.png",
|
|
"data/patterns/thumbs/noise.png");
|
|
PP_EXPECT(harness, plan);
|
|
if (plan) {
|
|
PP_EXPECT(harness, plan.value().operation == pp::app::BrushUiOperation::set_texture);
|
|
PP_EXPECT(harness, plan.value().texture_slot == pp::app::BrushUiTextureSlot::pattern);
|
|
PP_EXPECT(harness, plan.value().path == "data/patterns/noise.png");
|
|
PP_EXPECT(harness, plan.value().thumbnail_path == "data/patterns/thumbs/noise.png");
|
|
PP_EXPECT(harness, plan.value().loads_brush_resources);
|
|
PP_EXPECT(harness, plan.value().update_color_ui);
|
|
PP_EXPECT(harness, plan.value().update_brush_ui);
|
|
}
|
|
|
|
PP_EXPECT(
|
|
harness,
|
|
!pp::app::plan_brush_ui_texture(pp::app::BrushUiTextureSlot::tip, "", "thumb.png"));
|
|
}
|
|
|
|
void preset_plan_preserves_color_and_requires_brush(pp::tests::Harness& harness)
|
|
{
|
|
const auto plan = pp::app::plan_brush_ui_preset_replace(true);
|
|
PP_EXPECT(harness, plan);
|
|
if (plan) {
|
|
PP_EXPECT(harness, plan.value().operation == pp::app::BrushUiOperation::replace_brush_from_preset);
|
|
PP_EXPECT(harness, plan.value().preserves_existing_color);
|
|
PP_EXPECT(harness, plan.value().loads_brush_resources);
|
|
PP_EXPECT(harness, plan.value().update_color_ui);
|
|
PP_EXPECT(harness, plan.value().update_brush_ui);
|
|
}
|
|
|
|
PP_EXPECT(harness, !pp::app::plan_brush_ui_preset_replace(false));
|
|
}
|
|
|
|
void stroke_settings_plan_updates_brush_preview(pp::tests::Harness& harness)
|
|
{
|
|
const auto plan = pp::app::plan_brush_ui_stroke_settings_changed();
|
|
PP_EXPECT(harness, plan.operation == pp::app::BrushUiOperation::stroke_settings_changed);
|
|
PP_EXPECT(harness, plan.mutates_brush);
|
|
PP_EXPECT(harness, plan.update_color_ui);
|
|
PP_EXPECT(harness, plan.update_brush_ui);
|
|
PP_EXPECT(harness, !plan.loads_brush_resources);
|
|
}
|
|
|
|
} // namespace
|
|
|
|
int main()
|
|
{
|
|
pp::tests::Harness harness;
|
|
harness.run("color plan validates all channels", color_plan_validates_all_channels);
|
|
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);
|
|
return harness.finish();
|
|
}
|