aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qquickanimatedimage
diff options
context:
space:
mode:
authorDamian Jansen <damian.jansen@nokia.com>2012-07-19 14:09:47 +1000
committerQt by Nokia <qt-info@nokia.com>2012-07-25 04:09:33 +0200
commit82212d1dd15658e25a094f26892ff937b4df41ec (patch)
treef55bb79e60404ed9f816fe30f621f0a5b5b00635 /tests/auto/quick/qquickanimatedimage
parent2d4f74b7d4a77f3470135e559d619c351cef6788 (diff)
Fix inconsistent playing / paused property setting and signals
Playing should only indicate false if it has been set as such in code, or in the event of a valid image but non-movie being used. Noted the edge case in documentation. Signals were not being emitted for playing/paused in the cases where an image was not loaded. Paused property was also being incorrectly assigned, which supressed pause behavior. Task-number: QTBUG-26478 Change-Id: I1aaab9b7c495811114b30b491a900804a75d590f Reviewed-by: Alan Alpert <alan.alpert@nokia.com>
Diffstat (limited to 'tests/auto/quick/qquickanimatedimage')
-rw-r--r--tests/auto/quick/qquickanimatedimage/data/green.pngbin0 -> 314 bytes
-rw-r--r--tests/auto/quick/qquickanimatedimage/tst_qquickanimatedimage.cpp74
2 files changed, 71 insertions, 3 deletions
diff --git a/tests/auto/quick/qquickanimatedimage/data/green.png b/tests/auto/quick/qquickanimatedimage/data/green.png
new file mode 100644
index 0000000000..0a2e153ba1
--- /dev/null
+++ b/tests/auto/quick/qquickanimatedimage/data/green.png
Binary files differ
diff --git a/tests/auto/quick/qquickanimatedimage/tst_qquickanimatedimage.cpp b/tests/auto/quick/qquickanimatedimage/tst_qquickanimatedimage.cpp
index c527dedcff..b8749c1945 100644
--- a/tests/auto/quick/qquickanimatedimage/tst_qquickanimatedimage.cpp
+++ b/tests/auto/quick/qquickanimatedimage/tst_qquickanimatedimage.cpp
@@ -77,6 +77,7 @@ private slots:
void invalidSource();
void qtbug_16520();
void progressAndStatusChanges();
+ void playingAndPausedChanges();
};
void tst_qquickanimatedimage::cleanup()
@@ -115,7 +116,7 @@ void tst_qquickanimatedimage::stopped()
QQmlComponent component(&engine, testFileUrl("stickmanstopped.qml"));
QQuickAnimatedImage *anim = qobject_cast<QQuickAnimatedImage *>(component.create());
QVERIFY(anim);
- QVERIFY(!anim->isPlaying());
+ QTRY_VERIFY(!anim->isPlaying());
QCOMPARE(anim->currentFrame(), 0);
delete anim;
@@ -303,11 +304,11 @@ void tst_qquickanimatedimage::invalidSource()
QQuickAnimatedImage *anim = qobject_cast<QQuickAnimatedImage *>(component.create());
QVERIFY(anim);
- QVERIFY(!anim->isPlaying());
+ QVERIFY(anim->isPlaying());
QVERIFY(!anim->isPaused());
QCOMPARE(anim->currentFrame(), 0);
QCOMPARE(anim->frameCount(), 0);
- QTRY_VERIFY(anim->status() == 3);
+ QTRY_COMPARE(anim->status(), QQuickAnimatedImage::Error);
delete anim;
}
@@ -459,6 +460,73 @@ void tst_qquickanimatedimage::progressAndStatusChanges()
delete obj;
}
+void tst_qquickanimatedimage::playingAndPausedChanges()
+{
+ QQmlEngine engine;
+ QString componentStr = "import QtQuick 2.0\nAnimatedImage { source: srcImage }";
+ QQmlContext *ctxt = engine.rootContext();
+ ctxt->setContextProperty("srcImage", QUrl(""));
+ QQmlComponent component(&engine);
+ component.setData(componentStr.toLatin1(), QUrl::fromLocalFile(""));
+ QQuickAnimatedImage *obj = qobject_cast<QQuickAnimatedImage*>(component.create());
+ QVERIFY(obj != 0);
+ QVERIFY(obj->status() == QQuickAnimatedImage::Null);
+ QTRY_VERIFY(obj->isPlaying());
+ QTRY_VERIFY(!obj->isPaused());
+ QSignalSpy playingSpy(obj, SIGNAL(playingChanged()));
+ QSignalSpy pausedSpy(obj, SIGNAL(pausedChanged()));
+
+ // initial state
+ obj->setProperty("playing", true);
+ obj->setProperty("paused", false);
+ QTRY_VERIFY(obj->isPlaying());
+ QTRY_VERIFY(!obj->isPaused());
+ QTRY_COMPARE(playingSpy.count(), 0);
+ QTRY_COMPARE(pausedSpy.count(), 0);
+
+ obj->setProperty("playing", false);
+ obj->setProperty("paused", true);
+ QTRY_VERIFY(!obj->isPlaying());
+ QTRY_VERIFY(obj->isPaused());
+ QTRY_COMPARE(playingSpy.count(), 1);
+ QTRY_COMPARE(pausedSpy.count(), 1);
+
+ obj->setProperty("playing", true);
+ obj->setProperty("paused", false);
+ QTRY_VERIFY(obj->isPlaying());
+ QTRY_VERIFY(!obj->isPaused());
+ QTRY_COMPARE(playingSpy.count(), 2);
+ QTRY_COMPARE(pausedSpy.count(), 2);
+
+ ctxt->setContextProperty("srcImage", testFileUrl("stickman.gif"));
+ QTRY_VERIFY(obj->isPlaying());
+ QTRY_VERIFY(!obj->isPaused());
+ QTRY_COMPARE(playingSpy.count(), 2);
+ QTRY_COMPARE(pausedSpy.count(), 2);
+
+ obj->setProperty("paused", true);
+ QTRY_VERIFY(obj->isPlaying());
+ QTRY_VERIFY(obj->isPaused());
+ QTRY_COMPARE(playingSpy.count(), 2);
+ QTRY_COMPARE(pausedSpy.count(), 3);
+
+ obj->setProperty("playing", false);
+ QTRY_VERIFY(!obj->isPlaying());
+ QTRY_VERIFY(!obj->isPaused());
+ QTRY_COMPARE(playingSpy.count(), 3);
+ QTRY_COMPARE(pausedSpy.count(), 4);
+
+ obj->setProperty("playing", true);
+
+ // Cannot animate this image, playing will be false
+ ctxt->setContextProperty("srcImage", testFileUrl("green.png"));
+ QTRY_VERIFY(!obj->isPlaying());
+ QTRY_VERIFY(!obj->isPaused());
+ QTRY_COMPARE(playingSpy.count(), 5);
+ QTRY_COMPARE(pausedSpy.count(), 4);
+
+ delete obj;
+}
QTEST_MAIN(tst_qquickanimatedimage)
#include "tst_qquickanimatedimage.moc"