diff options
author | Kai Koehne <kai.koehne@nokia.com> | 2010-09-22 09:16:42 +0200 |
---|---|---|
committer | Kai Koehne <kai.koehne@nokia.com> | 2010-09-22 16:18:54 +0200 |
commit | c1a7deedf1628e0dd3a5fbf92d97c4151d17fb5a (patch) | |
tree | 391fd9aa6db5ae65787334b62d0eecbb2999e8f4 /tests/auto/declarative/qdeclarativedebughelper/tst_qdeclarativedebughelper.cpp | |
parent | e9d0019c40dc49144dabacd3ab8436f1c190d5e3 (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.cpp | 47 |
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" |