summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp')
-rw-r--r--tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp31
1 files changed, 27 insertions, 4 deletions
diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
index da8c182f32..e1b58e6c4b 100644
--- a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
+++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
@@ -1171,8 +1171,6 @@ void tst_QMetaType::registerStreamBuiltin()
qRegisterMetaTypeStreamOperators<QVariant>("QVariant");
}
-Q_DECLARE_METATYPE(QSharedPointer<QObject>)
-
typedef QHash<int, uint> IntUIntHash;
Q_DECLARE_METATYPE(IntUIntHash)
typedef QMap<int, uint> IntUIntMap;
@@ -1228,6 +1226,18 @@ private:
int m_int;
};
+class MyObject : public QObject
+{
+ Q_OBJECT
+public:
+ MyObject(QObject *parent = 0)
+ : QObject(parent)
+ {
+ }
+};
+typedef MyObject* MyObjectPtr;
+Q_DECLARE_METATYPE(MyObjectPtr)
+
void tst_QMetaType::automaticTemplateRegistration()
{
{
@@ -1418,8 +1428,7 @@ void tst_QMetaType::automaticTemplateRegistration()
F(QVector, TYPE) \
F(QQueue, TYPE) \
F(QStack, TYPE) \
- F(QSet, TYPE) \
- F(QSharedPointer, TYPE)
+ F(QSet, TYPE)
#define PRINT_1ARG_TEMPLATE(RealName, ...) \
FOR_EACH_1ARG_TEMPLATE_TYPE(CREATE_AND_VERIFY_CONTAINER, RealName)
@@ -1453,6 +1462,20 @@ void tst_QMetaType::automaticTemplateRegistration()
#endif // Q_COMPILER_VARIADIC_MACROS
+#define TEST_QSHAREDPOINTER(FULLTYPE) \
+ { \
+ FULLTYPE sp = FULLTYPE::create(); \
+ QVariant v = QVariant::fromValue(sp); \
+ QCOMPARE(v.typeName(), #FULLTYPE); \
+ }
+
+ TEST_QSHAREDPOINTER(QSharedPointer<QObject>)
+ TEST_QSHAREDPOINTER(QSharedPointer<QFile>)
+ TEST_QSHAREDPOINTER(QSharedPointer<QTemporaryFile>)
+ TEST_QSHAREDPOINTER(QSharedPointer<MyObject>)
+
+#undef TEST_QSHAREDPOINTER
+
}
template <typename T>