summaryrefslogtreecommitdiffstats
path: root/tests/auto/declarative/qdeclarativedebughelper/tst_qdeclarativedebughelper.cpp
diff options
context:
space:
mode:
authorKai Koehne <kai.koehne@nokia.com>2010-09-22 09:16:42 +0200
committerKai Koehne <kai.koehne@nokia.com>2010-09-22 16:18:54 +0200
commitc1a7deedf1628e0dd3a5fbf92d97c4151d17fb5a (patch)
tree391fd9aa6db5ae65787334b62d0eecbb2999e8f4 /tests/auto/declarative/qdeclarativedebughelper/tst_qdeclarativedebughelper.cpp
parente9d0019c40dc49144dabacd3ab8436f1c190d5e3 (diff)
Mitigate private header problems in QtCreator by adding semi-private API
Add a semi-private API to get QScriptEngine for a QDeclarativeEngine. So far the qmljsdebugger lib in QtCreator accessed the script engine via QDeclarativeEnginePrivate. Replace this by a minimal API that is still in a private header, where we nevertheless can make some BC checks/guarantees. Aaron Kennedy agreed with the idea. Task-number: QTCREATORBUG-2179
Diffstat (limited to 'tests/auto/declarative/qdeclarativedebughelper/tst_qdeclarativedebughelper.cpp')
-rw-r--r--tests/auto/declarative/qdeclarativedebughelper/tst_qdeclarativedebughelper.cpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/auto/declarative/qdeclarativedebughelper/tst_qdeclarativedebughelper.cpp b/tests/auto/declarative/qdeclarativedebughelper/tst_qdeclarativedebughelper.cpp
index db624554ac..36f2222c1d 100644
--- a/tests/auto/declarative/qdeclarativedebughelper/tst_qdeclarativedebughelper.cpp
+++ b/tests/auto/declarative/qdeclarativedebughelper/tst_qdeclarativedebughelper.cpp
@@ -42,6 +42,8 @@
#include <QDeclarativeEngine>
#include <private/qdeclarativeengine_p.h>
+#include <QAbstractAnimation>
+#include <private/qabstractanimation_p.h>
// We have copied the header which is used in the qmljsdebugger (part of QtCreator)
// to catch BC changes. Don't update it unless you know what you are doing!
@@ -51,6 +53,21 @@ class tst_qdeclarativedebughelper : public QObject {
Q_OBJECT
private slots:
void getScriptEngine();
+ void setAnimationSlowDownFactor();
+};
+
+class TestAnimation : public QAbstractAnimation {
+public:
+ int updateCalled;
+
+ TestAnimation() : updateCalled(0) {}
+
+ virtual void updateCurrentTime(int /*currentTime*/) {
+ updateCalled++;
+ }
+ virtual int duration() const {
+ return 100;
+ }
};
void tst_qdeclarativedebughelper::getScriptEngine()
@@ -62,6 +79,36 @@ void tst_qdeclarativedebughelper::getScriptEngine()
QCOMPARE(scriptEngine, QDeclarativeEnginePrivate::getScriptEngine(&engine));
}
+void tst_qdeclarativedebughelper::setAnimationSlowDownFactor()
+{
+ TestAnimation animation;
+
+ // first check whether setup works
+ QCOMPARE(animation.updateCalled, 0);
+ animation.start();
+ QTest::qWait(animation.totalDuration() + 50);
+#ifdef Q_OS_WIN
+ if (animation.state() != QAbstractAnimation::Stopped)
+ QEXPECT_FAIL("", "On windows, consistent timing is not working properly due to bad timer resolution", Abort);
+#endif
+ QCOMPARE(animation.state(), QAbstractAnimation::Stopped);
+ QVERIFY(animation.updateCalled > 1);
+
+ // check if we can pause all animations
+ animation.updateCalled = 0;
+ QDeclarativeDebugHelper::setAnimationSlowDownFactor(0.0);
+ animation.start();
+ QTest::qWait(animation.totalDuration() + 50);
+ QVERIFY(animation.updateCalled <= 1); // updateCurrentTime seems to be called at least once
+
+ // now run them again
+ animation.updateCalled = 0;
+ QDeclarativeDebugHelper::setAnimationSlowDownFactor(2.0);
+ animation.start();
+ QTest::qWait(animation.totalDuration() + 50);
+ QVERIFY(animation.updateCalled > 1);
+}
+
QTEST_MAIN(tst_qdeclarativedebughelper)
#include "tst_qdeclarativedebughelper.moc"