diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2013-02-07 13:56:57 -0800 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-02-22 04:38:01 +0100 |
commit | 1c63909ad8caee11ba0ec4af998d981bd50d3ee1 (patch) | |
tree | 6c1ede83f1588b95ce0528f89b7ead0ec8dd2ac8 /tests/auto/corelib | |
parent | de5ae6917c819ff23f7d9c5742b50b15e0824877 (diff) |
Make sure all containers compile in strict-iterator mode
Unit-test this by making the QList, QVector, QHash and QMap unit tests
be duplicated under strict-iterator mode. There's no test for
QLinkedList.
The tst_Collections test does not compile under strict-iterator
mode. It generated over 15000 errors when I tried.
The strict iterators required a small change: the difference_type
typedef needs to match the operators that get distances
(operator-(iterator)) and move the iterator around (+, -, +=, -=, etc.).
Task-number: QTBUG-29608
Change-Id: I834873934c51d0f139a994cd395818da4ec997e2
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Reviewed-by: Jason McDonald <macadder1@gmail.com>
Diffstat (limited to 'tests/auto/corelib')
14 files changed, 33 insertions, 15 deletions
diff --git a/tests/auto/corelib/tools/qarraydata/qarraydata.pro b/tests/auto/corelib/tools/qarraydata/qarraydata.pro index d13cc86cf5..d5fe08c009 100644 --- a/tests/auto/corelib/tools/qarraydata/qarraydata.pro +++ b/tests/auto/corelib/tools/qarraydata/qarraydata.pro @@ -1,6 +1,6 @@ TARGET = tst_qarraydata -SOURCES += tst_qarraydata.cpp -HEADERS += simplevector.h +SOURCES += $$PWD/tst_qarraydata.cpp +HEADERS += $$PWD/simplevector.h QT = core testlib CONFIG += testcase parallel_test DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/corelib/tools/qarraydata/simplevector.h b/tests/auto/corelib/tools/qarraydata/simplevector.h index ea3892ec5c..40917c0172 100644 --- a/tests/auto/corelib/tools/qarraydata/simplevector.h +++ b/tests/auto/corelib/tools/qarraydata/simplevector.h @@ -269,9 +269,9 @@ public: if (first == last) return; - T *const begin = d->begin(); - T *const where = begin + position; - const T *const end = begin + d->size; + const iterator begin = d->begin(); + const iterator where = begin + position; + const iterator end = begin + d->size; if (d.needsDetach() || capacity() - size() < size_t(last - first)) { SimpleVector detached(Data::allocate( @@ -290,8 +290,8 @@ public: if ((first >= where && first < end) || (last > where && last <= end)) { // Copy overlapping data first and only then shuffle it into place - T *start = d->begin() + position; - T *middle = d->end(); + iterator start = d->begin() + position; + iterator middle = d->end(); d->copyAppend(first, last); std::rotate(start, middle, d->end()); diff --git a/tests/auto/corelib/tools/qarraydata/tst_qarraydata.cpp b/tests/auto/corelib/tools/qarraydata/tst_qarraydata.cpp index f9ce7425f6..60b807a7bc 100644 --- a/tests/auto/corelib/tools/qarraydata/tst_qarraydata.cpp +++ b/tests/auto/corelib/tools/qarraydata/tst_qarraydata.cpp @@ -1559,7 +1559,7 @@ void tst_QArrayData::literals() #endif QVERIFY(v.isSharable()); - QCOMPARE((void*)(v.constBegin() + v.size()), (void*)v.constEnd()); + QCOMPARE((void*)(const char*)(v.constBegin() + v.size()), (void*)(const char*)v.constEnd()); for (int i = 0; i < 10; ++i) QCOMPARE(const_(v)[i], char('A' + i)); diff --git a/tests/auto/corelib/tools/qarraydata_strictiterators/qarraydata_strictiterators.pro b/tests/auto/corelib/tools/qarraydata_strictiterators/qarraydata_strictiterators.pro new file mode 100644 index 0000000000..b01fbd84d1 --- /dev/null +++ b/tests/auto/corelib/tools/qarraydata_strictiterators/qarraydata_strictiterators.pro @@ -0,0 +1,3 @@ +include(../qarraydata/qarraydata.pro) +TARGET = tst_qarraydata_strictiterators +DEFINES += QT_STRICT_ITERATORS=1 tst_QArrayData=tst_QArrayData_StrictIterators diff --git a/tests/auto/corelib/tools/qhash/qhash.pro b/tests/auto/corelib/tools/qhash/qhash.pro index 630eabdb7c..1ed062ca91 100644 --- a/tests/auto/corelib/tools/qhash/qhash.pro +++ b/tests/auto/corelib/tools/qhash/qhash.pro @@ -1,5 +1,5 @@ CONFIG += testcase parallel_test TARGET = tst_qhash QT = core testlib -SOURCES = tst_qhash.cpp +SOURCES = $$PWD/tst_qhash.cpp DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/corelib/tools/qhash_strictiterators/qhash_strictiterators.pro b/tests/auto/corelib/tools/qhash_strictiterators/qhash_strictiterators.pro new file mode 100644 index 0000000000..715e9bf0c9 --- /dev/null +++ b/tests/auto/corelib/tools/qhash_strictiterators/qhash_strictiterators.pro @@ -0,0 +1,3 @@ +include(../qhash/qhash.pro) +TARGET = tst_qhash_strictiterators +DEFINES += QT_STRICT_ITERATORS tst_QHash=tst_QHash_StrictIterators diff --git a/tests/auto/corelib/tools/qlist/qlist.pro b/tests/auto/corelib/tools/qlist/qlist.pro index d3f8d83177..43c06e0ee1 100644 --- a/tests/auto/corelib/tools/qlist/qlist.pro +++ b/tests/auto/corelib/tools/qlist/qlist.pro @@ -2,5 +2,5 @@ CONFIG += testcase CONFIG += parallel_test TARGET = tst_qlist QT = core testlib -SOURCES = tst_qlist.cpp +SOURCES = $$PWD/tst_qlist.cpp DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/corelib/tools/qlist_strictiterators/qlist_strictiterators.pro b/tests/auto/corelib/tools/qlist_strictiterators/qlist_strictiterators.pro new file mode 100644 index 0000000000..e39ad38919 --- /dev/null +++ b/tests/auto/corelib/tools/qlist_strictiterators/qlist_strictiterators.pro @@ -0,0 +1,3 @@ +include(../qlist/qlist.pro) +TARGET = tst_qlist_strictiterators +DEFINES += QT_STRICT_ITERATORS tst_QList=tst_QList_StrictIterators diff --git a/tests/auto/corelib/tools/qmap/qmap.pro b/tests/auto/corelib/tools/qmap/qmap.pro index 5601bc528c..460b6654fb 100644 --- a/tests/auto/corelib/tools/qmap/qmap.pro +++ b/tests/auto/corelib/tools/qmap/qmap.pro @@ -1,5 +1,5 @@ CONFIG += testcase parallel_test TARGET = tst_qmap QT = core testlib -SOURCES = tst_qmap.cpp +SOURCES = $$PWD/tst_qmap.cpp DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/corelib/tools/qmap/tst_qmap.cpp b/tests/auto/corelib/tools/qmap/tst_qmap.cpp index dea657f842..e812e5a337 100644 --- a/tests/auto/corelib/tools/qmap/tst_qmap.cpp +++ b/tests/auto/corelib/tools/qmap/tst_qmap.cpp @@ -39,8 +39,6 @@ ** ****************************************************************************/ -#define QT_STRICT_ITERATORS - #include <qmap.h> #include <QtTest/QtTest> #include <QDebug> diff --git a/tests/auto/corelib/tools/qmap_strictiterators/qmap_strictiterators.pro b/tests/auto/corelib/tools/qmap_strictiterators/qmap_strictiterators.pro new file mode 100644 index 0000000000..6c1f4727c1 --- /dev/null +++ b/tests/auto/corelib/tools/qmap_strictiterators/qmap_strictiterators.pro @@ -0,0 +1,3 @@ +include(../qmap/qmap.pro) +TARGET = tst_qmap_strictiterators +DEFINES += QT_STRICT_ITERATORS tst_QMap=tst_QMap_StrictIterators diff --git a/tests/auto/corelib/tools/qvector/qvector.pro b/tests/auto/corelib/tools/qvector/qvector.pro index 98fd2f2120..22edde3412 100644 --- a/tests/auto/corelib/tools/qvector/qvector.pro +++ b/tests/auto/corelib/tools/qvector/qvector.pro @@ -1,5 +1,5 @@ CONFIG += testcase parallel_test TARGET = tst_qvector QT = core testlib -SOURCES = tst_qvector.cpp +SOURCES = $$PWD/tst_qvector.cpp DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/corelib/tools/qvector_strictiterators/qvector_strictiterators.pro b/tests/auto/corelib/tools/qvector_strictiterators/qvector_strictiterators.pro new file mode 100644 index 0000000000..d6cad86aac --- /dev/null +++ b/tests/auto/corelib/tools/qvector_strictiterators/qvector_strictiterators.pro @@ -0,0 +1,3 @@ +include(../qvector/qvector.pro) +TARGET = tst_qvector_strictiterators +DEFINES += QT_STRICT_ITERATORS=1 tst_QVector=tst_QVector_StrictIterators diff --git a/tests/auto/corelib/tools/tools.pro b/tests/auto/corelib/tools/tools.pro index 996879ea69..d5c9e50190 100644 --- a/tests/auto/corelib/tools/tools.pro +++ b/tests/auto/corelib/tools/tools.pro @@ -2,6 +2,7 @@ TEMPLATE=subdirs SUBDIRS=\ qalgorithms \ qarraydata \ + qarraydata_strictiterators \ qbitarray \ qbytearray \ qbytearraylist \ @@ -20,11 +21,14 @@ SUBDIRS=\ qexplicitlyshareddatapointer \ qfreelist \ qhash \ + qhash_strictiterators \ qline \ qlinkedlist \ qlist \ + qlist_strictiterators \ qlocale \ qmap \ + qmap_strictiterators \ qmargins \ qmessageauthenticationcode \ qpair \ @@ -54,4 +58,5 @@ SUBDIRS=\ qtimezone \ qtimeline \ qvarlengtharray \ - qvector + qvector \ + qvector_strictiterators |