From: Thiago Macieira Date: Mon, 24 Sep 2012 15:51:15 +0000 (+0200) Subject: Add some tests for compatible and incompatible custom deleters X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3827fd2a37f72e2720da1cc2db5902286c234680;p=profile%2Fivi%2Fqtbase.git Add some tests for compatible and incompatible custom deleters Change-Id: I2bb7f597aab0f00a250881602e6a6bb7bfe42e18 Reviewed-by: Olivier Goffart --- diff --git a/tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp b/tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp index 03270a2..614c046 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 ptr(static_cast(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 weakptr = Qt::Uninitialized;\n"; + + QTest::newRow("incompatible-custom-deleter1") + << &QTest::QExternalTest::tryCompileFail + << "extern void incompatibleCustomDeleter(int *);\n" + "QSharedPointer ptr(new Data, incompatibleCustomDeleter);\n"; + QTest::newRow("incompatible-custom-deleter2") + << &QTest::QExternalTest::tryCompileFail + << "struct IncompatibleCustomDeleter { void operator()(int *); };\n" + "QSharedPointer ptr(new Data, IncompatibleCustomDeleter());\n"; +#ifdef Q_COMPILER_LAMBDA + QTest::newRow("incompatible-custom-lambda-deleter") + << &QTest::QExternalTest::tryCompileFail + << "QSharedPointer ptr(new Data, [](int *) {});\n"; +#endif } void tst_QSharedPointer::invalidConstructs()