aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorhjk <qtc-committer@nokia.com>2009-04-30 10:01:54 +0200
committerhjk <qtc-committer@nokia.com>2009-04-30 10:01:54 +0200
commitfeb34c0e6fde4f04f04476054554a5fef75a32a4 (patch)
tree5e5e2a7d2c9328b09d5d9d3bb1f76f49b326de34 /tests
parentb72b4142dc201f6de07989628bcc23bd1f03a3e3 (diff)
Introduce a new QStringBuilder helper class to speed up building strings
from smaller chunks using expression templates. Simple test and benchmark included, the class is not yet complete.
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qstringbuilder/qstringbuilder.pro11
-rw-r--r--tests/auto/qstringbuilder/tst_qstringbuilder.cpp48
-rw-r--r--tests/benchmarks/qstringbuilder/main.cpp84
-rw-r--r--tests/benchmarks/qstringbuilder/qstringbuilder.pro12
4 files changed, 155 insertions, 0 deletions
diff --git a/tests/auto/qstringbuilder/qstringbuilder.pro b/tests/auto/qstringbuilder/qstringbuilder.pro
new file mode 100644
index 00000000000..5416ca413ab
--- /dev/null
+++ b/tests/auto/qstringbuilder/qstringbuilder.pro
@@ -0,0 +1,11 @@
+load(qttest_p4)
+SOURCES += tst_qstringbuilder.cpp
+
+QT -= gui
+
+QT = core
+
+DEFINES += QT_NO_CAST_TO_ASCII
+
+
+
diff --git a/tests/auto/qstringbuilder/tst_qstringbuilder.cpp b/tests/auto/qstringbuilder/tst_qstringbuilder.cpp
new file mode 100644
index 00000000000..2e58d1252aa
--- /dev/null
+++ b/tests/auto/qstringbuilder/tst_qstringbuilder.cpp
@@ -0,0 +1,48 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#include "../../../src/libs/utils/qstringbuilder.h"
+
+//TESTED_CLASS=QStringBuilder
+//TESTED_FILES=qstringbuilder.h
+
+class tst_QStringBuilder : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QStringBuilder();
+ ~tst_QStringBuilder() {}
+
+public slots:
+ void init() {}
+ void cleanup() {}
+
+private slots:
+ void operator_percent();
+};
+
+
+tst_QStringBuilder::tst_QStringBuilder()
+{
+ //QTextCodec::setCodecForLocale(QTextCodec::codecForName("ISO 8859-1"));
+}
+
+void tst_QStringBuilder::operator_percent()
+{
+ QLatin1Literal l1literal("a literal");
+ QLatin1String l1string("a literal");
+ QLatin1Char l1char('c');
+ QChar qchar(l1char);
+
+ QCOMPARE(QString(l1literal % l1literal), QString(l1string + l1string));
+}
+
+QTEST_APPLESS_MAIN(tst_QStringBuilder)
+
+#include "tst_qstringbuilder.moc"
diff --git a/tests/benchmarks/qstringbuilder/main.cpp b/tests/benchmarks/qstringbuilder/main.cpp
new file mode 100644
index 00000000000..9b2bc99a7cd
--- /dev/null
+++ b/tests/benchmarks/qstringbuilder/main.cpp
@@ -0,0 +1,84 @@
+
+#include <QDebug>
+#include <QString>
+
+#include "../../../src/libs/utils/qstringbuilder.h"
+
+#include <qtest.h>
+
+
+class tst_qstringbuilder : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_qstringbuilder();
+
+private slots:
+ // QStringBuilder based
+ void builderbased_l1literal_l1literal();
+ void builderbased_l1literal_l1literal_l1literal();
+ void builderbased_l1literal_l1literal_l1literal_l1literal();
+
+ // QString based for comparison
+ void stringbased_l1string_l1string();
+ void stringbased_l1string_l1string_l1string();
+ void stringbased_l1string_l1string_l1string_l1string();
+
+private:
+ const QLatin1Literal l1literal;
+ const QLatin1String l1string;
+};
+
+
+tst_qstringbuilder::tst_qstringbuilder()
+ : l1literal("some literal"), l1string("some literal")
+{}
+
+void tst_qstringbuilder::builderbased_l1literal_l1literal()
+{
+ QString result;
+ QBENCHMARK { result = l1literal % l1literal; }
+ QCOMPARE(result, l1string + l1string);
+}
+
+void tst_qstringbuilder::builderbased_l1literal_l1literal_l1literal()
+{
+ QString result;
+ QBENCHMARK { result = l1literal % l1literal % l1literal; }
+ QCOMPARE(result, l1string + l1string + l1string);
+}
+
+void tst_qstringbuilder::builderbased_l1literal_l1literal_l1literal_l1literal()
+{
+ QString result;
+ QBENCHMARK { result = l1literal % l1literal % l1literal % l1literal; }
+ QCOMPARE(result, l1string + l1string + l1string + l1string);
+}
+
+
+
+void tst_qstringbuilder::stringbased_l1string_l1string()
+{
+ QString result;
+ QBENCHMARK { result = l1string + l1string; }
+ QCOMPARE(result, QString(l1literal % l1literal));
+}
+
+void tst_qstringbuilder::stringbased_l1string_l1string_l1string()
+{
+ QString result;
+ QBENCHMARK { result = l1string + l1string + l1string; }
+ QCOMPARE(result, QString(l1literal % l1literal % l1literal));
+}
+
+void tst_qstringbuilder::stringbased_l1string_l1string_l1string_l1string()
+{
+ QString result;
+ QBENCHMARK { result = l1string + l1string + l1string + l1string; }
+ QCOMPARE(result, QString(l1literal % l1literal % l1literal % l1literal));
+}
+
+QTEST_MAIN(tst_qstringbuilder)
+
+#include "main.moc"
diff --git a/tests/benchmarks/qstringbuilder/qstringbuilder.pro b/tests/benchmarks/qstringbuilder/qstringbuilder.pro
new file mode 100644
index 00000000000..81c42bc565d
--- /dev/null
+++ b/tests/benchmarks/qstringbuilder/qstringbuilder.pro
@@ -0,0 +1,12 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qstringbuilder
+DEPENDPATH += .
+INCLUDEPATH += .
+
+QT -= gui
+
+CONFIG += release
+
+# Input
+SOURCES += main.cpp