aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@digia.com>2014-01-31 11:22:01 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-13 10:43:07 +0100
commit8609402bd7f4019f17bd4f314a4ee49b6cee267f (patch)
tree987e3d2f20fb7adea347098c3c4825272e3db106 /tests
parenteb8a09145759f53786706c748afb813e1475feef (diff)
Test case for V4 profiler and its adapter
Change-Id: I64af195a16189cd1306ca80d13c0ef002fa31f59 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qml/debugger/qqmlprofilerservice/data/javascript.qml17
-rw-r--r--tests/auto/qml/debugger/qqmlprofilerservice/qqmlprofilerservice.pro3
-rw-r--r--tests/auto/qml/debugger/qqmlprofilerservice/tst_qqmlprofilerservice.cpp39
3 files changed, 58 insertions, 1 deletions
diff --git a/tests/auto/qml/debugger/qqmlprofilerservice/data/javascript.qml b/tests/auto/qml/debugger/qqmlprofilerservice/data/javascript.qml
new file mode 100644
index 0000000000..0555d49652
--- /dev/null
+++ b/tests/auto/qml/debugger/qqmlprofilerservice/data/javascript.qml
@@ -0,0 +1,17 @@
+import QtQuick 2.0
+
+Rectangle {
+ function something(i) {
+ if (i > 10) {
+ something(i / 4);
+ } else {
+ console.log("done");
+ }
+ }
+
+ width: 400
+ height: 400
+
+ onWidthChanged: something(width);
+ Component.onCompleted: width = 500;
+}
diff --git a/tests/auto/qml/debugger/qqmlprofilerservice/qqmlprofilerservice.pro b/tests/auto/qml/debugger/qqmlprofilerservice/qqmlprofilerservice.pro
index 647d761dc4..1bab614b63 100644
--- a/tests/auto/qml/debugger/qqmlprofilerservice/qqmlprofilerservice.pro
+++ b/tests/auto/qml/debugger/qqmlprofilerservice/qqmlprofilerservice.pro
@@ -20,4 +20,5 @@ OTHER_FILES += \
data/exit.qml \
data/scenegraphTest.qml \
data/TestImage_2x2.png \
- data/signalSourceLocation.qml
+ data/signalSourceLocation.qml \
+ data/javascript.qml
diff --git a/tests/auto/qml/debugger/qqmlprofilerservice/tst_qqmlprofilerservice.cpp b/tests/auto/qml/debugger/qqmlprofilerservice/tst_qqmlprofilerservice.cpp
index 63bb0b4c9e..6dbdc83b08 100644
--- a/tests/auto/qml/debugger/qqmlprofilerservice/tst_qqmlprofilerservice.cpp
+++ b/tests/auto/qml/debugger/qqmlprofilerservice/tst_qqmlprofilerservice.cpp
@@ -183,6 +183,7 @@ private slots:
void profileOnExit();
void controlFromJS();
void signalSourceLocation();
+ void javascript();
};
void QQmlProfilerClient::messageReceived(const QByteArray &message)
@@ -558,6 +559,44 @@ void tst_QQmlProfilerService::signalSourceLocation()
QCOMPARE(m_client->traceMessages.last().detailType, (int)QQmlProfilerClient::EndTrace);
}
+void tst_QQmlProfilerService::javascript()
+{
+ connect(true, "javascript.qml");
+ QVERIFY(m_client);
+ QTRY_COMPARE(m_client->state(), QQmlDebugClient::Enabled);
+
+ m_client->setTraceState(true);
+ while (!(m_process->output().contains(QLatin1String("done"))))
+ QVERIFY(QQmlDebugTest::waitForSignal(m_process, SIGNAL(readyReadStandardOutput())));
+ m_client->setTraceState(false);
+ QVERIFY2(QQmlDebugTest::waitForSignal(m_client, SIGNAL(complete())), "No trace received in time.");
+
+ QVERIFY(m_client->traceMessages.count() >= 36);
+ // must start with "StartTrace"
+ QCOMPARE(m_client->traceMessages.first().messageType, (int)QQmlProfilerClient::Event);
+ QCOMPARE(m_client->traceMessages.first().detailType, (int)QQmlProfilerClient::StartTrace);
+
+ QVERIFY(m_client->traceMessages[32].messageType == QQmlProfilerClient::RangeStart);
+ QVERIFY(m_client->traceMessages[32].detailType == QQmlProfilerClient::Javascript);
+
+ QVERIFY(m_client->traceMessages[33].messageType == QQmlProfilerClient::RangeLocation);
+ QVERIFY(m_client->traceMessages[33].detailType == QQmlProfilerClient::Javascript);
+ QVERIFY(m_client->traceMessages[33].detailData.endsWith("javascript.qml"));
+ QVERIFY(m_client->traceMessages[33].line == 4);
+ QVERIFY(m_client->traceMessages[33].column == 5);
+
+ QVERIFY(m_client->traceMessages[34].messageType == QQmlProfilerClient::RangeData);
+ QVERIFY(m_client->traceMessages[34].detailType == QQmlProfilerClient::Javascript);
+ QVERIFY(m_client->traceMessages[34].detailData == "something");
+
+ QVERIFY(m_client->traceMessages[35].messageType == QQmlProfilerClient::RangeEnd);
+ QVERIFY(m_client->traceMessages[35].detailType == QQmlProfilerClient::Javascript);
+
+ // must end with "EndTrace"
+ QCOMPARE(m_client->traceMessages.last().messageType, (int)QQmlProfilerClient::Event);
+ QCOMPARE(m_client->traceMessages.last().detailType, (int)QQmlProfilerClient::EndTrace);
+}
+
QTEST_MAIN(tst_QQmlProfilerService)
#include "tst_qqmlprofilerservice.moc"