From 7021188778c6eb80a721c8975b68cf6b44444839 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Abecasis?= Date: Tue, 11 Sep 2012 10:06:05 +0200 Subject: Add tests for assignment operator MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I3265cb75c4d785faaf1efc183d8c1293dfff9165 Reviewed-by: Jędrzej Nowacki Reviewed-by: Thiago Macieira --- tests/auto/corelib/tools/qvector/tst_qvector.cpp | 49 ++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/tests/auto/corelib/tools/qvector/tst_qvector.cpp b/tests/auto/corelib/tools/qvector/tst_qvector.cpp index 97f370f146..575811b2ce 100644 --- a/tests/auto/corelib/tools/qvector/tst_qvector.cpp +++ b/tests/auto/corelib/tools/qvector/tst_qvector.cpp @@ -178,6 +178,9 @@ private slots: void copyConstructorInt() const; void copyConstructorMovable() const; void copyConstructorCustom() const; + void assignmentInt() const; + void assignmentMovable() const; + void assignmentCustom() const; void addInt() const; void addMovable() const; void addCustom() const; @@ -444,6 +447,52 @@ void tst_QVector::copyConstructorCustom() const QCOMPARE(instancesCount, Custom::counter.loadAcquire()); } +template +static inline void testAssignment() +{ + QVector v1(5); + QCOMPARE(v1.size(), 5); + QVERIFY(v1.isDetached()); + + QVector v2(7); + QCOMPARE(v2.size(), 7); + QVERIFY(v2.isDetached()); + + QVERIFY(!v1.isSharedWith(v2)); + + v1 = v2; + + QVERIFY(!v1.isDetached()); + QVERIFY(!v2.isDetached()); + QVERIFY(v1.isSharedWith(v2)); + + const void *const data1 = v1.constData(); + const void *const data2 = v2.constData(); + + QCOMPARE(data1, data2); + + v1.clear(); + + QVERIFY(v2.isDetached()); + QVERIFY(!v1.isSharedWith(v2)); + QCOMPARE((void *)v2.constData(), data2); +} + +void tst_QVector::assignmentInt() const +{ + testAssignment(); +} + +void tst_QVector::assignmentMovable() const +{ + testAssignment(); +} + +void tst_QVector::assignmentCustom() const +{ + testAssignment(); +} + template void tst_QVector::add() const { -- cgit v1.2.3