From 06553966e1d3d158f081559223586662bac49051 Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Tue, 14 May 2024 14:45:52 +0900 Subject: [PATCH] test/animation - added a frame counting test-suite. --- test/resources/tag.tvg | Bin 3527 -> 3625 bytes test/testAnimation.cpp | 42 +++++++++++++++++++++++++++++++++++++++-- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/test/resources/tag.tvg b/test/resources/tag.tvg index 32f86928034085c5753d2b38e5d53671da0c5bb4..26ef4c5ca663d397a9a7955b7ed0e97f7667823d 100644 GIT binary patch literal 3625 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 delta 3527 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 diff --git a/test/testAnimation.cpp b/test/testAnimation.cpp index e1710423..5be10657 100644 --- a/test/testAnimation.cpp +++ b/test/testAnimation.cpp @@ -47,6 +47,44 @@ TEST_CASE("Animation Basic", "[tvgAnimation]") #ifdef THORVG_LOTTIE_LOADER_SUPPORT +TEST_CASE("Animation Frames Counting", "[tvgAnimation]") +{ + REQUIRE(Initializer::init(CanvasEngine::Sw, 1) == Result::Success); + + auto animation = Animation::gen(); + REQUIRE(animation); + + auto picture = animation->picture(); + REQUIRE(picture->identifier() == Picture::identifier()); + + REQUIRE(picture->load(TEST_DIR"/test.json") == Result::Success); + + for (float i = 1.0f; i < 120.0f; i += 10.0f) { + REQUIRE(animation->frame(i) == Result::Success); + REQUIRE(animation->curFrame() == i); + } + + REQUIRE(animation->frame(102.8f) == Result::Success); + REQUIRE(animation->curFrame() == Approx(102.8f)); + + REQUIRE(animation->frame(13.32f) == Result::Success); + REQUIRE(animation->curFrame() == Approx(13.32f)); + + REQUIRE(animation->frame(27.1232f) == Result::Success); + REQUIRE(animation->curFrame() == Approx(27.1232f)); + + REQUIRE(animation->frame(87.0004f) == Result::Success); + REQUIRE(animation->curFrame() == Approx(87.0004f)); + + REQUIRE(animation->frame(88.0005f) == Result::Success); + REQUIRE(animation->curFrame() == Approx(88.0005f)); + + REQUIRE(animation->frame(89.0009f) == Result::Success); + REQUIRE(animation->curFrame() == Approx(89.0009f)); + + REQUIRE(Initializer::term(CanvasEngine::Sw) == Result::Success); +} + TEST_CASE("Animation Lottie", "[tvgAnimation]") { REQUIRE(Initializer::init(CanvasEngine::Sw, 1) == Result::Success); @@ -63,7 +101,7 @@ TEST_CASE("Animation Lottie", "[tvgAnimation]") REQUIRE(animation->totalFrame() == Approx(120).margin(0.001f)); REQUIRE(animation->curFrame() == 0); REQUIRE(animation->duration() == Approx(4.004).margin(0.001f)); //120/29.97 - REQUIRE(animation->frame(20) == Result::Success); + REQUIRE(animation->frame(20.0f) == Result::Success); REQUIRE(Initializer::term(CanvasEngine::Sw) == Result::Success); } @@ -80,7 +118,7 @@ TEST_CASE("Animation Lottie2", "[tvgAnimation]") REQUIRE(picture->load(TEST_DIR"/test2.json") == Result::Success); - REQUIRE(animation->frame(20) == Result::Success); + REQUIRE(animation->frame(20.0f) == Result::Success); REQUIRE(Initializer::term(CanvasEngine::Sw) == Result::Success); }