diff options
author | hjk <qtc-committer@nokia.com> | 2009-04-30 10:01:54 +0200 |
---|---|---|
committer | hjk <qtc-committer@nokia.com> | 2009-04-30 10:01:54 +0200 |
commit | feb34c0e6fde4f04f04476054554a5fef75a32a4 (patch) | |
tree | 5e5e2a7d2c9328b09d5d9d3bb1f76f49b326de34 /tests | |
parent | b72b4142dc201f6de07989628bcc23bd1f03a3e3 (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.pro | 11 | ||||
-rw-r--r-- | tests/auto/qstringbuilder/tst_qstringbuilder.cpp | 48 | ||||
-rw-r--r-- | tests/benchmarks/qstringbuilder/main.cpp | 84 | ||||
-rw-r--r-- | tests/benchmarks/qstringbuilder/qstringbuilder.pro | 12 |
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 |