aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron Kennedy <aaron.kennedy@nokia.com>2011-05-05 15:24:17 +1000
committerAaron Kennedy <aaron.kennedy@nokia.com>2011-05-05 15:26:17 +1000
commit1332e9277cf68b0232abf666cd0c27c39b766ef1 (patch)
tree078cdb86d3d03b3231f4c234313d5c8914d005e5
parent21521c2d28e7c00e859fd2a28263b716d550c0fc (diff)
Compilation benchmark
-rw-r--r--src/declarative/qml/parser/qdeclarativejsglobal_p.h2
-rw-r--r--src/declarative/qml/qdeclarativescriptparser_p.h2
-rw-r--r--tests/benchmarks/declarative/compilation/tst_compilation.cpp74
3 files changed, 74 insertions, 4 deletions
diff --git a/src/declarative/qml/parser/qdeclarativejsglobal_p.h b/src/declarative/qml/parser/qdeclarativejsglobal_p.h
index 776937cfdf..4fd8b84dcc 100644
--- a/src/declarative/qml/parser/qdeclarativejsglobal_p.h
+++ b/src/declarative/qml/parser/qdeclarativejsglobal_p.h
@@ -58,7 +58,7 @@
#else // !QT_CREATOR
# define QT_QML_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
# define QT_QML_END_NAMESPACE QT_END_NAMESPACE
-# define QML_PARSER_EXPORT
+# define QML_PARSER_EXPORT Q_AUTOTEST_EXPORT
#endif // QT_CREATOR
#endif // QDECLARATIVEJSGLOBAL_P_H
diff --git a/src/declarative/qml/qdeclarativescriptparser_p.h b/src/declarative/qml/qdeclarativescriptparser_p.h
index fd89f757cc..f8cea76b11 100644
--- a/src/declarative/qml/qdeclarativescriptparser_p.h
+++ b/src/declarative/qml/qdeclarativescriptparser_p.h
@@ -67,7 +67,7 @@ QT_MODULE(Declarative)
class QByteArray;
class QDeclarativeScriptParserJsASTData;
-class QDeclarativeScriptParser
+class Q_AUTOTEST_EXPORT QDeclarativeScriptParser
{
public:
class Import
diff --git a/tests/benchmarks/declarative/compilation/tst_compilation.cpp b/tests/benchmarks/declarative/compilation/tst_compilation.cpp
index 7bf6c9d25f..e09b34076f 100644
--- a/tests/benchmarks/declarative/compilation/tst_compilation.cpp
+++ b/tests/benchmarks/declarative/compilation/tst_compilation.cpp
@@ -40,9 +40,18 @@
****************************************************************************/
#include <qtest.h>
-#include <QDeclarativeEngine>
-#include <QDeclarativeComponent>
+
+#include <QtDeclarative/qdeclarativeengine.h>
+#include <QtDeclarative/qdeclarativecomponent.h>
+#include <QtDeclarative/private/qdeclarativejsengine_p.h>
+#include <QtDeclarative/private/qdeclarativejsnodepool_p.h>
+#include <QtDeclarative/private/qdeclarativejsparser_p.h>
+#include <QtDeclarative/private/qdeclarativejslexer_p.h>
+#include <QtDeclarative/private/qdeclarativescriptparser_p.h>
+
#include <QFile>
+#include <QDebug>
+#include <QTextStream>
#ifdef Q_OS_SYMBIAN
// In Symbian OS test data is located in applications private dir
@@ -58,6 +67,12 @@ public:
private slots:
void boomblock();
+ void jsparser_data();
+ void jsparser();
+
+ void scriptparser_data();
+ void scriptparser();
+
private:
QDeclarativeEngine engine;
};
@@ -90,6 +105,61 @@ void tst_compilation::boomblock()
}
}
+void tst_compilation::jsparser_data()
+{
+ QTest::addColumn<QString>("file");
+
+ QTest::newRow("boomblock") << QString(SRCDIR + QLatin1String("/data/BoomBlock.qml"));
+}
+
+void tst_compilation::jsparser()
+{
+ QFETCH(QString, file);
+
+ QFile f(file);
+ QVERIFY(f.open(QIODevice::ReadOnly));
+ QByteArray data = f.readAll();
+
+ QTextStream stream(data, QIODevice::ReadOnly);
+ const QString code = stream.readAll();
+
+ QBENCHMARK {
+ QDeclarativeJS::Engine engine;
+ QDeclarativeJS::NodePool nodePool(file, &engine);
+
+ QDeclarativeJS::Lexer lexer(&engine);
+ lexer.setCode(code, -1);
+
+ QDeclarativeJS::Parser parser(&engine);
+ parser.parse();
+ parser.ast();
+ }
+}
+
+void tst_compilation::scriptparser_data()
+{
+ QTest::addColumn<QString>("file");
+
+ QTest::newRow("boomblock") << QString(SRCDIR + QLatin1String("/data/BoomBlock.qml"));
+}
+
+void tst_compilation::scriptparser()
+{
+ QFETCH(QString, file);
+
+ QFile f(file);
+ QVERIFY(f.open(QIODevice::ReadOnly));
+ QByteArray data = f.readAll();
+
+ QUrl url = QUrl::fromLocalFile(file);
+
+ QBENCHMARK {
+ QDeclarativeScriptParser parser;
+ parser.parse(data, url);
+ parser.tree();
+ }
+}
+
QTEST_MAIN(tst_compilation)
#include "tst_compilation.moc"