Add document frame move coverage

This commit is contained in:
2026-06-01 09:03:46 +02:00
parent f6d3de8cbf
commit 44aebf61b2
5 changed files with 101 additions and 13 deletions

View File

@@ -31,6 +31,7 @@ void creates_document_with_default_layers(pp::tests::Harness& h)
PP_EXPECT(h, document.value().active_layer_index() == 0U);
PP_EXPECT(h, document.value().frames().size() == 1U);
PP_EXPECT(h, document.value().frames()[0].duration_ms == 100U);
PP_EXPECT(h, document.value().animation_duration_ms() == 100U);
PP_EXPECT(h, document.value().active_frame_index() == 0U);
}
@@ -173,10 +174,45 @@ void manages_animation_frames_and_duration(pp::tests::Harness& h)
PP_EXPECT(h, document.frames()[2].duration_ms == 250U);
PP_EXPECT(h, document.set_frame_duration(2, 333).ok());
PP_EXPECT(h, document.frames()[2].duration_ms == 333U);
PP_EXPECT(h, document.animation_duration_ms() == 683U);
PP_EXPECT(h, document.remove_frame(1).ok());
PP_EXPECT(h, document.frames().size() == 2U);
PP_EXPECT(h, document.active_frame_index() == 1U);
PP_EXPECT(h, document.animation_duration_ms() == 433U);
}
void moves_frames_and_preserves_active_frame_identity(pp::tests::Harness& h)
{
auto document_result = CanvasDocument::create(
DocumentConfig { .width = 64, .height = 64, .layer_count = 1 });
PP_EXPECT(h, document_result.ok());
auto document = document_result.value();
PP_EXPECT(h, document.set_frame_duration(0, 100).ok());
PP_EXPECT(h, document.add_frame(200).ok());
PP_EXPECT(h, document.add_frame(300).ok());
PP_EXPECT(h, document.add_frame(400).ok());
PP_EXPECT(h, document.set_active_frame(2).ok());
PP_EXPECT(h, document.move_frame(2, 0).ok());
PP_EXPECT(h, document.active_frame_index() == 0U);
PP_EXPECT(h, document.frames()[0].duration_ms == 300U);
PP_EXPECT(h, document.frames()[1].duration_ms == 100U);
PP_EXPECT(h, document.frames()[2].duration_ms == 200U);
PP_EXPECT(h, document.frames()[3].duration_ms == 400U);
PP_EXPECT(h, document.move_frame(3, 1).ok());
PP_EXPECT(h, document.active_frame_index() == 0U);
PP_EXPECT(h, document.frames()[1].duration_ms == 400U);
PP_EXPECT(h, document.animation_duration_ms() == 1000U);
const auto missing_from = document.move_frame(9, 0);
const auto missing_to = document.move_frame(0, 9);
PP_EXPECT(h, !missing_from.ok());
PP_EXPECT(h, missing_from.code == StatusCode::out_of_range);
PP_EXPECT(h, !missing_to.ok());
PP_EXPECT(h, missing_to.code == StatusCode::out_of_range);
}
void rejects_invalid_animation_frame_operations(pp::tests::Harness& h)
@@ -331,6 +367,7 @@ int main()
harness.run("updates_layer_metadata", updates_layer_metadata);
harness.run("rejects_invalid_layer_metadata", rejects_invalid_layer_metadata);
harness.run("manages_animation_frames_and_duration", manages_animation_frames_and_duration);
harness.run("moves_frames_and_preserves_active_frame_identity", moves_frames_and_preserves_active_frame_identity);
harness.run("rejects_invalid_animation_frame_operations", rejects_invalid_animation_frame_operations);
harness.run("records_document_history_and_restores_snapshots", records_document_history_and_restores_snapshots);
harness.run("applying_after_undo_discards_redo_branch", applying_after_undo_discards_redo_branch);