From a9aa206b7b8ac4e69f8c46233b4080e00e845ff5 Mon Sep 17 00:00:00 2001 From: Edward Welbourne Date: Mon, 27 May 2019 19:13:54 +0200 Subject: Move text-related code out of corelib/tools/ to corelib/text/ This includes byte array, string, char, unicode, locale, collation and regular expressions. Change-Id: I8b125fa52c8c513eb57a0f1298b91910e5a0d786 Reviewed-by: Volker Hilsheimer --- .../corelib/text/qbytearraylist/qbytearraylist.pro | 4 + .../text/qbytearraylist/tst_qbytearraylist.cpp | 301 +++++++++++++++++++++ 2 files changed, 305 insertions(+) create mode 100644 tests/auto/corelib/text/qbytearraylist/qbytearraylist.pro create mode 100644 tests/auto/corelib/text/qbytearraylist/tst_qbytearraylist.cpp (limited to 'tests/auto/corelib/text/qbytearraylist') diff --git a/tests/auto/corelib/text/qbytearraylist/qbytearraylist.pro b/tests/auto/corelib/text/qbytearraylist/qbytearraylist.pro new file mode 100644 index 0000000000..6c05c288cf --- /dev/null +++ b/tests/auto/corelib/text/qbytearraylist/qbytearraylist.pro @@ -0,0 +1,4 @@ +CONFIG += testcase +TARGET = tst_qbytearraylist +QT = core testlib +SOURCES = tst_qbytearraylist.cpp diff --git a/tests/auto/corelib/text/qbytearraylist/tst_qbytearraylist.cpp b/tests/auto/corelib/text/qbytearraylist/tst_qbytearraylist.cpp new file mode 100644 index 0000000000..09ce41337e --- /dev/null +++ b/tests/auto/corelib/text/qbytearraylist/tst_qbytearraylist.cpp @@ -0,0 +1,301 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2014 by Southwest Research Institute (R) +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include + +#include + +Q_DECLARE_METATYPE(QByteArrayList) + +class tst_QByteArrayList : public QObject +{ + Q_OBJECT +private slots: + void join() const; + void join_data() const; + void joinByteArray() const; + void joinByteArray_data() const; + void joinChar() const; + void joinChar_data() const; + void joinEmptiness() const; + + void operator_plus() const; + void operator_plus_data() const; + + void indexOf_data() const; + void indexOf() const; + + void initializerList() const; +}; + +void tst_QByteArrayList::join() const +{ + QFETCH(QByteArrayList, input); + QFETCH(QByteArray, expectedResult); + + QCOMPARE(input.join(), expectedResult); +} + +void tst_QByteArrayList::join_data() const +{ + QTest::addColumn("input"); + QTest::addColumn("expectedResult"); + + QTest::newRow("data1") << QByteArrayList() + << QByteArray(); + + QTest::newRow("data2") << (QByteArrayList() << "one") + << QByteArray("one"); + + QTest::newRow("data3") << (QByteArrayList() << "a" << "b") + << QByteArray("ab"); + + QTest::newRow("data4") << (QByteArrayList() << "a" << "b" << "c") + << QByteArray("abc"); +} + +void tst_QByteArrayList::joinByteArray() const +{ + QFETCH(QByteArrayList, input); + QFETCH(QByteArray, separator); + QFETCH(QByteArray, expectedResult); + + QCOMPARE(input.join(separator), expectedResult); +} + +void tst_QByteArrayList::joinByteArray_data() const +{ + QTest::addColumn("input"); + QTest::addColumn("separator"); + QTest::addColumn("expectedResult"); + + QTest::newRow("data1") << QByteArrayList() + << QByteArray() + << QByteArray(); + + QTest::newRow("data2") << QByteArrayList() + << QByteArray("separator") + << QByteArray(); + + QTest::newRow("data3") << (QByteArrayList() << "one") + << QByteArray("separator") + << QByteArray("one"); + + QTest::newRow("data4") << (QByteArrayList() << "a" << "b") + << QByteArray(" ") + << QByteArray("a b"); + + QTest::newRow("data5") << (QByteArrayList() << "a" << "b" << "c") + << QByteArray(" ") + << QByteArray("a b c"); + + QTest::newRow("data6") << (QByteArrayList() << "a" << "b" << "c") + << QByteArray() + << QByteArray("abc"); + + QTest::newRow("data7") << (QByteArrayList() << "a" << "b" << "c") + << QByteArray("") //empty + << QByteArray("abc"); +} + +void tst_QByteArrayList::joinChar() const +{ + QFETCH(QByteArrayList, input); + QFETCH(char, separator); + QFETCH(QByteArray, expectedResult); + + QCOMPARE(input.join(separator), expectedResult); +} + +void tst_QByteArrayList::joinChar_data() const +{ + QTest::addColumn("input"); + QTest::addColumn("separator"); + QTest::addColumn("expectedResult"); + + QTest::newRow("data1") << QByteArrayList() + << ' ' + << QByteArray(); + + QTest::newRow("data2") << (QByteArrayList() << "a a" << "b") + << ' ' + << QByteArray("a a b"); + + QTest::newRow("data3") << (QByteArrayList() << "a" << "b" << "c c") + << ' ' + << QByteArray("a b c c"); +} + +void tst_QByteArrayList::joinEmptiness() const +{ + QByteArrayList list; + QByteArray string = list.join(QByteArray()); + + QVERIFY(string.isEmpty()); + QVERIFY(string.isNull()); +} + +void tst_QByteArrayList::operator_plus() const +{ + QFETCH(QByteArrayList, lhs); + QFETCH(QByteArrayList, rhs); + QFETCH(QByteArrayList, expectedResult); + + // operator+ for const lvalues + { + const QByteArrayList bal1 = lhs; + const QByteArrayList bal2 = rhs; + QCOMPARE(bal1 + bal2, expectedResult); + } + { + const QList lba1 = lhs; + const QByteArrayList bal2 = rhs; + QCOMPARE(lba1 + bal2, expectedResult); + } + { + const QByteArrayList bal1 = lhs; + const QList lba2 = rhs; + QCOMPARE(bal1 + lba2, expectedResult); + } + { + const QList lba1 = lhs; + const QList lba2 = rhs; + QCOMPARE(lba1 + lba2, QList(expectedResult)); // check we don't mess with old code + } + + // operator+ for rvalues (only lhs) + { + QByteArrayList bal1 = lhs; + const QByteArrayList bal2 = rhs; + QCOMPARE(std::move(bal1) + bal2, expectedResult); + } + { + QList lba1 = lhs; + const QByteArrayList bal2 = rhs; + QCOMPARE(std::move(lba1) + bal2, expectedResult); + } + { + QByteArrayList bal1 = lhs; + const QList lba2 = rhs; + QCOMPARE(std::move(bal1) + lba2, expectedResult); + } + { + QList lba1 = lhs; + const QList lba2 = rhs; + QCOMPARE(std::move(lba1) + lba2, QList(expectedResult)); // check we don't mess with old code + } + + // operator += for const lvalues + { + QByteArrayList bal1 = lhs; + const QByteArrayList bal2 = rhs; + QCOMPARE(bal1 += bal2, expectedResult); + } + { + QByteArrayList bal1 = lhs; + const QList lba2 = rhs; + QCOMPARE(bal1 += lba2, expectedResult); + } + { + QList lba1 = lhs; + const QByteArrayList bal2 = rhs; + QCOMPARE(lba1 += bal2, QList(expectedResult)); + } + + QByteArrayList t1 = lhs; + QByteArrayList t2 = rhs; + + QCOMPARE(std::move(t1) + t2, expectedResult); +} + +void tst_QByteArrayList::operator_plus_data() const +{ + QTest::addColumn("lhs"); + QTest::addColumn("rhs"); + QTest::addColumn("expectedResult"); + + QTest::newRow("simpl") << ( QByteArrayList() << "a" ) + << ( QByteArrayList() << "b" << "c" ) + << ( QByteArrayList() << "a" << "b" << "c" ); + + QTest::newRow("blank1") << QByteArrayList() + << QByteArrayList() + << QByteArrayList(); + + QTest::newRow("blank2") << ( QByteArrayList() ) + << ( QByteArrayList() << "b" << "c" ) + << ( QByteArrayList() << "b" << "c" ); + + QTest::newRow("empty1") << ( QByteArrayList() << "" ) + << ( QByteArrayList() << "b" << "c" ) + << ( QByteArrayList() << "" << "b" << "c" ); + + QTest::newRow("empty2") << ( QByteArrayList() << "a" ) + << ( QByteArrayList() << "" << "c" ) + << ( QByteArrayList() << "a" << "" << "c" ); +} + +void tst_QByteArrayList::indexOf_data() const +{ + QTest::addColumn("list"); + QTest::addColumn("item"); + QTest::addColumn("expectedResult"); + + QTest::newRow("empty") << QByteArrayList() << QByteArray("a") << -1; + QTest::newRow("found_1") << ( QByteArrayList() << "a" ) << QByteArray("a") << 0; + QTest::newRow("not_found_1") << ( QByteArrayList() << "a" ) << QByteArray("b") << -1; + QTest::newRow("found_2") << ( QByteArrayList() << "hello" << "world" ) << QByteArray("world") << 1; + QTest::newRow("returns_first") << ( QByteArrayList() << "hello" << "world" << "hello" << "again" ) << QByteArray("hello") << 0; +} + +void tst_QByteArrayList::indexOf() const +{ + QFETCH(QByteArrayList, list); + QFETCH(QByteArray, item); + QFETCH(int, expectedResult); + + QCOMPARE(list.indexOf(item), expectedResult); + QCOMPARE(list.indexOf(item.constData()), expectedResult); +} + +void tst_QByteArrayList::initializerList() const +{ + // constructor + QByteArrayList v1 = {QByteArray("hello"),"world",QByteArray("plop")}; + QCOMPARE(v1, (QByteArrayList() << "hello" << "world" << "plop")); + QCOMPARE(v1, (QByteArrayList{"hello","world","plop"})); + // assignment operator (through implicit temporary) + QByteArrayList v2; + v2 = {QByteArray("hello"),"world",QByteArray("plop")}; + QCOMPARE(v2, v1); +} + +QTEST_APPLESS_MAIN(tst_QByteArrayList) +#include "tst_qbytearraylist.moc" -- cgit v1.2.3