summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
index de93c21d43..19aa6877b2 100644
--- a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
+++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
@@ -89,6 +89,7 @@ private slots:
void isRegistered();
void unregisterType();
void registerStreamBuiltin();
+ void automaticTemplateRegistration();
};
struct Foo { int i; };
@@ -888,5 +889,50 @@ void tst_QMetaType::registerStreamBuiltin()
qRegisterMetaTypeStreamOperators<QVariant>("QVariant");
}
+Q_DECLARE_METATYPE(QSharedPointer<QObject>)
+
+void tst_QMetaType::automaticTemplateRegistration()
+{
+ {
+ QList<int> intList;
+ intList << 42;
+ QVERIFY(QVariant::fromValue(intList).value<QList<int> >().first() == 42);
+ QVector<QList<int> > vectorList;
+ vectorList << intList;
+ QVERIFY(QVariant::fromValue(vectorList).value<QVector<QList<int> > >().first().first() == 42);
+ }
+
+ {
+ QList<QByteArray> bytearrayList;
+ bytearrayList << QByteArray("foo");
+ QVERIFY(QVariant::fromValue(bytearrayList).value<QList<QByteArray> >().first() == QByteArray("foo"));
+ QVector<QList<QByteArray> > vectorList;
+ vectorList << bytearrayList;
+ QVERIFY(QVariant::fromValue(vectorList).value<QVector<QList<QByteArray> > >().first().first() == QByteArray("foo"));
+ }
+
+ QCOMPARE(::qMetaTypeId<QVariantList>(), (int)QMetaType::QVariantList);
+ QCOMPARE(::qMetaTypeId<QList<QVariant> >(), (int)QMetaType::QVariantList);
+
+ {
+ QList<QVariant> variantList;
+ variantList << 42;
+ QVERIFY(QVariant::fromValue(variantList).value<QList<QVariant> >().first() == 42);
+ QVector<QList<QVariant> > vectorList;
+ vectorList << variantList;
+ QVERIFY(QVariant::fromValue(vectorList).value<QVector<QList<QVariant> > >().first().first() == 42);
+ }
+
+ {
+ QList<QSharedPointer<QObject> > sharedPointerList;
+ QObject *testObject = new QObject;
+ sharedPointerList << QSharedPointer<QObject>(testObject);
+ QVERIFY(QVariant::fromValue(sharedPointerList).value<QList<QSharedPointer<QObject> > >().first() == testObject);
+ QVector<QList<QSharedPointer<QObject> > > vectorList;
+ vectorList << sharedPointerList;
+ QVERIFY(QVariant::fromValue(vectorList).value<QVector<QList<QSharedPointer<QObject> > > >().first().first() == testObject);
+ }
+}
+
QTEST_MAIN(tst_QMetaType)
#include "tst_qmetatype.moc"