summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2012-09-24 17:51:15 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-09-24 21:27:51 +0200
commit3827fd2a37f72e2720da1cc2db5902286c234680 (patch)
treea79082b9604465224cebb8ce4c08edce6de1c3ed /tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp
parent5d9a57432e0d7afb2b9826dc3292d5c1caa105db (diff)
Add some tests for compatible and incompatible custom deleters
Change-Id: I2bb7f597aab0f00a250881602e6a6bb7bfe42e18 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Diffstat (limited to 'tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp')
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp b/tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp
index 03270a2336..614c04654d 100644
--- a/tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp
+++ b/tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp
@@ -1317,6 +1317,12 @@ void tst_QSharedPointer::customDeleter()
QCOMPARE(derivedDataDeleter.callCount, 1);
QCOMPARE(refcount, 2);
safetyCheck();
+
+ // a custom deleter with a different pointer parameter
+ {
+ QSharedPointer<char> ptr(static_cast<char *>(malloc(1)), free);
+ }
+ safetyCheck();
}
void tst_QSharedPointer::lambdaCustomDeleter()
@@ -1804,6 +1810,20 @@ void tst_QSharedPointer::invalidConstructs_data()
<< &QTest::QExternalTest::tryCompileFail
<< "Data *ptr = 0;\n"
"QSharedPointer<Data> weakptr = Qt::Uninitialized;\n";
+
+ QTest::newRow("incompatible-custom-deleter1")
+ << &QTest::QExternalTest::tryCompileFail
+ << "extern void incompatibleCustomDeleter(int *);\n"
+ "QSharedPointer<Data> ptr(new Data, incompatibleCustomDeleter);\n";
+ QTest::newRow("incompatible-custom-deleter2")
+ << &QTest::QExternalTest::tryCompileFail
+ << "struct IncompatibleCustomDeleter { void operator()(int *); };\n"
+ "QSharedPointer<Data> ptr(new Data, IncompatibleCustomDeleter());\n";
+#ifdef Q_COMPILER_LAMBDA
+ QTest::newRow("incompatible-custom-lambda-deleter")
+ << &QTest::QExternalTest::tryCompileFail
+ << "QSharedPointer<Data> ptr(new Data, [](int *) {});\n";
+#endif
}
void tst_QSharedPointer::invalidConstructs()