diff options
Diffstat (limited to 'tests/auto/corelib')
17 files changed, 2 insertions, 1438 deletions
diff --git a/tests/auto/corelib/global/qrandomgenerator/tst_qrandomgenerator.cpp b/tests/auto/corelib/global/qrandomgenerator/tst_qrandomgenerator.cpp index 6f9dcc08f9..f997a40119 100644 --- a/tests/auto/corelib/global/qrandomgenerator/tst_qrandomgenerator.cpp +++ b/tests/auto/corelib/global/qrandomgenerator/tst_qrandomgenerator.cpp @@ -27,7 +27,6 @@ ****************************************************************************/ #include <QtTest> -#include <qlinkedlist.h> #include <qobject.h> #include <qrandom.h> #include <qvector.h> diff --git a/tests/auto/corelib/kernel/qmetatype/qmetatype.pro b/tests/auto/corelib/kernel/qmetatype/qmetatype.pro index 4856b138c3..56b8c071c3 100644 --- a/tests/auto/corelib/kernel/qmetatype/qmetatype.pro +++ b/tests/auto/corelib/kernel/qmetatype/qmetatype.pro @@ -5,7 +5,6 @@ INCLUDEPATH += $$PWD/../../../other/qvariant_common SOURCES = tst_qmetatype.cpp TESTDATA=./typeFlags.bin DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 -DEFINES -= QT_NO_LINKED_LIST msvc|winrt { # Prevents "fatal error C1128: number of sections exceeded object file format limit". diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp index 4e30f210b1..73cebb7f4a 100644 --- a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp +++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp @@ -1742,7 +1742,6 @@ void tst_QMetaType::automaticTemplateRegistration() #define FOR_EACH_1ARG_TEMPLATE_TYPE(F, TYPE) \ F(QList, TYPE) \ F(QVector, TYPE) \ - F(QLinkedList, TYPE) \ F(QVector, TYPE) \ F(QVector, TYPE) \ F(QQueue, TYPE) \ diff --git a/tests/auto/corelib/kernel/qvariant/qvariant.pro b/tests/auto/corelib/kernel/qvariant/qvariant.pro index 0b5280df86..a620be0091 100644 --- a/tests/auto/corelib/kernel/qvariant/qvariant.pro +++ b/tests/auto/corelib/kernel/qvariant/qvariant.pro @@ -5,7 +5,6 @@ INCLUDEPATH += $$PWD/../../../other/qvariant_common SOURCES = tst_qvariant.cpp RESOURCES += qvariant.qrc DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 -DEFINES -= QT_NO_LINKED_LIST qtConfig(c++14): CONFIG += c++14 qtConfig(c++1z): CONFIG += c++1z !qtConfig(doubleconversion):!qtConfig(system-doubleconversion) { diff --git a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp index b8baa1cde1..265ae166c1 100644 --- a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp +++ b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp @@ -49,7 +49,6 @@ #if __has_include(<variant>) && __cplusplus >= 201703L #include <variant> #endif -#include <QLinkedList> #include <QRegularExpression> #include <QDir> #include <QBuffer> @@ -3521,13 +3520,6 @@ void tst_QVariant::moreCustomTypes() data << (QSet<int>() << 42); PLAY_WITH_VARIANT(data, false, QString(), 0, false); } - - { - QList<QLinkedList<int> > data; - PLAY_WITH_VARIANT(data, false, QString(), 0, false); - data << (QLinkedList<int>() << 42); - PLAY_WITH_VARIANT(data, false, QString(), 0, false); - } } void tst_QVariant::movabilityTest() diff --git a/tests/auto/corelib/serialization/qdatastream/qdatastream.pro b/tests/auto/corelib/serialization/qdatastream/qdatastream.pro index 469d689f3f..25f8b889a0 100644 --- a/tests/auto/corelib/serialization/qdatastream/qdatastream.pro +++ b/tests/auto/corelib/serialization/qdatastream/qdatastream.pro @@ -3,8 +3,6 @@ TARGET = tst_qdatastream QT += testlib SOURCES = tst_qdatastream.cpp -DEFINES -= QT_NO_LINKED_LIST - TESTDATA += datastream.q42 android:!android-embedded { diff --git a/tests/auto/corelib/serialization/qdatastream/tst_qdatastream.cpp b/tests/auto/corelib/serialization/qdatastream/tst_qdatastream.cpp index 2f812a9952..d777d69d3c 100644 --- a/tests/auto/corelib/serialization/qdatastream/tst_qdatastream.cpp +++ b/tests/auto/corelib/serialization/qdatastream/tst_qdatastream.cpp @@ -186,7 +186,7 @@ private slots: void status_QHash_QMap(); - void status_QLinkedList_QList_QVector(); + void status_QList_QVector(); void streamToAndFromQByteArray(); @@ -3172,24 +3172,6 @@ void tst_QDataStream::status_QHash_QMap() } \ } \ { \ - LinkedList expectedLinkedList; \ - for (int i = 0; i < expectedList.count(); ++i) \ - expectedLinkedList << expectedList.at(i); \ - QByteArray ba = byteArray; \ - QDataStream stream(&ba, QIODevice::ReadOnly); \ - if (inTransaction) \ - stream.startTransaction(); \ - stream.setStatus(initialStatus); \ - stream >> linkedList; \ - QCOMPARE((int)stream.status(), (int)expectedStatus); \ - if (!inTransaction || stream.commitTransaction()) { \ - QCOMPARE(linkedList.size(), expectedLinkedList.size()); \ - QCOMPARE(linkedList, expectedLinkedList); \ - } else { \ - QVERIFY(linkedList.isEmpty()); \ - } \ - } \ - { \ Vector expectedVector; \ for (int i = 0; i < expectedList.count(); ++i) \ expectedVector << expectedList.at(i); \ @@ -3211,12 +3193,10 @@ void tst_QDataStream::status_QHash_QMap() break; \ } -void tst_QDataStream::status_QLinkedList_QList_QVector() +void tst_QDataStream::status_QList_QVector() { - typedef QLinkedList<QString> LinkedList; typedef QList<QString> List; typedef QVector<QString> Vector; - LinkedList linkedList; List list; Vector vector; diff --git a/tests/auto/corelib/tools/CMakeLists.txt b/tests/auto/corelib/tools/CMakeLists.txt index 534bd7928a..f1967c3664 100644 --- a/tests/auto/corelib/tools/CMakeLists.txt +++ b/tests/auto/corelib/tools/CMakeLists.txt @@ -17,7 +17,6 @@ add_subdirectory(qhash) # add_subdirectory(qhash_strictiterators) # special case not ported add_subdirectory(qhashfunctions) # add_subdirectory(qline) # special case not ported -add_subdirectory(qlinkedlist) # add_subdirectory(qlist) # special case no longer exists # add_subdirectory(qlist_strictiterators) # special case not ported add_subdirectory(qmakearray) diff --git a/tests/auto/corelib/tools/collections/collections.pro b/tests/auto/corelib/tools/collections/collections.pro index d5e4e226b5..0182a0c837 100644 --- a/tests/auto/corelib/tools/collections/collections.pro +++ b/tests/auto/corelib/tools/collections/collections.pro @@ -4,5 +4,4 @@ SOURCES += tst_collections.cpp QT = core testlib # This test does not work with strict iterators -DEFINES -= QT_NO_LINKED_LIST DEFINES -= QT_NO_JAVA_STYLE_ITERATORS diff --git a/tests/auto/corelib/tools/collections/tst_collections.cpp b/tests/auto/corelib/tools/collections/tst_collections.cpp index f319244bd3..6fcf726c21 100644 --- a/tests/auto/corelib/tools/collections/tst_collections.cpp +++ b/tests/auto/corelib/tools/collections/tst_collections.cpp @@ -32,7 +32,6 @@ static QCache<int, int> *cacheX; static QHash<int, int> *hashX; -static QLinkedList<int> *linkedListX; static QList<int> *listX; static QMap<int, int> *mapX; static QMultiHash<int, int> *multiHashX; @@ -49,7 +48,6 @@ void foo() { cacheX = 0; hashX = 0; - linkedListX = 0; listX = 0; mapX = 0; multiHashX = 0; @@ -71,7 +69,6 @@ void foo() #include "qbytearray.h" #include "qcache.h" #include "qhash.h" -#include "qlinkedlist.h" #include "qlist.h" #include "qmap.h" #include "qpair.h" @@ -92,7 +89,6 @@ private slots: void typeinfo(); void qstring(); void list(); - void linkedList(); void vector(); void byteArray(); void stack(); @@ -105,7 +101,6 @@ private slots: #endif void pair(); void sharableQList(); - void sharableQLinkedList(); void sharableQVector(); void sharableQMap(); void sharableQHash(); @@ -117,8 +112,6 @@ private slots: void vector_stl(); void list_stl_data(); void list_stl(); - void linkedlist_stl_data(); - void linkedlist_stl(); void q_init(); void pointersize(); void containerInstantiation(); @@ -725,228 +718,6 @@ void tst_Collections::list() } } -void tst_Collections::linkedList() -{ - { - QLinkedList<int> list; - QVERIFY(list.isEmpty()); - list.append(1); - list.push_back(2); - list += (3); - list << 4 << 5 << 6; - QVERIFY(!list.isEmpty()); - QVERIFY(list.size() == 6); - { - int sum = 0; - QLinkedListIterator<int> i = list; - while (i.hasNext()) { - sum += i.next(); - } - QVERIFY(sum == 21); - } - { - int sum = 0; - QLinkedList<int>::const_iterator i = list.begin(); - while (i != list.end()) - sum += *i++; - QVERIFY(sum == 21); - } - { - QMutableLinkedListIterator<int> i = list; - while (i.hasNext()) - i.setValue(2*i.next()); - } - { - int sum = 0; - QLinkedListIterator<int> i = list; - i.toBack(); - while (i.hasPrevious()) - sum += i.previous(); - QVERIFY(sum == 2*21); - } - { - QMutableLinkedListIterator<int> i = list; - i.toBack(); - while (i.hasPrevious()) - i.setValue(2*i.previous()); - } - { - int sum = 0; - QLinkedListIterator<int> i = list; - i.toBack(); - while (i.hasPrevious()) - sum += i.previous(); - QVERIFY(sum == 2*2*21); - } - { - QMutableLinkedListIterator<int> i = list; - while (i.hasNext()) { - int a = i.next(); - i.insert(a); - } - } - { - int sum = 0; - QLinkedList<int>::iterator i = list.begin(); - while (i != list.end()) - sum += *i++; - QVERIFY(sum == 2*2*2*21); - } - { - int duplicates = 0; - QLinkedListIterator<int> i = list; - while (i.hasNext()) { - int a = i.next(); - if (i.hasNext() && a == i.peekNext()) - duplicates++; - } - QVERIFY(duplicates == 6); - } - { - int duplicates = 0; - QLinkedListIterator<int> i = list; - i.toBack(); - while (i.hasPrevious()) { - int a = i.previous(); - if (i.hasPrevious() && a == i.peekPrevious()) - duplicates++; - } - QVERIFY(duplicates == 6); - } - { - QMutableLinkedListIterator<int> i = list; - while (i.hasNext()) { - int a = i.next(); - if (i.hasNext() && - i.peekNext() == a) - i.remove(); - } - } - { - int duplicates = 0; - QMutableLinkedListIterator<int> i = list; - i.toBack(); - while (i.hasPrevious()) { - int a = i.previous(); - if (i.hasPrevious() && a == i.peekPrevious()) - duplicates++; - } - QVERIFY(duplicates == 0); - } - { - QVERIFY(list.size() == 6); - QMutableLinkedListIterator<int> i = list; - while (i.hasNext()) { - int a = i.peekNext(); - i.insert(42); - QVERIFY(i.peekPrevious() == 42 && i.peekNext() == a); - i.next(); - } - QVERIFY(list.size() == 12); - i.toFront(); - while (i.findNext(42)) - i.remove(); - } - { - QLinkedList<int> l; - l << 4 << 8 << 12 << 16 << 20 << 24; - QVERIFY(l == list); - QLinkedList<int> copy = list; - list += list; - QVERIFY(l != list && l.size() == list.size()/2 && l == copy); - l += copy; - QVERIFY(l == list); - list = copy; - } - { - QLinkedList<int> copy = list; - list.prepend(999); - list.append(999); - QVERIFY(list.contains(999)); - QVERIFY(list.count(999) == 2); - list.removeAll(999); - QVERIFY(list == copy); - } - { - QLinkedList<QString> list; - list << "one" << "two" << "three" << "four" << "five" << "six"; - while (!list.isEmpty()) - list.removeAll(list.first()); - } - { - QLinkedList<QString> list; - list << "one" << "two" << "one" << "two"; - QVERIFY(!list.removeOne("three")); - QVERIFY(list.removeOne("two")); - QCOMPARE(list, QLinkedList<QString>() << "one" << "one" << "two");; - QVERIFY(list.removeOne("two")); - QCOMPARE(list, QLinkedList<QString>() << "one" << "one"); - QVERIFY(!list.removeOne("two")); - QCOMPARE(list, QLinkedList<QString>() << "one" << "one"); - QVERIFY(list.removeOne("one")); - QCOMPARE(list, QLinkedList<QString>() << "one"); - QVERIFY(list.removeOne("one")); - QVERIFY(list.isEmpty()); - QVERIFY(!list.removeOne("one")); - QVERIFY(list.isEmpty()); - } - { - list.clear(); - QVERIFY(list.isEmpty()); - QVERIFY(list.begin() == list.end()); - QLinkedListIterator<int> i(list); - QVERIFY(!i.hasNext() && !i.hasPrevious()); - } - } - - { - QLinkedList<QString> list; - list.append("Hello"); - - QLinkedList<QString>::iterator it = list.begin(); - QVERIFY((*it)[0] == QChar('H')); - QVERIFY(it->constData()[0] == QChar('H')); - it->replace(QChar('H'), QChar('X')); - QCOMPARE(list.first(), QLatin1String("Xello")); - - QLinkedList<QString>::const_iterator cit = list.constBegin(); - QCOMPARE((*cit).toLower(), QLatin1String("xello")); - QCOMPARE(cit->toUpper(), QLatin1String("XELLO")); - - cit = list.cbegin(); - QCOMPARE((*cit).toLower(), QLatin1String("xello")); - QCOMPARE(cit->toUpper(), QLatin1String("XELLO")); - } - - { - QLinkedList<QString> list; - list << "alpha" << "beta"; - list += list; - QVERIFY(list.size() == 4); - QCOMPARE(*list.begin(), QLatin1String("alpha")); - QCOMPARE(*(list.begin() + 1), QLatin1String("beta")); - QCOMPARE(*(list.begin() + 2), QLatin1String("alpha")); - QCOMPARE(*(list.begin() + 3), QLatin1String("beta")); - } - - { - QLinkedList<int> a; - QCOMPARE(a.startsWith(1), false); - QCOMPARE(a.endsWith(1), false); - a.append(1); - QCOMPARE(a.startsWith(1), true); - QCOMPARE(a.startsWith(2), false); - QCOMPARE(a.endsWith(1), true); - QCOMPARE(a.endsWith(2), false); - a.append(2); - QCOMPARE(a.startsWith(1), true); - QCOMPARE(a.startsWith(2), false); - QCOMPARE(a.endsWith(1), false); - QCOMPARE(a.endsWith(2), true); - } -}; - - void tst_Collections::vector() { QVector<int> v1; @@ -2311,12 +2082,6 @@ void populate(QList<int> &container) } template <> -void populate(QLinkedList<int> &container) -{ - container << 1 << 2 << 4 << 8; -} - -template <> void populate(QMap<int, int> &container) { container.insert(1, 1); @@ -2405,11 +2170,6 @@ void tst_Collections::sharableQList() TEST_SEQUENTIAL_CONTAINER(List); } -void tst_Collections::sharableQLinkedList() -{ - TEST_SEQUENTIAL_CONTAINER(LinkedList); -} - void tst_Collections::sharableQVector() { TEST_SEQUENTIAL_CONTAINER(Vector); @@ -2729,7 +2489,6 @@ void tst_Collections::constAndNonConstStlIterators() { testListLikeStlIterators<QList<int> >(); testListLikeStlIterators<QStringList >(); - testLinkedListLikeStlIterators<QLinkedList<int> >(); testListLikeStlIterators<QVector<int> >(); testMapLikeStlIterators<QMap<QString, QString> >(); testMapLikeStlIterators<QMultiMap<QString, QString> >(); @@ -2772,31 +2531,6 @@ void tst_Collections::vector_stl() QCOMPARE(QVector<QString>(stdVector.begin(), stdVector.end()), vector); } -void tst_Collections::linkedlist_stl_data() -{ - list_stl_data(); -} - -void tst_Collections::linkedlist_stl() -{ - QFETCH(QStringList, elements); - - QLinkedList<QString> list; - for (int i = 0; i < elements.count(); ++i) - list << elements.at(i); - - std::list<QString> stdList = list.toStdList(); - - QCOMPARE(int(stdList.size()), elements.size()); - - std::list<QString>::const_iterator it = stdList.begin(); - QLinkedList<QString>::const_iterator it2 = list.cbegin(); - for (uint j = 0; j < stdList.size(); ++j, ++it, ++it2) - QCOMPARE(*it, *it2); - - QCOMPARE(QLinkedList<QString>::fromStdList(stdList), list); -} - void tst_Collections::list_stl_data() { QTest::addColumn<QStringList>("elements"); @@ -3038,15 +2772,6 @@ void tst_Collections::containerInstantiation() typedef QSet<EqualsComparable> Set; instantiateAssociative<Set, EqualsComparable>(); - //Instantiate QLinkedList member functions. - typedef QLinkedList<EqualsComparable> LinkedList; - instantiateSequence<LinkedList, EqualsComparable> (); - { - EqualsComparable value; - LinkedList list; - list.removeAll(value); - } - //Instantiate QList member functions. typedef QList<EqualsComparable> List; instantiateRandomAccess<List, EqualsComparable>(); @@ -3153,7 +2878,6 @@ void tst_Collections::containerTypedefs() testContainerTypedefs(QVector<int>()); testContainerTypedefs(QStack<int>()); testContainerTypedefs(QList<int>()); - testContainerTypedefs(QLinkedList<int>()); testContainerTypedefs(QQueue<int>()); testPairAssociativeContainerTypedefs(QMap<int, int>()); @@ -3175,7 +2899,6 @@ void tst_Collections::forwardDeclared() { typedef QMultiMap<Key1, T1> C; C *x = 0; C::iterator i; C::const_iterator j; Q_UNUSED(x) } { typedef QPair<T1, T2> C; C *x = 0; Q_UNUSED(x) } { typedef QList<T1> C; C *x = 0; C::iterator i; C::const_iterator j; Q_UNUSED(x) } - { typedef QLinkedList<T1> C; C *x = 0; C::iterator i; C::const_iterator j; Q_UNUSED(x) } { typedef QVector<T1> C; C *x = 0; C::iterator i; C::const_iterator j; Q_UNUSED(x) Q_UNUSED(i) Q_UNUSED(j) } { typedef QStack<T1> C; C *x = 0; C::iterator i; C::const_iterator j; Q_UNUSED(x) Q_UNUSED(i) Q_UNUSED(j) } { typedef QQueue<T1> C; C *x = 0; C::iterator i; C::const_iterator j; Q_UNUSED(x) } @@ -3400,7 +3123,6 @@ void tst_Collections::QTBUG13079_collectionInsideCollection() QTBUG13079_collectionInsideCollectionImpl<QVector>(); QTBUG13079_collectionInsideCollectionImpl<QStack>(); QTBUG13079_collectionInsideCollectionImpl<QList>(); - QTBUG13079_collectionInsideCollectionImpl<QLinkedList>(); QTBUG13079_collectionInsideCollectionImpl<QQueue>(); { diff --git a/tests/auto/corelib/tools/containerapisymmetry/containerapisymmetry.pro b/tests/auto/corelib/tools/containerapisymmetry/containerapisymmetry.pro index efdb7fc2df..c114014bf4 100644 --- a/tests/auto/corelib/tools/containerapisymmetry/containerapisymmetry.pro +++ b/tests/auto/corelib/tools/containerapisymmetry/containerapisymmetry.pro @@ -2,5 +2,3 @@ CONFIG += testcase TARGET = tst_containerapisymmetry SOURCES += tst_containerapisymmetry.cpp QT = core testlib - -DEFINES -= QT_NO_LINKED_LIST diff --git a/tests/auto/corelib/tools/containerapisymmetry/tst_containerapisymmetry.cpp b/tests/auto/corelib/tools/containerapisymmetry/tst_containerapisymmetry.cpp index 0e4517e740..fe6e82e19c 100644 --- a/tests/auto/corelib/tools/containerapisymmetry/tst_containerapisymmetry.cpp +++ b/tests/auto/corelib/tools/containerapisymmetry/tst_containerapisymmetry.cpp @@ -29,7 +29,6 @@ #include <QtTest/QtTest> #include "qbytearray.h" -#include "qlinkedlist.h" #include "qlist.h" #include "qstring.h" #include "qvarlengtharray.h" @@ -324,11 +323,6 @@ private Q_SLOTS: #endif } - void ranged_ctor_QLinkedList_int() { ranged_ctor_non_associative_impl<QLinkedList<int>>(); } - void ranged_ctor_QLinkedList_Movable() { ranged_ctor_non_associative_impl<QLinkedList<Movable>>(); } - void ranged_ctor_QLinkedList_Complex() { ranged_ctor_non_associative_impl<QLinkedList<Complex>>(); } - void ranged_ctor_QLinkedList_duplicates_strategy() { non_associative_container_duplicates_strategy<QLinkedList>(); } - void ranged_ctor_std_set_int() { ranged_ctor_non_associative_impl<std::set<int>>(); } void ranged_ctor_std_set_Movable() { ranged_ctor_non_associative_impl<std::set<Movable>>(); } void ranged_ctor_std_set_Complex() { ranged_ctor_non_associative_impl<std::set<Complex>>(); } @@ -482,7 +476,6 @@ private Q_SLOTS: void front_back_std_vector() { front_back_impl<std::vector<int>>(); } void front_back_QVector() { front_back_impl<QVector<int>>(); } void front_back_QList() { front_back_impl<QList<qintptr>>(); } - void front_back_QLinkedList() { front_back_impl<QLinkedList<int>>(); } void front_back_QVarLengthArray() { front_back_impl<QVarLengthArray<int>>(); } void front_back_QString() { front_back_impl<QString>(); } void front_back_QStringRef() { front_back_impl<QStringRef>(); } @@ -587,9 +580,6 @@ template<typename ... T> struct ContainerDuplicatedValuesStrategy<std::forward_list<T...>> : ContainerAcceptsDuplicateValues {}; #endif -template<typename ... T> -struct ContainerDuplicatedValuesStrategy<QLinkedList<T...>> : ContainerAcceptsDuplicateValues {}; - // assuming https://cplusplus.github.io/LWG/lwg-active.html#2844 resolution template<typename ... T> struct ContainerDuplicatedValuesStrategy<std::set<T...>> : ContainerRejectsDuplicateValues {}; diff --git a/tests/auto/corelib/tools/qlinkedlist/.prev_CMakeLists.txt b/tests/auto/corelib/tools/qlinkedlist/.prev_CMakeLists.txt deleted file mode 100644 index 7124e17d17..0000000000 --- a/tests/auto/corelib/tools/qlinkedlist/.prev_CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -# Generated from qlinkedlist.pro. - -##################################################################### -## tst_qlinkedlist Test: -##################################################################### - -add_qt_test(tst_qlinkedlist - SOURCES - tst_qlinkedlist.cpp - DEFINES - -QT_NO_LINKED_LIST -) - -## Scopes: -##################################################################### diff --git a/tests/auto/corelib/tools/qlinkedlist/CMakeLists.txt b/tests/auto/corelib/tools/qlinkedlist/CMakeLists.txt deleted file mode 100644 index 2042739fa0..0000000000 --- a/tests/auto/corelib/tools/qlinkedlist/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -# Generated from qlinkedlist.pro. - -##################################################################### -## tst_qlinkedlist Test: -##################################################################### - -add_qt_test(tst_qlinkedlist - SOURCES - tst_qlinkedlist.cpp - #DEFINES # special case remove - #-QT_NO_LINKED_LIST # special case remove until fixed -) - -## Scopes: -##################################################################### diff --git a/tests/auto/corelib/tools/qlinkedlist/qlinkedlist.pro b/tests/auto/corelib/tools/qlinkedlist/qlinkedlist.pro deleted file mode 100644 index c53d553d6d..0000000000 --- a/tests/auto/corelib/tools/qlinkedlist/qlinkedlist.pro +++ /dev/null @@ -1,7 +0,0 @@ -CONFIG += testcase -TARGET = tst_qlinkedlist -QT = core testlib -qtConfig(c++14): CONFIG += c++14 -qtConfig(c++1z): CONFIG += c++1z -SOURCES = tst_qlinkedlist.cpp -DEFINES -= QT_NO_LINKED_LIST diff --git a/tests/auto/corelib/tools/qlinkedlist/tst_qlinkedlist.cpp b/tests/auto/corelib/tools/qlinkedlist/tst_qlinkedlist.cpp deleted file mode 100644 index ed0abff456..0000000000 --- a/tests/auto/corelib/tools/qlinkedlist/tst_qlinkedlist.cpp +++ /dev/null @@ -1,1072 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite 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 <QtTest/QtTest> -#include <QLinkedList> - -struct Movable -{ - Movable(char input = 'j') : i(input), state(Constructed) - { - ++liveCount; - } - Movable(const Movable &other) - : i(other.i) - , state(Constructed) - { - check(other.state, Constructed); - ++liveCount; - } - - ~Movable() - { - check(state, Constructed); - i = 0; - --liveCount; - state = Destructed; - } - - bool operator ==(const Movable &other) const - { - check(state, Constructed); - check(other.state, Constructed); - return i == other.i; - } - - Movable &operator=(const Movable &other) - { - check(state, Constructed); - check(other.state, Constructed); - i = other.i; - return *this; - } - char i; - - static int getLiveCount() { return liveCount; } -private: - static int liveCount; - - enum State { Constructed = 106, Destructed = 110 }; - State state; - - static void check(const State state1, const State state2) - { - QCOMPARE(int(state1), int(state2)); - } -}; - -int Movable::liveCount = 0; - -QT_BEGIN_NAMESPACE -Q_DECLARE_TYPEINFO(Movable, Q_MOVABLE_TYPE); -QT_END_NAMESPACE - -Q_DECLARE_METATYPE(Movable); - -Q_DECLARE_METATYPE(QLinkedList<int>); - - -int qHash(const Movable& movable) -{ - return qHash(movable.i); -} - -struct Complex -{ - Complex(int val = 0) - : value(val) - , checkSum(this) - { - ++liveCount; - } - - Complex(Complex const &other) - : value(other.value) - , checkSum(this) - { - ++liveCount; - } - - Complex &operator=(Complex const &other) - { - check(); other.check(); - - value = other.value; - return *this; - } - - ~Complex() - { - --liveCount; - check(); - } - - operator int() const { return value; } - - bool operator==(Complex const &other) const - { - check(); other.check(); - return value == other.value; - } - - void check() const - { - QVERIFY(this == checkSum); - } - - static int getLiveCount() { return liveCount; } -private: - static int liveCount; - - int value; - void *checkSum; -}; - -int Complex::liveCount = 0; - -Q_DECLARE_METATYPE(Complex); - -// Tests depend on the fact that: -Q_STATIC_ASSERT(!QTypeInfo<int>::isStatic); -Q_STATIC_ASSERT(!QTypeInfo<int>::isComplex); -Q_STATIC_ASSERT(!QTypeInfo<Movable>::isStatic); -Q_STATIC_ASSERT(QTypeInfo<Movable>::isComplex); -Q_STATIC_ASSERT(QTypeInfo<Complex>::isStatic); -Q_STATIC_ASSERT(QTypeInfo<Complex>::isComplex); - -class tst_QLinkedList : public QObject -{ - Q_OBJECT -private slots: - void eraseValidIteratorsOnSharedList() const; - void insertWithIteratorsOnSharedList() const; - void lengthInt() const; - void lengthMovable() const; - void lengthComplex() const; - void lengthSignature() const; - void firstInt() const; - void firstMovable() const; - void firstComplex() const; - void lastInt() const; - void lastMovable() const; - void lastComplex() const; - void beginInt() const; - void beginMovable() const; - void beginComplex() const; - void endInt() const; - void endMovable() const; - void endComplex() const; - void containsInt() const; - void containsMovable() const; - void containsComplex() const; - void countInt() const; - void countMovable() const; - void countComplex() const; - void cpp17ctad() const; - void emptyInt() const; - void emptyMovable() const; - void emptyComplex() const; - void endsWithInt() const; - void endsWithMovable() const; - void endsWithComplex() const; - void removeAllInt() const; - void removeAllMovable() const; - void removeAllComplex() const; - void removeOneInt() const; - void removeOneMovable() const; - void removeOneComplex() const; - void reverseIterators() const; - void startsWithInt() const; - void startsWithMovable() const; - void startsWithComplex() const; - void takeFirstInt() const; - void takeFirstMovable() const; - void takeFirstComplex() const; - void takeLastInt() const; - void takeLastMovable() const; - void takeLastComplex() const; - void toStdListInt() const; - void toStdListMovable() const; - void toStdListComplex() const; - void testOperatorsInt() const; - void testOperatorsMovable() const; - void testOperatorsComplex() const; - void testSTLIteratorsInt() const; - void testSTLIteratorsMovable() const; - void testSTLIteratorsComplex() const; - - void initializeList() const; - - void constSharedNullInt() const; - void constSharedNullMovable() const; - void constSharedNullComplex() const; -private: - template<typename T> void length() const; - template<typename T> void first() const; - template<typename T> void last() const; - template<typename T> void begin() const; - template<typename T> void end() const; - template<typename T> void contains() const; - template<typename T> void count() const; - template<typename T> void empty() const; - template<typename T> void endsWith() const; - template<typename T> void move() const; - template<typename T> void removeAll() const; - template<typename T> void removeOne() const; - template<typename T> void startsWith() const; - template<typename T> void swap() const; - template<typename T> void takeFirst() const; - template<typename T> void takeLast() const; - template<typename T> void toStdList() const; - template<typename T> void value() const; - - template<typename T> void testOperators() const; - template<typename T> void testSTLIterators() const; - - template<typename T> void constSharedNull() const; - - int dummyForGuard; -}; - -template<typename T> struct SimpleValue -{ - static T at(int index) - { - return values[index % maxSize]; - } - static const uint maxSize = 7; - static const T values[maxSize]; -}; - -template<> -const int SimpleValue<int>::values[] = { 10, 20, 30, 40, 100, 101, 102 }; -template<> -const Movable SimpleValue<Movable>::values[] = { 10, 20, 30, 40, 100, 101, 102 }; -template<> -const Complex SimpleValue<Complex>::values[] = { 10, 20, 30, 40, 100, 101, 102 }; - -// Make some macros for the tests to use in order to be slightly more readable... -#define T_FOO SimpleValue<T>::at(0) -#define T_BAR SimpleValue<T>::at(1) -#define T_BAZ SimpleValue<T>::at(2) -#define T_CAT SimpleValue<T>::at(3) -#define T_DOG SimpleValue<T>::at(4) -#define T_BLAH SimpleValue<T>::at(5) -#define T_WEEE SimpleValue<T>::at(6) - -template<typename T> -void tst_QLinkedList::length() const -{ - /* Empty list. */ - { - const QLinkedList<T> list; - QCOMPARE(list.size(), 0); - } - - /* One entry. */ - { - QLinkedList<T> list; - list.append(T_FOO); - QCOMPARE(list.size(), 1); - } - - /* Two entries. */ - { - QLinkedList<T> list; - list.append(T_FOO); - list.append(T_BAR); - QCOMPARE(list.size(), 2); - } - - /* Three entries. */ - { - QLinkedList<T> list; - list.append(T_FOO); - list.append(T_BAR); - list.append(T_BAZ); - QCOMPARE(list.size(), 3); - } -} - -void tst_QLinkedList::eraseValidIteratorsOnSharedList() const -{ - QLinkedList<int> a, b; - a.append(5); - a.append(10); - a.append(20); - a.append(20); - a.append(20); - a.append(20); - a.append(30); - - QLinkedList<int>::iterator i = a.begin(); - ++i; - ++i; - ++i; - b = a; - QLinkedList<int>::iterator r = a.erase(i); - QCOMPARE(b.size(), 7); - QCOMPARE(a.size(), 6); - --r; - --r; - QCOMPARE(*r, 10); // Ensure that number 2 instance was removed; -} - -void tst_QLinkedList::insertWithIteratorsOnSharedList() const -{ - QLinkedList<int> a, b; - a.append(5); - a.append(10); - a.append(20); - QLinkedList<int>::iterator i = a.begin(); - ++i; - ++i; - b = a; - - QLinkedList<int>::iterator i2 = a.insert(i, 15); - QCOMPARE(b.size(), 3); - QCOMPARE(a.size(), 4); - --i2; - QCOMPARE(*i2, 10); -} - -void tst_QLinkedList::lengthInt() const -{ - length<int>(); -} - -void tst_QLinkedList::lengthMovable() const -{ - const int liveCount = Movable::getLiveCount(); - length<Movable>(); - QCOMPARE(liveCount, Movable::getLiveCount()); -} - -void tst_QLinkedList::lengthComplex() const -{ - const int liveCount = Complex::getLiveCount(); - length<Complex>(); - QCOMPARE(liveCount, Complex::getLiveCount()); -} - -void tst_QLinkedList::lengthSignature() const -{ - /* Constness. */ - { - const QLinkedList<int> list; - /* The function should be const. */ - list.size(); - } -} - -template<typename T> -void tst_QLinkedList::first() const -{ - QLinkedList<T> list; - list << T_FOO << T_BAR; - - QCOMPARE(list.first(), T_FOO); - - // remove an item, make sure it still works - list.pop_front(); - QVERIFY(list.size() == 1); - QCOMPARE(list.first(), T_BAR); -} - -void tst_QLinkedList::firstInt() const -{ - first<int>(); -} - -void tst_QLinkedList::firstMovable() const -{ - const int liveCount = Movable::getLiveCount(); - first<Movable>(); - QCOMPARE(liveCount, Movable::getLiveCount()); -} - -void tst_QLinkedList::firstComplex() const -{ - const int liveCount = Complex::getLiveCount(); - first<Complex>(); - QCOMPARE(liveCount, Complex::getLiveCount()); -} - -template<typename T> -void tst_QLinkedList::last() const -{ - QLinkedList<T> list; - list << T_FOO << T_BAR; - - QCOMPARE(list.last(), T_BAR); - - // remove an item, make sure it still works - list.pop_back(); - QVERIFY(list.size() == 1); - QCOMPARE(list.last(), T_FOO); -} - -void tst_QLinkedList::lastInt() const -{ - last<int>(); -} - -void tst_QLinkedList::lastMovable() const -{ - const int liveCount = Movable::getLiveCount(); - last<Movable>(); - QCOMPARE(liveCount, Movable::getLiveCount()); -} - -void tst_QLinkedList::lastComplex() const -{ - const int liveCount = Complex::getLiveCount(); - last<Complex>(); - QCOMPARE(liveCount, Complex::getLiveCount()); -} - -template<typename T> -void tst_QLinkedList::begin() const -{ - QLinkedList<T> list; - list << T_FOO << T_BAR; - - QCOMPARE(*list.begin(), T_FOO); - - // remove an item, make sure it still works - list.pop_front(); - QVERIFY(list.size() == 1); - QCOMPARE(*list.begin(), T_BAR); -} - -void tst_QLinkedList::beginInt() const -{ - begin<int>(); -} - -void tst_QLinkedList::beginMovable() const -{ - const int liveCount = Movable::getLiveCount(); - begin<Movable>(); - QCOMPARE(liveCount, Movable::getLiveCount()); -} - -void tst_QLinkedList::beginComplex() const -{ - const int liveCount = Complex::getLiveCount(); - begin<Complex>(); - QCOMPARE(liveCount, Complex::getLiveCount()); -} - -template<typename T> -void tst_QLinkedList::end() const -{ - QLinkedList<T> list; - list << T_FOO << T_BAR; - - QCOMPARE(*--list.end(), T_BAR); - - // remove an item, make sure it still works - list.pop_back(); - QVERIFY(list.size() == 1); - QCOMPARE(*--list.end(), T_FOO); -} - -void tst_QLinkedList::endInt() const -{ - end<int>(); -} - -void tst_QLinkedList::endMovable() const -{ - const int liveCount = Movable::getLiveCount(); - end<Movable>(); - QCOMPARE(liveCount, Movable::getLiveCount()); -} - -void tst_QLinkedList::endComplex() const -{ - const int liveCount = Complex::getLiveCount(); - end<Complex>(); - QCOMPARE(liveCount, Complex::getLiveCount()); -} - -template<typename T> -void tst_QLinkedList::contains() const -{ - QLinkedList<T> list; - list << T_FOO << T_BAR << T_BAZ; - - QVERIFY(list.contains(T_FOO)); - QVERIFY(list.contains(T_BLAH) != true); - - // add it and make sure it matches - list.append(T_BLAH); - QVERIFY(list.contains(T_BLAH)); -} - -void tst_QLinkedList::containsInt() const -{ - contains<int>(); -} - -void tst_QLinkedList::containsMovable() const -{ - const int liveCount = Movable::getLiveCount(); - contains<Movable>(); - QCOMPARE(liveCount, Movable::getLiveCount()); -} - -void tst_QLinkedList::containsComplex() const -{ - const int liveCount = Complex::getLiveCount(); - contains<Complex>(); - QCOMPARE(liveCount, Complex::getLiveCount()); -} - -template<typename T> -void tst_QLinkedList::count() const -{ - QLinkedList<T> list; - - // starts empty - QVERIFY(list.count() == 0); - - // goes up - list.append(T_FOO); - QVERIFY(list.count() == 1); - - // and up - list.append(T_BAR); - QVERIFY(list.count() == 2); - - // and down - list.pop_back(); - QVERIFY(list.count() == 1); - - // and empty. :) - list.pop_back(); - QVERIFY(list.count() == 0); -} - -void tst_QLinkedList::countInt() const -{ - count<int>(); -} - -void tst_QLinkedList::countMovable() const -{ - const int liveCount = Movable::getLiveCount(); - count<Movable>(); - QCOMPARE(liveCount, Movable::getLiveCount()); -} - -void tst_QLinkedList::countComplex() const -{ - const int liveCount = Complex::getLiveCount(); - count<Complex>(); - QCOMPARE(liveCount, Complex::getLiveCount()); -} - -void tst_QLinkedList::cpp17ctad() const -{ -#ifdef __cpp_deduction_guides -#define QVERIFY_IS_LIST_OF(obj, Type) \ - QVERIFY2((std::is_same<decltype(obj), QLinkedList<Type>>::value), \ - QMetaType::typeName(qMetaTypeId<decltype(obj)::value_type>())) -#define CHECK(Type, One, Two, Three) \ - do { \ - const Type v[] = {One, Two, Three}; \ - QLinkedList v1 = {One, Two, Three}; \ - QVERIFY_IS_LIST_OF(v1, Type); \ - QLinkedList v2(v1.begin(), v1.end()); \ - QVERIFY_IS_LIST_OF(v2, Type); \ - QLinkedList v3(std::begin(v), std::end(v)); \ - QVERIFY_IS_LIST_OF(v3, Type); \ - } while (false) \ - /*end*/ - CHECK(int, 1, 2, 3); - CHECK(double, 1.0, 2.0, 3.0); - CHECK(QString, QStringLiteral("one"), QStringLiteral("two"), QStringLiteral("three")); -#undef QVERIFY_IS_LIST_OF -#undef CHECK -#else - QSKIP("This test requires C++17 Constructor Template Argument Deduction support enabled in the compiler."); -#endif -} - -template<typename T> -void tst_QLinkedList::empty() const -{ - QLinkedList<T> list; - - // make sure it starts empty - QVERIFY(list.empty()); - - // and doesn't stay empty - list.append(T_FOO); - QVERIFY(!list.empty()); - - // and goes back to being empty - list.pop_back(); - QVERIFY(list.empty()); -} - -void tst_QLinkedList::emptyInt() const -{ - empty<int>(); -} - -void tst_QLinkedList::emptyMovable() const -{ - const int liveCount = Movable::getLiveCount(); - empty<Movable>(); - QCOMPARE(liveCount, Movable::getLiveCount()); -} - -void tst_QLinkedList::emptyComplex() const -{ - const int liveCount = Complex::getLiveCount(); - empty<Complex>(); - QCOMPARE(liveCount, Complex::getLiveCount()); -} - -template<typename T> -void tst_QLinkedList::endsWith() const -{ - QLinkedList<T> list; - list << T_FOO << T_BAR << T_BAZ; - - // test it returns correctly in both cases - QVERIFY(list.endsWith(T_BAZ)); - QVERIFY(!list.endsWith(T_BAR)); - - // remove an item and make sure the end item changes - list.pop_back(); - QVERIFY(list.endsWith(T_BAR)); -} - -void tst_QLinkedList::endsWithInt() const -{ - endsWith<int>(); -} - -void tst_QLinkedList::endsWithMovable() const -{ - const int liveCount = Movable::getLiveCount(); - endsWith<Movable>(); - QCOMPARE(liveCount, Movable::getLiveCount()); -} - -void tst_QLinkedList::endsWithComplex() const -{ - const int liveCount = Complex::getLiveCount(); - endsWith<Complex>(); - QCOMPARE(liveCount, Complex::getLiveCount()); -} - -template<typename T> -void tst_QLinkedList::removeAll() const -{ - QLinkedList<T> list; - list << T_FOO << T_BAR << T_BAZ; - - // remove one instance - list.removeAll(T_BAR); - QCOMPARE(list, QLinkedList<T>() << T_FOO << T_BAZ); - - // many instances - list << T_FOO << T_BAR << T_BAZ << T_FOO << T_BAR << T_BAZ << T_FOO << T_BAR << T_BAZ; - list.removeAll(T_BAR); - QCOMPARE(list, QLinkedList<T>() << T_FOO << T_BAZ << T_FOO << T_BAZ << T_FOO << T_BAZ << T_FOO << T_BAZ); - - // try remove something that doesn't exist - list.removeAll(T_WEEE); - QCOMPARE(list, QLinkedList<T>() << T_FOO << T_BAZ << T_FOO << T_BAZ << T_FOO << T_BAZ << T_FOO << T_BAZ); -} - -void tst_QLinkedList::removeAllInt() const -{ - removeAll<int>(); -} - -void tst_QLinkedList::removeAllMovable() const -{ - const int liveCount = Movable::getLiveCount(); - removeAll<Movable>(); - QCOMPARE(liveCount, Movable::getLiveCount()); -} - -void tst_QLinkedList::removeAllComplex() const -{ - const int liveCount = Complex::getLiveCount(); - removeAll<Complex>(); - QCOMPARE(liveCount, Complex::getLiveCount()); -} - -template<typename T> -void tst_QLinkedList::removeOne() const -{ - QLinkedList<T> list; - list << T_FOO << T_BAR << T_BAZ; - - // middle - list.removeOne(T_BAR); - QCOMPARE(list, QLinkedList<T>() << T_FOO << T_BAZ); - - // start - list.removeOne(T_FOO); - QCOMPARE(list, QLinkedList<T>() << T_BAZ); - - // last - list.removeOne(T_BAZ); - QCOMPARE(list, QLinkedList<T>()); - - // make sure it really only removes one :) - list << T_FOO << T_FOO; - list.removeOne(T_FOO); - QCOMPARE(list, QLinkedList<T>() << T_FOO); - - // try remove something that doesn't exist - list.removeOne(T_WEEE); - QCOMPARE(list, QLinkedList<T>() << T_FOO); -} - -void tst_QLinkedList::removeOneInt() const -{ - removeOne<int>(); -} - -void tst_QLinkedList::removeOneMovable() const -{ - const int liveCount = Movable::getLiveCount(); - removeOne<Movable>(); - QCOMPARE(liveCount, Movable::getLiveCount()); -} - -void tst_QLinkedList::removeOneComplex() const -{ - const int liveCount = Complex::getLiveCount(); - removeOne<Complex>(); - QCOMPARE(liveCount, Complex::getLiveCount()); -} - -void tst_QLinkedList::reverseIterators() const -{ - QLinkedList<int> l; - l << 1 << 2 << 3 << 4; - QLinkedList<int> lr = l; - std::reverse(lr.begin(), lr.end()); - const QLinkedList<int> &clr = lr; - QVERIFY(std::equal(l.begin(), l.end(), lr.rbegin())); - QVERIFY(std::equal(l.begin(), l.end(), lr.crbegin())); - QVERIFY(std::equal(l.begin(), l.end(), clr.rbegin())); - QVERIFY(std::equal(lr.rbegin(), lr.rend(), l.begin())); - QVERIFY(std::equal(lr.crbegin(), lr.crend(), l.begin())); - QVERIFY(std::equal(clr.rbegin(), clr.rend(), l.begin())); -} - -template<typename T> -void tst_QLinkedList::startsWith() const -{ - QLinkedList<T> list; - list << T_FOO << T_BAR << T_BAZ; - - // make sure it starts ok - QVERIFY(list.startsWith(T_FOO)); - - // remove an item - list.removeFirst(); - QVERIFY(list.startsWith(T_BAR)); -} - -void tst_QLinkedList::startsWithInt() const -{ - startsWith<int>(); -} - -void tst_QLinkedList::startsWithMovable() const -{ - const int liveCount = Movable::getLiveCount(); - startsWith<Movable>(); - QCOMPARE(liveCount, Movable::getLiveCount()); -} - -void tst_QLinkedList::startsWithComplex() const -{ - const int liveCount = Complex::getLiveCount(); - startsWith<Complex>(); - QCOMPARE(liveCount, Complex::getLiveCount()); -} - -template<typename T> -void tst_QLinkedList::takeFirst() const -{ - QLinkedList<T> list; - list << T_FOO << T_BAR << T_BAZ; - - QCOMPARE(list.takeFirst(), T_FOO); - QVERIFY(list.size() == 2); - QCOMPARE(list.takeFirst(), T_BAR); - QVERIFY(list.size() == 1); - QCOMPARE(list.takeFirst(), T_BAZ); - QVERIFY(list.size() == 0); -} - -void tst_QLinkedList::takeFirstInt() const -{ - takeFirst<int>(); -} - -void tst_QLinkedList::takeFirstMovable() const -{ - const int liveCount = Movable::getLiveCount(); - takeFirst<Movable>(); - QCOMPARE(liveCount, Movable::getLiveCount()); -} - -void tst_QLinkedList::takeFirstComplex() const -{ - const int liveCount = Complex::getLiveCount(); - takeFirst<Complex>(); - QCOMPARE(liveCount, Complex::getLiveCount()); -} - -template<typename T> -void tst_QLinkedList::takeLast() const -{ - QLinkedList<T> list; - list << T_FOO << T_BAR << T_BAZ; - - QCOMPARE(list.takeLast(), T_BAZ); - QCOMPARE(list.takeLast(), T_BAR); - QCOMPARE(list.takeLast(), T_FOO); -} - -void tst_QLinkedList::takeLastInt() const -{ - takeLast<int>(); -} - -void tst_QLinkedList::takeLastMovable() const -{ - const int liveCount = Movable::getLiveCount(); - takeLast<Movable>(); - QCOMPARE(liveCount, Movable::getLiveCount()); -} - -void tst_QLinkedList::takeLastComplex() const -{ - const int liveCount = Complex::getLiveCount(); - takeLast<Complex>(); - QCOMPARE(liveCount, Complex::getLiveCount()); -} - -template<typename T> -void tst_QLinkedList::toStdList() const -{ - QLinkedList<T> list; - list << T_FOO << T_BAR << T_BAZ; - - // yuck. - std::list<T> slist; - slist.push_back(T_FOO); - slist.push_back(T_BAR); - slist.push_back(T_BAZ); - - QCOMPARE(list.toStdList(), slist); - QCOMPARE(list, QLinkedList<T>() << T_FOO << T_BAR << T_BAZ); -} - -void tst_QLinkedList::toStdListInt() const -{ - toStdList<int>(); -} - -void tst_QLinkedList::toStdListMovable() const -{ - const int liveCount = Movable::getLiveCount(); - toStdList<Movable>(); - QCOMPARE(liveCount, Movable::getLiveCount()); -} - -void tst_QLinkedList::toStdListComplex() const -{ - const int liveCount = Complex::getLiveCount(); - toStdList<Complex>(); - QCOMPARE(liveCount, Complex::getLiveCount()); -} - -template<typename T> -void tst_QLinkedList::testOperators() const -{ - QLinkedList<T> list; - list << T_FOO << T_BAR << T_BAZ; - - QLinkedList<T> listtwo; - listtwo << T_FOO << T_BAR << T_BAZ; - - // test equal - QVERIFY(list == listtwo); - - // not equal - listtwo.append(T_CAT); - QVERIFY(list != listtwo); - - // += - list += listtwo; - QVERIFY(list.size() == 7); - QVERIFY(listtwo.size() == 4); - QCOMPARE(list, QLinkedList<T>() << T_FOO << T_BAR << T_BAZ - << T_FOO << T_BAR << T_BAZ << T_CAT); - - // = - list = listtwo; - QCOMPARE(list, listtwo); - QCOMPARE(list, QLinkedList<T>() << T_FOO << T_BAR << T_BAZ << T_CAT); -} - -void tst_QLinkedList::testOperatorsInt() const -{ - testOperators<int>(); -} - -void tst_QLinkedList::testOperatorsMovable() const -{ - const int liveCount = Movable::getLiveCount(); - testOperators<Movable>(); - QCOMPARE(liveCount, Movable::getLiveCount()); -} - -void tst_QLinkedList::testOperatorsComplex() const -{ - const int liveCount = Complex::getLiveCount(); - testOperators<Complex>(); - QCOMPARE(liveCount, Complex::getLiveCount()); -} - -template<typename T> -void tst_QLinkedList::testSTLIterators() const -{ - QLinkedList<T> list; - - // create a list - list << T_FOO << T_BAR << T_BAZ; - typename QLinkedList<T>::iterator it = list.begin(); - QCOMPARE(*it, T_FOO); it++; - QCOMPARE(*it, T_BAR); it++; - QCOMPARE(*it, T_BAZ); it++; - QCOMPARE(it, list.end()); it--; - - // walk backwards - QCOMPARE(*it, T_BAZ); it--; - QCOMPARE(*it, T_BAR); it--; - QCOMPARE(*it, T_FOO); - - // test erase - it = list.erase(it); - QVERIFY(list.size() == 2); - QCOMPARE(*it, T_BAR); - - // test multiple erase - it = list.erase(it, it + 2); - QVERIFY(list.size() == 0); - QCOMPARE(it, list.end()); - - // insert again - it = list.insert(it, T_FOO); - QVERIFY(list.size() == 1); - QCOMPARE(*it, T_FOO); - - // insert again - it = list.insert(it, T_BAR); - QVERIFY(list.size() == 2); - QCOMPARE(*it++, T_BAR); - QCOMPARE(*it, T_FOO); -} - -void tst_QLinkedList::testSTLIteratorsInt() const -{ - testSTLIterators<int>(); -} - -void tst_QLinkedList::testSTLIteratorsMovable() const -{ - const int liveCount = Movable::getLiveCount(); - testSTLIterators<Movable>(); - QCOMPARE(liveCount, Movable::getLiveCount()); -} - -void tst_QLinkedList::testSTLIteratorsComplex() const -{ - const int liveCount = Complex::getLiveCount(); - testSTLIterators<Complex>(); - QCOMPARE(liveCount, Complex::getLiveCount()); -} - -void tst_QLinkedList::initializeList() const -{ - QLinkedList<int> v1 { 2, 3, 4 }; - QCOMPARE(v1, QLinkedList<int>() << 2 << 3 << 4); - QCOMPARE(v1, (QLinkedList<int> { 2, 3, 4})); - - QLinkedList<QLinkedList<int>> v2{ v1, { 1 }, QLinkedList<int>(), { 2, 3, 4 } }; - QLinkedList<QLinkedList<int>> v3; - v3 << v1 << (QLinkedList<int>() << 1) << QLinkedList<int>() << v1; - QCOMPARE(v3, v2); -} - - -template<typename T> -void tst_QLinkedList::constSharedNull() const -{ - QLinkedList<T> list2; - QVERIFY(!list2.isDetached()); -} - -void tst_QLinkedList::constSharedNullInt() const -{ - constSharedNull<int>(); -} - -void tst_QLinkedList::constSharedNullMovable() const -{ - const int liveCount = Movable::getLiveCount(); - constSharedNull<Movable>(); - QCOMPARE(liveCount, Movable::getLiveCount()); -} - -void tst_QLinkedList::constSharedNullComplex() const -{ - const int liveCount = Complex::getLiveCount(); - constSharedNull<Complex>(); - QCOMPARE(liveCount, Complex::getLiveCount()); -} - -QTEST_APPLESS_MAIN(tst_QLinkedList) -#include "tst_qlinkedlist.moc" diff --git a/tests/auto/corelib/tools/tools.pro b/tests/auto/corelib/tools/tools.pro index be195ea037..e51be90100 100644 --- a/tests/auto/corelib/tools/tools.pro +++ b/tests/auto/corelib/tools/tools.pro @@ -16,7 +16,6 @@ SUBDIRS=\ qhash \ qhashfunctions \ qline \ - qlinkedlist \ qmakearray \ qmap \ qmargins \ |