From 9d8495fa036f1768ffff46f0ce1f7d1aff92c18e Mon Sep 17 00:00:00 2001 From: omigamedev Date: Sat, 13 Jun 2026 19:56:09 +0200 Subject: [PATCH] Cover stroke commit face input binding helper --- tests/paint_renderer/compositor_tests.cpp | 37 +++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/tests/paint_renderer/compositor_tests.cpp b/tests/paint_renderer/compositor_tests.cpp index c6e9bc1..e78baf0 100644 --- a/tests/paint_renderer/compositor_tests.cpp +++ b/tests/paint_renderer/compositor_tests.cpp @@ -1885,6 +1885,43 @@ void retained_stroke_commit_input_binder_uses_sequence_slots(pp::tests::Harness& PP_EXPECT(h, bound_samplers[4].second == 4); } +void retained_stroke_commit_face_input_binder_forwards_sequence_slots(pp::tests::Harness& h) +{ + const auto sequence = plan_canvas_stroke_commit_sequence( + CanvasStrokeCommitRequest { + .erase_mode = false, + .alpha_locked = false, + .selection_mask_active = true, + .dual_stroke_enabled = true, + .pattern_enabled = true, + }); + + std::vector active_slots; + std::vector bound_textures; + std::vector> bound_samplers; + + pp::panopainter::bind_legacy_canvas_stroke_commit_face_inputs( + sequence, + [&](int texture_slot) { + active_slots.push_back(texture_slot); + }, + [&](CanvasStrokeCommitTextureRole role) { + bound_textures.push_back(role); + }, + [&](CanvasStrokeCommitTextureRole role, int texture_slot) { + bound_samplers.emplace_back(role, texture_slot); + }); + + PP_EXPECT(h, active_slots.size() == 5U); + PP_EXPECT(h, bound_textures.size() == 5U); + PP_EXPECT(h, bound_samplers.size() == 5U); + PP_EXPECT(h, active_slots[0] == 0); + PP_EXPECT(h, active_slots[4] == 4); + PP_EXPECT(h, bound_textures[2] == CanvasStrokeCommitTextureRole::selection_mask); + PP_EXPECT(h, bound_samplers[3].first == CanvasStrokeCommitTextureRole::dual_stroke); + PP_EXPECT(h, bound_samplers[3].second == 3); +} + void retained_stroke_commit_dilate_copy_uses_layer_scratch_slot(pp::tests::Harness& h) { const auto sequence = plan_canvas_stroke_commit_sequence(