summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp')
-rw-r--r--tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp62
1 files changed, 62 insertions, 0 deletions
diff --git a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
index 8f75f13958..c2d4f0a240 100644
--- a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
+++ b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
@@ -63,6 +63,7 @@
#include <qvector3d.h>
#include <qvector4d.h>
#include <qquaternion.h>
+#include <qdebug.h>
#include <limits.h>
@@ -259,6 +260,8 @@ private slots:
void colorInteger();
void forwardDeclare();
+ void debugStream_data();
+ void debugStream();
};
Q_DECLARE_METATYPE(QDate)
@@ -3331,5 +3334,64 @@ void tst_QVariant::forwardDeclare()
}
+class MessageHandler {
+public:
+ MessageHandler(const int typeId)
+ : oldMsgHandler(qInstallMsgHandler(handler))
+ {
+ currentId = typeId;
+ }
+
+ ~MessageHandler()
+ {
+ qInstallMsgHandler(oldMsgHandler);
+ }
+
+ bool testPassed() const
+ {
+ return ok;
+ }
+private:
+ static void handler(QtMsgType, const char *txt)
+ {
+ QString msg = QString::fromLatin1(txt);
+ // Format itself is not important, but basic data as a type name should be included in the output
+ ok = msg.startsWith("QVariant(") + QMetaType::typeName(currentId);
+ QVERIFY2(ok, (QString::fromLatin1("Message is not valid: '") + msg + '\'').toLatin1().constData());
+ }
+
+ QtMsgHandler oldMsgHandler;
+ static int currentId;
+ static bool ok;
+};
+bool MessageHandler::ok;
+int MessageHandler::currentId;
+
+void tst_QVariant::debugStream_data()
+{
+ QTest::addColumn<QVariant>("variant");
+ QTest::addColumn<int>("typeId");
+ for (int id = QMetaType::Void; id < QMetaType::User; ++id) {
+ const char *tagName = QMetaType::typeName(id);
+ if (!tagName)
+ continue;
+ QTest::newRow(tagName) << QVariant(static_cast<QVariant::Type>(id)) << id;
+ }
+ QTest::newRow("QBitArray(111)") << QVariant(QBitArray(3, true)) << qMetaTypeId<QBitArray>();
+ QTest::newRow("CustomStreamableClass") << QVariant(qMetaTypeId<CustomStreamableClass>(), 0) << qMetaTypeId<CustomStreamableClass>();
+ QTest::newRow("MyClass") << QVariant(qMetaTypeId<MyClass>(), 0) << qMetaTypeId<MyClass>();
+}
+
+void tst_QVariant::debugStream()
+{
+ QFETCH(QVariant, variant);
+ QFETCH(int, typeId);
+
+ MessageHandler msgHandler(typeId);
+ qDebug() << variant;
+ QVERIFY(msgHandler.testPassed());
+}
+
+
QTEST_MAIN(tst_QVariant)
#include "tst_qvariant.moc"