From 57004b7fda861e1e59a00688a859f30d9a088b4e Mon Sep 17 00:00:00 2001 From: Robin Burchell Date: Tue, 28 Feb 2012 20:49:35 +0100 Subject: [PATCH] Move data generation to initTestCase() method and store the results. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Per the comments on Ie4100a1ca4dbe7bf1cd73de883a9854377ac2f5e, having Q_ASSERT was not a good idea, and data functions can't really handle QVERIFY/QCOMPARE/etc, so do this in initTestCase instead. Change-Id: I19e61dec7fe415bb1fa0f53a2920d99b8c7c8ea7 Reviewed-by: João Abecasis --- tests/benchmarks/corelib/tools/qhash/main.cpp | 136 ++++++++---------- 1 file changed, 61 insertions(+), 75 deletions(-) diff --git a/tests/benchmarks/corelib/tools/qhash/main.cpp b/tests/benchmarks/corelib/tools/qhash/main.cpp index f7c0f66df3..7a871b455c 100644 --- a/tests/benchmarks/corelib/tools/qhash/main.cpp +++ b/tests/benchmarks/corelib/tools/qhash/main.cpp @@ -54,6 +54,7 @@ class tst_QHash : public QObject Q_OBJECT private slots: + void initTestCase(); void qhash_qt4_data() { data(); } void qhash_qt4(); void qhash_faster_data() { data(); } @@ -63,90 +64,75 @@ private slots: private: void data(); + + QStringList smallFilePaths; + QStringList uuids; + QStringList dict; + QStringList numbers; }; ///////////////////// QHash ///////////////////// #include +void tst_QHash::initTestCase() +{ + // small list of file paths + QFile smallPathsData("paths_small_data.txt"); + QVERIFY(smallPathsData.open(QIODevice::ReadOnly)); + smallFilePaths = QString::fromLatin1(smallPathsData.readAll()).split(QLatin1Char('\n')); + QVERIFY(!smallFilePaths.isEmpty()); + + // list of UUIDs + // guaranteed to be completely random, generated by http://xkcd.com/221/ + QUuid ns = QUuid("{f43d2ef3-2fe9-4563-a6f5-5a0100c2d699}"); + uuids.reserve(smallFilePaths.size()); + + foreach (const QString &path, smallFilePaths) + uuids.append(QUuid::createUuidV5(ns, path).toString()); + + + // lots of strings with alphabetical characters, vaguely reminiscent of + // a dictionary. + // + // this programatically generates a series like: + // AAAAAA + // AAAAAB + // AAAAAC + // ... + // AAAAAZ + // AAAABZ + // ... + // AAAAZZ + // AAABZZ + QByteArray id("AAAAAAA"); + + if (dict.isEmpty()) { + for (int i = id.length() - 1; i > 0;) { + dict.append(id); + char c = id.at(i); + id[i] = ++c; + + if (c == 'Z') { + // wrap to next digit + i--; + id[i] = 'A'; + } + } + } + + // string versions of numbers. + for (int i = 5000000; i < 5005001; ++i) + numbers.append(QString::number(i)); +} + void tst_QHash::data() { QTest::addColumn("items"); - static QStringList smallFilePaths; - - { - // small list of file paths - if (smallFilePaths.isEmpty()) { - QFile smallPathsData("paths_small_data.txt"); - QVERIFY(smallPathsData.open(QIODevice::ReadOnly)); - smallFilePaths = QString::fromLatin1(smallPathsData.readAll()).split(QLatin1Char('\n')); - Q_ASSERT(!smallFilePaths.isEmpty()); - } - - QTest::newRow("paths-small") << smallFilePaths; - } - - { - // list of UUIDs - static QStringList uuids; - if (uuids.isEmpty()) { - // guaranteed to be completely random, generated by http://xkcd.com/221/ - QUuid ns = QUuid("{f43d2ef3-2fe9-4563-a6f5-5a0100c2d699}"); - uuids.reserve(smallFilePaths.size()); - - foreach (const QString &path, smallFilePaths) - uuids.append(QUuid::createUuidV5(ns, path).toString()); - } - - QTest::newRow("uuids-list") << uuids; - } - - { - // lots of strings with alphabetical characters, vaguely reminiscent of - // a dictionary. - // - // this programatically generates a series like: - // AAAAAA - // AAAAAB - // AAAAAC - // ... - // AAAAAZ - // AAAABZ - // ... - // AAAAZZ - // AAABZZ - QByteArray id("AAAAAAA"); - static QStringList dict; - - if (dict.isEmpty()) { - for (int i = id.length() - 1; i > 0;) { - dict.append(id); - char c = id.at(i); - id[i] = ++c; - - if (c == 'Z') { - // wrap to next digit - i--; - id[i] = 'A'; - } - } - } - - QTest::newRow("dictionary") << dict; - } - - { - // string versions of numbers. - static QStringList numbers; - - if (numbers.isEmpty()) { - for (int i = 5000000; i < 5005001; ++i) - numbers.append(QString::number(i)); - } - - QTest::newRow("numbers") << numbers; - } - + QTest::newRow("paths-small") << smallFilePaths; + QTest::newRow("uuids-list") << uuids; + QTest::newRow("dictionary") << dict; + QTest::newRow("numbers") << numbers; } void tst_QHash::qhash_qt4()