OSDN Git Service

add QStringList test
authorIvailo Monev <xakepa10@gmail.com>
Sun, 29 Aug 2021 19:24:20 +0000 (22:24 +0300)
committerIvailo Monev <xakepa10@gmail.com>
Sun, 29 Aug 2021 19:24:20 +0000 (22:24 +0300)
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
tests/auto/qstringlist/CMakeLists.txt [new file with mode: 0644]
tests/auto/qstringlist/tst_qstringlist.cpp [new file with mode: 0644]

diff --git a/tests/auto/qstringlist/CMakeLists.txt b/tests/auto/qstringlist/CMakeLists.txt
new file mode 100644 (file)
index 0000000..7f12eb4
--- /dev/null
@@ -0,0 +1,3 @@
+katie_test(tst_qstringlist
+    ${CMAKE_CURRENT_SOURCE_DIR}/tst_qstringlist.cpp
+)
diff --git a/tests/auto/qstringlist/tst_qstringlist.cpp b/tests/auto/qstringlist/tst_qstringlist.cpp
new file mode 100644 (file)
index 0000000..bfaebf6
--- /dev/null
@@ -0,0 +1,315 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Copyright (C) 2016 Ivailo Monev
+**
+** This file is part of the test suite of the Katie Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+**
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qregexp.h>
+#include <qstringlist.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QStringList : public QObject
+{
+    Q_OBJECT
+
+public:
+    tst_QStringList();
+    virtual ~tst_QStringList();
+
+public slots:
+    void init();
+    void cleanup();
+private slots:
+    void filter();
+    void replaceInStrings();
+    void removeDuplicates();
+    void removeDuplicates_data();
+    void contains();
+    void indexOf();
+    void lastIndexOf();
+
+    void indexOf_regExp();
+    void lastIndexOf_regExp();
+
+    void streamingOperator();
+    void join() const;
+    void join_data() const;
+    void joinEmptiness() const;
+
+    void initializeList() const;
+};
+
+extern const char email[];
+
+tst_QStringList::tst_QStringList()
+{
+}
+
+tst_QStringList::~tst_QStringList()
+{
+}
+
+void tst_QStringList::init()
+{
+}
+
+void tst_QStringList::cleanup()
+{
+}
+
+void tst_QStringList::indexOf_regExp()
+{
+    QStringList list;
+    list << "harald" << "trond" << "vohi" << "harald";
+
+    QRegExp re(".*o.*");
+
+    QCOMPARE(list.indexOf(re), 1);
+    QCOMPARE(list.indexOf(re, 2), 2);
+    QCOMPARE(list.indexOf(re, 3), -1);
+
+    QCOMPARE(list.indexOf(QRegExp(".*x.*")), -1);
+    QCOMPARE(list.indexOf(re, -1), -1);
+    QCOMPARE(list.indexOf(re, -3), 1);
+    QCOMPARE(list.indexOf(re, -9999), 1);
+    QCOMPARE(list.indexOf(re, 9999), -1);
+}
+
+void tst_QStringList::lastIndexOf_regExp()
+{
+    QStringList list;
+    list << "harald" << "trond" << "vohi" << "harald";
+
+    QRegExp re(".*o.*");
+
+    QCOMPARE(list.lastIndexOf(re), 2);
+    QCOMPARE(list.lastIndexOf(re, 2), 2);
+    QCOMPARE(list.lastIndexOf(re, 1), 1);
+
+    QCOMPARE(list.lastIndexOf(QRegExp(".*x.*")), -1);
+    QCOMPARE(list.lastIndexOf(re, -1), 2);
+    QCOMPARE(list.lastIndexOf(re, -3), 1);
+    QCOMPARE(list.lastIndexOf(re, -9999), -1);
+    QCOMPARE(list.lastIndexOf(re, 9999), 2);
+}
+
+void tst_QStringList::indexOf()
+{
+    QStringList list;
+    list << "harald" << "trond" << "vohi" << "harald";
+
+    QCOMPARE(list.indexOf("harald"), 0);
+    QCOMPARE(list.indexOf("trond"), 1);
+    QCOMPARE(list.indexOf("vohi"), 2);
+    QCOMPARE(list.indexOf("harald", 1), 3);
+
+    QCOMPARE(list.indexOf("hans"), -1);
+    QCOMPARE(list.indexOf("trond", 2), -1);
+    QCOMPARE(list.indexOf("harald", -1), 3);
+    QCOMPARE(list.indexOf("vohi", -3), 2);
+}
+
+void tst_QStringList::lastIndexOf()
+{
+    QStringList list;
+    list << "harald" << "trond" << "vohi" << "harald";
+
+    QCOMPARE(list.lastIndexOf("harald"), 3);
+    QCOMPARE(list.lastIndexOf("trond"), 1);
+    QCOMPARE(list.lastIndexOf("vohi"), 2);
+    QCOMPARE(list.lastIndexOf("harald", 2), 0);
+
+    QCOMPARE(list.lastIndexOf("hans"), -1);
+    QCOMPARE(list.lastIndexOf("vohi", 1), -1);
+    QCOMPARE(list.lastIndexOf("vohi", -1), 2);
+    QCOMPARE(list.lastIndexOf("vohi", -3), -1);
+}
+
+void tst_QStringList::filter()
+{
+    QStringList list1, list2;
+    list1 << "Bill Gates" << "Joe Blow" << "Bill Clinton";
+    list1 = list1.filter( "Bill" );
+    list2 << "Bill Gates" << "Bill Clinton";
+    QCOMPARE( list1, list2 );
+
+    QStringList list3, list4;
+    list3 << "Bill Gates" << "Joe Blow" << "Bill Clinton";
+    list3 = list3.filter( QRegExp("[i]ll") );
+    list4 << "Bill Gates" << "Bill Clinton";
+    QCOMPARE( list3, list4 );
+}
+
+void tst_QStringList::replaceInStrings()
+{
+    QStringList list1, list2;
+    list1 << "alpha" << "beta" << "gamma" << "epsilon";
+    list1.replaceInStrings( "a", "o" );
+    list2 << "olpho" << "beto" << "gommo" << "epsilon";
+    QCOMPARE( list1, list2 );
+
+    QStringList list3, list4;
+    list3 << "alpha" << "beta" << "gamma" << "epsilon";
+    list3.replaceInStrings( QRegExp("^a"), "o" );
+    list4 << "olpha" << "beta" << "gamma" << "epsilon";
+    QCOMPARE( list3, list4 );
+
+    QStringList list5, list6;
+    list5 << "Bill Clinton" << "Gates, Bill";
+    list6 << "Bill Clinton" << "Bill Gates";
+    list5.replaceInStrings( QRegExp("^(.*), (.*)$"), "\\2 \\1" );
+    QCOMPARE( list5, list6 );
+}
+
+void tst_QStringList::contains()
+{
+    QStringList list;
+    list << "arthur" << "Arthur" << "arthuR" << "ARTHUR" << "Dent" << "Hans Dent";
+
+    QVERIFY(list.contains("arthur"));
+    QVERIFY(!list.contains("ArthuR"));
+    QVERIFY(!list.contains("Hans"));
+    QVERIFY(list.contains("arthur", Qt::CaseInsensitive));
+    QVERIFY(list.contains("ArthuR", Qt::CaseInsensitive));
+    QVERIFY(list.contains("ARTHUR", Qt::CaseInsensitive));
+    QVERIFY(list.contains("dent", Qt::CaseInsensitive));
+    QVERIFY(!list.contains("hans", Qt::CaseInsensitive));
+}
+
+void tst_QStringList::removeDuplicates_data()
+{
+    QTest::addColumn<QString>("before");
+    QTest::addColumn<QString>("after");
+    QTest::addColumn<int>("count");
+
+    QTest::newRow("empty") << "Hello,Hello" << "Hello" << 1;
+    QTest::newRow("empty") << "Hello,World" << "Hello,World" << 0;
+}
+
+void tst_QStringList::removeDuplicates()
+{
+    QFETCH(QString, before);
+    QFETCH(QString, after);
+    QFETCH(int, count);
+
+    QStringList lbefore = before.split(',');
+    QStringList lafter = after.split(',');
+    int removed = lbefore.removeDuplicates();
+
+    QCOMPARE(removed, count);
+    QCOMPARE(lbefore, lafter);
+}
+
+void tst_QStringList::streamingOperator()
+{
+    QStringList list;
+    list << "hei";
+    list << list << "hopp" << list;
+
+    QCOMPARE(list, QStringList()
+            << "hei" << "hei" << "hopp"
+            << "hei" << "hei" << "hopp");
+
+    QStringList list2;
+    list2 << "adam";
+
+    QStringList list3;
+    list3 << "eva";
+
+    QCOMPARE(list2 << list3, QStringList() << "adam" << "eva");
+}
+
+void tst_QStringList::join() const
+{
+    QFETCH(QStringList, input);
+    QFETCH(QString, separator);
+    QFETCH(QString, expectedResult);
+
+    QCOMPARE(input.join(separator), expectedResult);
+}
+
+void tst_QStringList::join_data() const
+{
+    QTest::addColumn<QStringList>("input");
+    QTest::addColumn<QString>("separator");
+    QTest::addColumn<QString>("expectedResult");
+
+    QTest::newRow("")
+                << QStringList()
+                << QString()
+                << QString();
+
+    QTest::newRow("")
+                << QStringList()
+                << QString(QLatin1String("separator"))
+                << QString();
+
+    QTest::newRow("")
+                << QStringList("one")
+                << QString(QLatin1String("separator"))
+                << QString("one");
+
+    QTest::newRow("")
+                << QStringList("one")
+                << QString(QLatin1String("separator"))
+                << QString("one");
+
+
+    QTest::newRow("")
+                << (QStringList()
+                        << QLatin1String("a")
+                        << QLatin1String("b"))
+                << QString(QLatin1String(" "))
+                << QString("a b");
+
+    QTest::newRow("")
+                << (QStringList()
+                        << QLatin1String("a")
+                        << QLatin1String("b")
+                        << QLatin1String("c"))
+                << QString(QLatin1String(" "))
+                << QString("a b c");
+}
+
+void tst_QStringList::joinEmptiness() const
+{
+    QStringList list;
+    QString string = list.join(QString());
+
+    QVERIFY(string.isEmpty());
+    QVERIFY(string.isNull());
+}
+
+void tst_QStringList::initializeList() const
+{
+#ifdef Q_COMPILER_INITIALIZER_LISTS
+    QStringList v1{QLatin1String("hello"),"world",QString::fromLatin1("plop")};
+    QCOMPARE(v1, (QStringList() << "hello" << "world" << "plop"));
+    QCOMPARE(v1, (QStringList{"hello","world","plop"}));
+#else
+    QSKIP("Require C++0x support, pass the right flag to the compiler", SkipAll);
+#endif
+}
+
+QTEST_APPLESS_MAIN(tst_QStringList)
+
+#include "moc_tst_qstringlist.cpp"