diff options
author | Shawn Rutledge <shawn.rutledge@qt.io> | 2017-01-26 11:46:56 +0100 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@qt.io> | 2017-01-26 11:46:56 +0100 |
commit | 9225ac7348c9023093b6ef8d4519087c7dddeaa2 (patch) | |
tree | 4660e25bd5cfd4a2a40b0ad97ea689c4acb22a8c /tests/auto/qml/debugger/qqmlinspector | |
parent | 9d8fe2ac121162c15be6728495be2235b728325a (diff) | |
parent | 0076c44d3993f377ad6417d3bb08109b608dfbd2 (diff) |
Merge remote-tracking branch 'origin/dev' into wip/pointerhandler
Change-Id: I7962fd2282792c43af69784c8e98fb050fd928a7
Diffstat (limited to 'tests/auto/qml/debugger/qqmlinspector')
-rw-r--r-- | tests/auto/qml/debugger/qqmlinspector/data/qtquick2.qml | 5 | ||||
-rw-r--r-- | tests/auto/qml/debugger/qqmlinspector/tst_qqmlinspector.cpp | 53 |
2 files changed, 37 insertions, 21 deletions
diff --git a/tests/auto/qml/debugger/qqmlinspector/data/qtquick2.qml b/tests/auto/qml/debugger/qqmlinspector/data/qtquick2.qml index f44c653840..f43cff15e4 100644 --- a/tests/auto/qml/debugger/qqmlinspector/data/qtquick2.qml +++ b/tests/auto/qml/debugger/qqmlinspector/data/qtquick2.qml @@ -29,16 +29,15 @@ Rectangle { } var milliDelta = millis - prevHit; - if (milliDelta < 0) + if (milliDelta <= 0) milliDelta += 1000; - console.log(milliDelta, "milliseconds "); prevHit = millis; var delta = parent.rotation - prevRotation; if (delta < 0) delta += 360 prevRotation = parent.rotation - console.log(delta, "degrees "); + console.log(milliDelta, delta, "ms/degrees "); } } } diff --git a/tests/auto/qml/debugger/qqmlinspector/tst_qqmlinspector.cpp b/tests/auto/qml/debugger/qqmlinspector/tst_qqmlinspector.cpp index f55fef232e..9461922eff 100644 --- a/tests/auto/qml/debugger/qqmlinspector/tst_qqmlinspector.cpp +++ b/tests/auto/qml/debugger/qqmlinspector/tst_qqmlinspector.cpp @@ -102,29 +102,46 @@ void tst_QQmlInspector::startQmlProcess(const QString &qmlFile, bool restrictSer void tst_QQmlInspector::checkAnimationSpeed(int targetMillisPerDegree) { - QString degreesString = QStringLiteral("degrees"); - QString millisecondsString = QStringLiteral("milliseconds"); - for (int i = 0; i < 2; ++i) { // skip one period; the change might have happened inside it - int position = m_process->output().length(); - while (!m_process->output().mid(position).contains(degreesString) || - !m_process->output().mid(position).contains(millisecondsString)) { + const QString markerString = QStringLiteral("ms/degrees"); + + // Funny things can happen with time and VMs. Also the change might take a while to propagate. + // Thus, we wait until we either have 3 passes or 3 failures in a row, or 10 loops have passed. + + int numFailures = 0; + int numPasses = 0; + + for (int i = 0; i < 10; ++i) { + QString output = m_process->output(); + int position = output.length(); + do { QVERIFY(QQmlDebugTest::waitForSignal(m_process.data(), SIGNAL(readyReadStandardOutput()))); + output = m_process->output(); + } while (!output.mid(position).contains(markerString)); + + + QStringList words = output.split(QLatin1Char(' ')); + const int marker = words.lastIndexOf(markerString); + QVERIFY(marker > 1); + const double degrees = words[marker - 1].toDouble(); + const int milliseconds = words[marker - 2].toInt(); + const double millisecondsPerDegree = milliseconds / degrees; + + if (millisecondsPerDegree > targetMillisPerDegree - 3 + || millisecondsPerDegree < targetMillisPerDegree + 3) { + if (++numPasses == 3) + return; // pass + numFailures = 0; + } else { + QVERIFY2(++numFailures < 3, + QString("3 consecutive failures when checking for %1 milliseconds per degree") + .arg(targetMillisPerDegree).toLocal8Bit().constData()); + numPasses = 0; } } - QStringList words = m_process->output().split(QLatin1Char(' ')); - int degreesMarker = words.lastIndexOf(degreesString); - QVERIFY(degreesMarker > 1); - double degrees = words[degreesMarker - 1].toDouble(); - int millisecondsMarker = words.lastIndexOf(millisecondsString); - QVERIFY(millisecondsMarker > 1); - int milliseconds = words[millisecondsMarker - 1].toInt(); - - double millisecondsPerDegree = milliseconds / degrees; - QVERIFY(millisecondsPerDegree > targetMillisPerDegree - 3); - QVERIFY(millisecondsPerDegree < targetMillisPerDegree + 3); - + QFAIL(QString("Animation speed won't settle to %1 milliseconds per degree") + .arg(targetMillisPerDegree).toLocal8Bit().constData()); } void tst_QQmlInspector::cleanup() |