summaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
authorStephen Kelly <stephen.kelly@kdab.com>2012-05-24 14:35:45 +0200
committerQt by Nokia <qt-info@nokia.com>2012-06-20 15:45:07 +0200
commit579ea489a40ae0240f22c3d31bde1fc2cd8aaf15 (patch)
treeb2d2e0a950af75d8e230dbe41e4b0f3f31ae308e /tests/auto
parent668efc29fd85bbae2395a4eca8d0ad71ad6ee3d1 (diff)
Record if a metatype is a smart pointer to a QObject derived.
This allows QVariant/QMetaType software (such as QtDeclarative) to deal with smart pointers in a similar way to how they can deal with naked pointers (accessing properties etc). This also adds a requirement that T be fully defined when QSharedPointer<T> is inserted into a QVariant. Change-Id: I29e12b8a6aa5f4aadbd62f92b89bc238f64b5725 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp31
1 files changed, 17 insertions, 14 deletions
diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
index 861cedf416..f1053ad2b4 100644
--- a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
+++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
@@ -1462,30 +1462,33 @@ void tst_QMetaType::automaticTemplateRegistration()
#endif // Q_COMPILER_VARIADIC_MACROS
-#define TEST_SMARTPOINTER(SMARTPOINTER, ELEMENT_TYPE) \
+#define TEST_SMARTPOINTER(SMARTPOINTER, ELEMENT_TYPE, FLAG_TEST, FROMVARIANTFUNCTION) \
{ \
SMARTPOINTER < ELEMENT_TYPE > sp(new ELEMENT_TYPE); \
+ sp.data()->setObjectName("Test name"); \
QVariant v = QVariant::fromValue(sp); \
QCOMPARE(v.typeName(), #SMARTPOINTER "<" #ELEMENT_TYPE ">"); \
+ QVERIFY(QMetaType::typeFlags(::qMetaTypeId<SMARTPOINTER < ELEMENT_TYPE > >()) & QMetaType::FLAG_TEST); \
+ SMARTPOINTER < QObject > extractedPtr = FROMVARIANTFUNCTION<QObject>(v); \
+ QCOMPARE(extractedPtr.data()->objectName(), sp.data()->objectName()); \
}
- TEST_SMARTPOINTER(QSharedPointer, QObject)
- TEST_SMARTPOINTER(QSharedPointer, QFile)
- TEST_SMARTPOINTER(QSharedPointer, QTemporaryFile)
- TEST_SMARTPOINTER(QSharedPointer, MyObject)
+ TEST_SMARTPOINTER(QSharedPointer, QObject, SharedPointerToQObject, qSharedPointerFromVariant)
+ TEST_SMARTPOINTER(QSharedPointer, QFile, SharedPointerToQObject, qSharedPointerFromVariant)
+ TEST_SMARTPOINTER(QSharedPointer, QTemporaryFile, SharedPointerToQObject, qSharedPointerFromVariant)
+ TEST_SMARTPOINTER(QSharedPointer, MyObject, SharedPointerToQObject, qSharedPointerFromVariant)
- TEST_SMARTPOINTER(QWeakPointer, QObject)
- TEST_SMARTPOINTER(QWeakPointer, QFile)
- TEST_SMARTPOINTER(QWeakPointer, QTemporaryFile)
- TEST_SMARTPOINTER(QWeakPointer, MyObject)
+ TEST_SMARTPOINTER(QWeakPointer, QObject, WeakPointerToQObject, qWeakPointerFromVariant)
+ TEST_SMARTPOINTER(QWeakPointer, QFile, WeakPointerToQObject, qWeakPointerFromVariant)
+ TEST_SMARTPOINTER(QWeakPointer, QTemporaryFile, WeakPointerToQObject, qWeakPointerFromVariant)
+ TEST_SMARTPOINTER(QWeakPointer, MyObject, WeakPointerToQObject, qWeakPointerFromVariant)
- TEST_SMARTPOINTER(QPointer, QObject)
- TEST_SMARTPOINTER(QPointer, QFile)
- TEST_SMARTPOINTER(QPointer, QTemporaryFile)
- TEST_SMARTPOINTER(QPointer, MyObject)
+ TEST_SMARTPOINTER(QPointer, QObject, TrackingPointerToQObject, qPointerFromVariant)
+ TEST_SMARTPOINTER(QPointer, QFile, TrackingPointerToQObject, qPointerFromVariant)
+ TEST_SMARTPOINTER(QPointer, QTemporaryFile, TrackingPointerToQObject, qPointerFromVariant)
+ TEST_SMARTPOINTER(QPointer, MyObject, TrackingPointerToQObject, qPointerFromVariant)
#undef TEST_SMARTPOINTER
-
}
template <typename T>