diff options
author | Michael Brasser <mbrasser@ford.com> | 2019-10-29 09:45:54 -0500 |
---|---|---|
committer | Michael Brasser <mbrasser@ford.com> | 2019-11-13 12:03:53 -0600 |
commit | 2c6966c775fec86e3c4265cd3a5b204e7e5e183a (patch) | |
tree | 4c08695f8f22ab9554e9b0542b0dcd08a0088c0d /tests/auto/quick/qquickanimatedsprite | |
parent | c18d261971639fd78868b9a1a63b957b9dc89245 (diff) |
Allow AnimatedSprite to finish on the last frame
[ChangeLog][AnimatedSprite] Add finishBehavior to allow a sprite to
finish on the last frame.
Task-number: QTBUG-59090
Change-Id: Id45e879cdc4905f43e2ac3cb2529181390d47aab
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'tests/auto/quick/qquickanimatedsprite')
-rw-r--r-- | tests/auto/quick/qquickanimatedsprite/data/finishBehavior.qml | 18 | ||||
-rw-r--r-- | tests/auto/quick/qquickanimatedsprite/tst_qquickanimatedsprite.cpp | 26 |
2 files changed, 44 insertions, 0 deletions
diff --git a/tests/auto/quick/qquickanimatedsprite/data/finishBehavior.qml b/tests/auto/quick/qquickanimatedsprite/data/finishBehavior.qml new file mode 100644 index 0000000000..13a0ef4622 --- /dev/null +++ b/tests/auto/quick/qquickanimatedsprite/data/finishBehavior.qml @@ -0,0 +1,18 @@ +import QtQuick 2.15 + +Rectangle { + color: "black" + width: 320 + height: 320 + + AnimatedSprite { + objectName: "sprite" + loops: 1 + source: "squarefacesprite.png" + frameCount: 6 + frameDuration: 64 + width: 160 + height: 160 + finishBehavior: AnimatedSprite.FinishAtFinalFrame + } +} diff --git a/tests/auto/quick/qquickanimatedsprite/tst_qquickanimatedsprite.cpp b/tests/auto/quick/qquickanimatedsprite/tst_qquickanimatedsprite.cpp index b5366e2bb9..9f616c56e2 100644 --- a/tests/auto/quick/qquickanimatedsprite/tst_qquickanimatedsprite.cpp +++ b/tests/auto/quick/qquickanimatedsprite/tst_qquickanimatedsprite.cpp @@ -57,6 +57,7 @@ private slots: void test_changeSourceToSmallerImgKeepingBigFrameSize(); void test_infiniteLoops(); void test_implicitSize(); + void test_finishBehavior(); }; void tst_qquickanimatedsprite::initTestCase() @@ -428,6 +429,31 @@ void tst_qquickanimatedsprite::test_infiniteLoops() QCOMPARE(finishedSpy.count(), 0); } +void tst_qquickanimatedsprite::test_finishBehavior() +{ + QQuickView window; + window.setSource(testFileUrl("finishBehavior.qml")); + window.show(); + QVERIFY(QTest::qWaitForWindowExposed(&window)); + QVERIFY(window.rootObject()); + + QQuickAnimatedSprite* sprite = window.rootObject()->findChild<QQuickAnimatedSprite*>("sprite"); + QVERIFY(sprite); + + QTRY_VERIFY(sprite->running()); + + // correctly stops at last frame + QSignalSpy finishedSpy(sprite, SIGNAL(finished())); + QVERIFY(finishedSpy.wait(2000)); + QCOMPARE(sprite->running(), false); + QCOMPARE(sprite->currentFrame(), 5); + + // correctly starts a second time + sprite->start(); + QTRY_VERIFY(sprite->running()); + QTRY_COMPARE(sprite->currentFrame(), 5); +} + QTEST_MAIN(tst_qquickanimatedsprite) #include "tst_qquickanimatedsprite.moc" |