Cleanup mess in public type ids.
authorJędrzej Nowacki <jedrzej.nowacki@nokia.com>
Fri, 13 Jan 2012 09:41:02 +0000 (10:41 +0100)
committerQt by Nokia <qt-info@nokia.com>
Wed, 25 Jan 2012 20:08:08 +0000 (21:08 +0100)
There is no reason to keep two separated core types sets. It
couldn't be fixed before Qt5 because of binary compatibility promise.

This patch merges QMetaType core types with ext core types.

This "simple" operation consists of:
- QDataStream version was incremented, because type ids are
saved in QVariant's data stream.
- QMetaType LastExtCoreType and FirstExtCoreType were replaced by
LastCoreType, FirstCoreType and new QMetaType::HighestInternalId.
- New tests checking QVariant data stream for Qt4 and for Qt5 versions
were added.

Change-Id: I02dd74d29317365c297a789a4eb7c9c5edc3b231
Reviewed-by: João Abecasis <joao.abecasis@nokia.com>
136 files changed:
src/corelib/io/qdatastream.cpp
src/corelib/io/qdatastream.h
src/corelib/kernel/qmetatype.cpp
src/corelib/kernel/qmetatype.h
src/corelib/kernel/qmetatype_p.h
src/corelib/kernel/qvariant.cpp
tests/auto/corelib/io/qdatastream/tst_qdatastream.cpp
tests/auto/corelib/kernel/qvariant/qvariant.pro
tests/auto/corelib/kernel/qvariant/qvariant.qrc [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/bool.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/char.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/double.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/float.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/int.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/long.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbitarray.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbitmap.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbrush.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbytearray.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qchar.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qcolor.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qcursor.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qdate.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qdatetime.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qeasingcurve.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qfont.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qicon.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qimage.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qkeysequence.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qline.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qlinef.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qlocale.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qlonglong.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qmatrix.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qmatrix4x4.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpalette.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpen.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpixmap.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpoint.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpointf.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpolygon.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qquaternion.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qrect.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qrectf.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qregexp.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qregion.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qsize.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qsizef.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qsizepolicy.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qstring.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qstringlist.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtextformat.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtextlength.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtime.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtransform.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qulonglong.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qurl.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvariant.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvarianthash.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvariantlist.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvariantmap.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvector2d.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvector3d.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvector4d.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/short.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/uchar.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/uint.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/ulong.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/ushort.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt4.9/void.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/bool.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/char.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/double.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/float.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/int.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/long.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbitarray.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbitmap.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbrush.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbytearray.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qchar.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qcolor.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qcursor.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qdate.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qdatetime.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qeasingcurve.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qfont.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qicon.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qimage.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qkeysequence.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qline.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qlinef.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qlocale.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qlonglong.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qmatrix.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qmatrix4x4.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpalette.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpen.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpixmap.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpoint.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpointf.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpolygon.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpolygonf.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qquaternion.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qrect.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qrectf.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qregexp.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qregion.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qsize.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qsizef.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qsizepolicy.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qstring.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qstringlist.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtextformat.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtextlength.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtime.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtransform.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qulonglong.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qurl.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/quuid.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariant.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvarianthash.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariantlist.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariantmap.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector2d.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector3d.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector4d.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/short.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/uchar.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/uint.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/ulong.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/ushort.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/stream/qt5.0/void.bin [new file with mode: 0644]
tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
tests/benchmarks/corelib/kernel/qmetatype/tst_qmetatype.cpp
tests/benchmarks/corelib/kernel/qvariant/tst_qvariant.cpp

index 5dad9bd..614910a 100644 (file)
@@ -250,7 +250,7 @@ QT_BEGIN_NAMESPACE
         return retVal;
 
 enum {
-    DefaultStreamVersion = QDataStream::Qt_4_6
+    DefaultStreamVersion = QDataStream::Qt_5_0
 };
 
 // ### 5.0: when streaming invalid QVariants, just the type should
index ca10304..818e304 100644 (file)
@@ -87,7 +87,7 @@ public:
         Qt_4_7 = Qt_4_6,
         Qt_4_8 = Qt_4_7,
         Qt_4_9 = Qt_4_8,
-        Qt_5_0 = Qt_4_8
+        Qt_5_0 = 13
 #if QT_VERSION >= 0x050100
 #error Add the datastream version for this Qt version
 #endif
index 1c106f4..e5fd8a5 100644 (file)
@@ -228,14 +228,13 @@ template<> struct TypeDefiniton<QRegExp> { static const bool IsAvailable = false
 
     \value User  Base value for user types
 
-    \omitvalue FirstCoreExtType
     \omitvalue FirstGuiType
     \omitvalue FirstWidgetsType
-    \omitvalue LastCoreExtType
     \omitvalue LastCoreType
     \omitvalue LastGuiType
     \omitvalue LastWidgetsType
     \omitvalue QReal
+    \omitvalue HighestInternalId
 
     Additional types can be registered using Q_DECLARE_METATYPE().
 
@@ -362,10 +361,10 @@ const char *QMetaType::typeName(int type)
     // In theory it can be filled during compilation time, but for some reason template code
     // that is able to do it causes GCC 4.6 to generate additional 3K of executable code. Probably
     // it is not worth of it.
-    static const char *namesCache[QMetaType::LastCoreExtType + 1];
+    static const char *namesCache[QMetaType::HighestInternalId + 1];
 
     const char *result;
-    if (type <= QMetaType::LastCoreExtType && ((result = namesCache[type])))
+    if (type <= QMetaType::HighestInternalId && ((result = namesCache[type])))
         return result;
 
 #define QT_METATYPE_TYPEID_TYPENAME_CONVERTER(MetaTypeName, TypeId, RealName) \
@@ -388,7 +387,7 @@ const char *QMetaType::typeName(int type)
     }
 #undef QT_METATYPE_TYPEID_TYPENAME_CONVERTER
 
-    Q_ASSERT(type <= QMetaType::LastCoreExtType);
+    Q_ASSERT(type <= QMetaType::HighestInternalId);
     namesCache[type] = result;
     return result;
 }
index 5a55ca9..bbe4824 100644 (file)
@@ -65,16 +65,16 @@ QT_BEGIN_NAMESPACE
     F(LongLong, 4, qlonglong) \
     F(ULongLong, 5, qulonglong) \
     F(Double, 6, double) \
-    F(Long, 129, long) \
-    F(Short, 130, short) \
-    F(Char, 131, char) \
-    F(ULong, 132, ulong) \
-    F(UShort, 133, ushort) \
-    F(UChar, 134, uchar) \
-    F(Float, 135, float) \
+    F(Long, 32, long) \
+    F(Short, 33, short) \
+    F(Char, 34, char) \
+    F(ULong, 35, ulong) \
+    F(UShort, 36, ushort) \
+    F(UChar, 37, uchar) \
+    F(Float, 38, float) \
 
 #define QT_FOR_EACH_STATIC_PRIMITIVE_POINTER(F)\
-    F(VoidStar, 128, void*) \
+    F(VoidStar, 31, void*) \
 
 #define QT_FOR_EACH_STATIC_CORE_CLASS(F)\
     F(QChar, 7, QChar) \
@@ -98,12 +98,12 @@ QT_BEGIN_NAMESPACE
     F(QRegExp, 27, QRegExp) \
     F(QEasingCurve, 29, QEasingCurve) \
     F(QUuid, 30, QUuid) \
-    F(QModelIndex, 31, QModelIndex) \
-    F(QVariant, 138, QVariant) \
+    F(QVariant, 41, QVariant) \
+    F(QModelIndex, 42, QModelIndex) \
 
 #define QT_FOR_EACH_STATIC_CORE_POINTER(F)\
-    F(QObjectStar, 136, QObject*) \
-    F(QWidgetStar, 137, QWidget*) \
+    F(QObjectStar, 39, QObject*) \
+    F(QWidgetStar, 40, QWidget*) \
 
 #define QT_FOR_EACH_STATIC_CORE_TEMPLATE(F)\
     F(QVariantMap, 8, QVariantMap) \
@@ -188,8 +188,7 @@ public:
         LastGuiType = QPolygonF,
         FirstWidgetsType = QIcon,
         LastWidgetsType = QSizePolicy,
-        FirstCoreExtType = VoidStar,
-        LastCoreExtType = QVariant,
+        HighestInternalId = LastWidgetsType,
 
 // This logic must match the one in qglobal.h
 #if defined(QT_COORD_TYPE)
index e7a7ed8..45768bb 100644 (file)
@@ -68,8 +68,6 @@ static inline int moduleForType(const int typeId)
         return Gui;
     if (typeId <= QMetaType::LastWidgetsType)
         return Widgets;
-    if (typeId <= QMetaType::LastCoreExtType)
-        return Core;
     return Unknown;
 }
 }
index e0d1114..c14e6ff 100644 (file)
@@ -1625,7 +1625,7 @@ QVariant::Type QVariant::nameToType(const char *name)
 
 #ifndef QT_NO_DATASTREAM
 enum { MapFromThreeCount = 36 };
-static const ushort map_from_three[MapFromThreeCount] =
+static const ushort mapIdFromQt3ToCurrent[MapFromThreeCount] =
 {
     QVariant::Invalid,
     QVariant::Map,
@@ -1675,26 +1675,45 @@ void QVariant::load(QDataStream &s)
 {
     clear();
 
-    quint32 u;
-    s >> u;
+    quint32 typeId;
+    s >> typeId;
     if (s.version() < QDataStream::Qt_4_0) {
-        if (u >= MapFromThreeCount)
+        if (typeId >= MapFromThreeCount)
             return;
-        u = map_from_three[u];
+        typeId = mapIdFromQt3ToCurrent[typeId];
+    } else if (s.version() < QDataStream::Qt_5_0) {
+        if (typeId >= 128 && typeId != QVariant::UserType) {
+            // In Qt4 id == 128 was FirstExtCoreType. In Qt5 ExtCoreTypes set was merged to CoreTypes
+            // by moving all ids down by 97.
+            typeId -= 97;
+        } else if (typeId == 69 /* QIcon */) {
+            // In Qt5 after modularization project this types where moved to a separate module (and ids were downgraded)
+            typeId = QMetaType::QIcon;
+        } else if (typeId == 75 /* QSizePolicy */) {
+            typeId = QMetaType::QSizePolicy;
+        } else if (typeId >= 70) {
+            // and as a result this types recieved lower ids too
+            if (typeId <= 74) { // QImage QPolygon QRegion QBitmap QCursor
+                typeId -=1;
+            } else if (typeId <= 86) { // QKeySequence QPen QTextLength QTextFormat QMatrix QTransform QMatrix4x4 QVector2D QVector3D QVector4D QQuaternion
+                typeId -=2;
+            }
+        }
     }
+
     qint8 is_null = false;
     if (s.version() >= QDataStream::Qt_4_2)
         s >> is_null;
-    if (u == QVariant::UserType) {
+    if (typeId == QVariant::UserType) {
         QByteArray name;
         s >> name;
-        u = QMetaType::type(name);
-        if (!u) {
+        typeId = QMetaType::type(name);
+        if (!typeId) {
             s.setStatus(QDataStream::ReadCorruptData);
             return;
         }
     }
-    create(static_cast<int>(u), 0);
+    create(static_cast<int>(typeId), 0);
     d.is_null = is_null;
 
     if (!isValid()) {
@@ -1720,12 +1739,12 @@ void QVariant::load(QDataStream &s)
 */
 void QVariant::save(QDataStream &s) const
 {
-    quint32 tp = type();
+    quint32 typeId = type();
     if (s.version() < QDataStream::Qt_4_0) {
         int i;
         for (i = MapFromThreeCount - 1; i >= 0; i--) {
-            if (map_from_three[i] == tp) {
-                tp = i;
+            if (mapIdFromQt3ToCurrent[i] == typeId) {
+                typeId = i;
                 break;
             }
         }
@@ -1733,11 +1752,29 @@ void QVariant::save(QDataStream &s) const
             s << QVariant();
             return;
         }
+    } else if (s.version() < QDataStream::Qt_5_0) {
+        if (typeId >= 128 - 97 && typeId <= LastCoreType) {
+            // In Qt4 id == 128 was FirstExtCoreType. In Qt5 ExtCoreTypes set was merged to CoreTypes
+            // by moving all ids down by 97.
+            typeId += 97;
+        } else if (typeId == QMetaType::QIcon) {
+            // In Qt5 after modularization project this types where moved to a separate module (and ids were downgraded)
+            typeId = 69;
+        } else if (typeId == QMetaType::QSizePolicy) {
+            typeId = 75;
+        } else if (typeId >= QMetaType::QImage) {
+            // and as a result this types recieved lower ids too
+            if (typeId <= QMetaType::QCursor) {
+                typeId +=1;
+            } else if (typeId <= QMetaType::QQuaternion) {
+                typeId +=2;
+            }
+        }
     }
-    s << tp;
+    s << typeId;
     if (s.version() >= QDataStream::Qt_4_2)
         s << qint8(d.is_null);
-    if (tp == QVariant::UserType) {
+    if (typeId == QVariant::UserType) {
         s << QMetaType::typeName(userType());
     }
 
@@ -2411,17 +2448,15 @@ static const quint32 qCanConvertMatrix[QVariant::LastCoreType + 1] =
 */
 bool QVariant::canConvert(Type t) const
 {
-    //we can treat floats as double
-    //the reason for not doing it the "proper" way is that QMetaType::Float's value is 135,
-    //which can't be handled by qCanConvertMatrix
-    //In addition QVariant::Type doesn't have a Float value, so we're using QMetaType::Float
+    // TODO Reimplement this function, currently it works but it is a historical mess.
     const uint currentType = ((d.type == QMetaType::Float) ? QVariant::Double : d.type);
     if (uint(t) == uint(QMetaType::Float)) t = QVariant::Double;
 
     if (currentType == uint(t))
         return true;
 
-    if (currentType > QVariant::LastCoreType || t > QVariant::LastCoreType) {
+    // FIXME It should be LastCoreType intead of Uuid
+    if (currentType > QVariant::Uuid || t > QVariant::Uuid) {
         switch (uint(t)) {
         case QVariant::Int:
             return currentType == QVariant::KeySequence
index 4f39af9..6aff143 100644 (file)
@@ -255,7 +255,8 @@ static int NColorRoles[] = {
     QPalette::ToolTipText + 1,     // Qt_4_4
     QPalette::ToolTipText + 1,     // Qt_4_5
     QPalette::ToolTipText + 1,     // Qt_4_6
-    0                              // add the correct value for Qt_4_7 here later
+    QPalette::ToolTipText + 1,     // Qt_5_0
+    0                              // add the correct value for Qt_5_1 here later
 };
 
 // Testing get/set functions
index 93877a1..48229ee 100644 (file)
@@ -2,5 +2,6 @@ CONFIG += testcase
 TARGET = tst_qvariant
 QT += widgets network testlib
 SOURCES = tst_qvariant.cpp
+RESOURCES += qvariant.qrc
 
 mac: CONFIG += insignificant_test # QTBUG-QTBUG-22747
diff --git a/tests/auto/corelib/kernel/qvariant/qvariant.qrc b/tests/auto/corelib/kernel/qvariant/qvariant.qrc
new file mode 100644 (file)
index 0000000..e6f7bda
--- /dev/null
@@ -0,0 +1,6 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+    <file>stream/qt4.9/</file>
+    <file>stream/qt5.0/</file>
+</qresource>
+</RCC>
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/bool.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/bool.bin
new file mode 100644 (file)
index 0000000..7929cb4
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/bool.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/char.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/char.bin
new file mode 100644 (file)
index 0000000..3c15cb7
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/char.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/double.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/double.bin
new file mode 100644 (file)
index 0000000..ac9ed17
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/double.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/float.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/float.bin
new file mode 100644 (file)
index 0000000..540c010
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/float.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/int.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/int.bin
new file mode 100644 (file)
index 0000000..6b47a9a
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/int.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/long.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/long.bin
new file mode 100644 (file)
index 0000000..66891d5
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/long.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbitarray.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbitarray.bin
new file mode 100644 (file)
index 0000000..e534174
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbitarray.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbitmap.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbitmap.bin
new file mode 100644 (file)
index 0000000..13f4dc3
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbitmap.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbrush.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbrush.bin
new file mode 100644 (file)
index 0000000..60ea8a2
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbrush.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbytearray.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbytearray.bin
new file mode 100644 (file)
index 0000000..1989781
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbytearray.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qchar.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qchar.bin
new file mode 100644 (file)
index 0000000..f4ef9df
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qchar.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qcolor.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qcolor.bin
new file mode 100644 (file)
index 0000000..ba1c332
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qcolor.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qcursor.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qcursor.bin
new file mode 100644 (file)
index 0000000..545fa96
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qcursor.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qdate.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qdate.bin
new file mode 100644 (file)
index 0000000..d3281b1
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qdate.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qdatetime.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qdatetime.bin
new file mode 100644 (file)
index 0000000..664eb73
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qdatetime.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qeasingcurve.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qeasingcurve.bin
new file mode 100644 (file)
index 0000000..b9b9ea6
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qeasingcurve.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qfont.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qfont.bin
new file mode 100644 (file)
index 0000000..76bc5d9
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qfont.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qicon.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qicon.bin
new file mode 100644 (file)
index 0000000..2f87132
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qicon.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qimage.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qimage.bin
new file mode 100644 (file)
index 0000000..0ab1cbf
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qimage.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qkeysequence.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qkeysequence.bin
new file mode 100644 (file)
index 0000000..03db168
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qkeysequence.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qline.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qline.bin
new file mode 100644 (file)
index 0000000..f1f5cde
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qline.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qlinef.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qlinef.bin
new file mode 100644 (file)
index 0000000..4b1c2f0
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qlinef.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qlocale.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qlocale.bin
new file mode 100644 (file)
index 0000000..44d9d1c
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qlocale.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qlonglong.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qlonglong.bin
new file mode 100644 (file)
index 0000000..f1c297a
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qlonglong.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qmatrix.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qmatrix.bin
new file mode 100644 (file)
index 0000000..fc88e25
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qmatrix.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qmatrix4x4.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qmatrix4x4.bin
new file mode 100644 (file)
index 0000000..3a8b664
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qmatrix4x4.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpalette.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpalette.bin
new file mode 100644 (file)
index 0000000..1ad9463
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpalette.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpen.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpen.bin
new file mode 100644 (file)
index 0000000..1eff5c8
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpen.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpixmap.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpixmap.bin
new file mode 100644 (file)
index 0000000..ce9cb8c
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpixmap.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpoint.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpoint.bin
new file mode 100644 (file)
index 0000000..ca66b1e
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpoint.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpointf.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpointf.bin
new file mode 100644 (file)
index 0000000..7aebb46
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpointf.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpolygon.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpolygon.bin
new file mode 100644 (file)
index 0000000..fbdab8f
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpolygon.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qquaternion.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qquaternion.bin
new file mode 100644 (file)
index 0000000..01ee6dc
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qquaternion.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qrect.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qrect.bin
new file mode 100644 (file)
index 0000000..70730db
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qrect.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qrectf.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qrectf.bin
new file mode 100644 (file)
index 0000000..2f8dac6
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qrectf.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qregexp.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qregexp.bin
new file mode 100644 (file)
index 0000000..db8518e
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qregexp.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qregion.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qregion.bin
new file mode 100644 (file)
index 0000000..27eec8c
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qregion.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qsize.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qsize.bin
new file mode 100644 (file)
index 0000000..fec8c62
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qsize.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qsizef.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qsizef.bin
new file mode 100644 (file)
index 0000000..210976a
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qsizef.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qsizepolicy.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qsizepolicy.bin
new file mode 100644 (file)
index 0000000..00f1b29
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qsizepolicy.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qstring.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qstring.bin
new file mode 100644 (file)
index 0000000..f44d7cb
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qstring.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qstringlist.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qstringlist.bin
new file mode 100644 (file)
index 0000000..34e6f73
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qstringlist.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtextformat.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtextformat.bin
new file mode 100644 (file)
index 0000000..91382db
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtextformat.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtextlength.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtextlength.bin
new file mode 100644 (file)
index 0000000..945dfc0
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtextlength.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtime.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtime.bin
new file mode 100644 (file)
index 0000000..31f63fd
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtime.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtransform.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtransform.bin
new file mode 100644 (file)
index 0000000..53c4db5
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtransform.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qulonglong.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qulonglong.bin
new file mode 100644 (file)
index 0000000..e321e7d
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qulonglong.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qurl.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qurl.bin
new file mode 100644 (file)
index 0000000..4e444b7
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qurl.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvariant.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvariant.bin
new file mode 100644 (file)
index 0000000..7d5c530
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvariant.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvarianthash.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvarianthash.bin
new file mode 100644 (file)
index 0000000..e2ffb00
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvarianthash.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvariantlist.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvariantlist.bin
new file mode 100644 (file)
index 0000000..cf95d44
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvariantlist.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvariantmap.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvariantmap.bin
new file mode 100644 (file)
index 0000000..6b0b1fb
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvariantmap.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvector2d.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvector2d.bin
new file mode 100644 (file)
index 0000000..a219ab6
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvector2d.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvector3d.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvector3d.bin
new file mode 100644 (file)
index 0000000..4444fb6
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvector3d.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvector4d.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvector4d.bin
new file mode 100644 (file)
index 0000000..46bcc26
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvector4d.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/short.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/short.bin
new file mode 100644 (file)
index 0000000..124776f
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/short.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/uchar.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/uchar.bin
new file mode 100644 (file)
index 0000000..1dea2c1
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/uchar.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/uint.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/uint.bin
new file mode 100644 (file)
index 0000000..086e080
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/uint.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/ulong.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/ulong.bin
new file mode 100644 (file)
index 0000000..92dfdaa
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/ulong.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/ushort.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/ushort.bin
new file mode 100644 (file)
index 0000000..d386a76
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/ushort.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/void.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/void.bin
new file mode 100644 (file)
index 0000000..7337dc7
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/void.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/bool.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/bool.bin
new file mode 100644 (file)
index 0000000..7929cb4
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/bool.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/char.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/char.bin
new file mode 100644 (file)
index 0000000..4422f29
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/char.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/double.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/double.bin
new file mode 100644 (file)
index 0000000..ac9ed17
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/double.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/float.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/float.bin
new file mode 100644 (file)
index 0000000..fc7cca7
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/float.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/int.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/int.bin
new file mode 100644 (file)
index 0000000..6b47a9a
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/int.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/long.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/long.bin
new file mode 100644 (file)
index 0000000..5a1ed0d
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/long.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbitarray.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbitarray.bin
new file mode 100644 (file)
index 0000000..e534174
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbitarray.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbitmap.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbitmap.bin
new file mode 100644 (file)
index 0000000..511e260
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbitmap.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbrush.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbrush.bin
new file mode 100644 (file)
index 0000000..60ea8a2
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbrush.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbytearray.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbytearray.bin
new file mode 100644 (file)
index 0000000..1989781
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbytearray.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qchar.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qchar.bin
new file mode 100644 (file)
index 0000000..f4ef9df
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qchar.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qcolor.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qcolor.bin
new file mode 100644 (file)
index 0000000..ba1c332
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qcolor.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qcursor.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qcursor.bin
new file mode 100644 (file)
index 0000000..a7be10e
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qcursor.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qdate.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qdate.bin
new file mode 100644 (file)
index 0000000..d3281b1
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qdate.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qdatetime.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qdatetime.bin
new file mode 100644 (file)
index 0000000..664eb73
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qdatetime.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qeasingcurve.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qeasingcurve.bin
new file mode 100644 (file)
index 0000000..5cf664e
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qeasingcurve.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qfont.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qfont.bin
new file mode 100644 (file)
index 0000000..e8aa03a
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qfont.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qicon.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qicon.bin
new file mode 100644 (file)
index 0000000..bf3ca9e
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qicon.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qimage.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qimage.bin
new file mode 100644 (file)
index 0000000..03665c1
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qimage.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qkeysequence.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qkeysequence.bin
new file mode 100644 (file)
index 0000000..7f7447a
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qkeysequence.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qline.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qline.bin
new file mode 100644 (file)
index 0000000..f1f5cde
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qline.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qlinef.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qlinef.bin
new file mode 100644 (file)
index 0000000..4b1c2f0
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qlinef.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qlocale.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qlocale.bin
new file mode 100644 (file)
index 0000000..44d9d1c
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qlocale.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qlonglong.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qlonglong.bin
new file mode 100644 (file)
index 0000000..f1c297a
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qlonglong.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qmatrix.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qmatrix.bin
new file mode 100644 (file)
index 0000000..93434b4
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qmatrix.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qmatrix4x4.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qmatrix4x4.bin
new file mode 100644 (file)
index 0000000..8d3f9b8
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qmatrix4x4.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpalette.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpalette.bin
new file mode 100644 (file)
index 0000000..503c1a4
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpalette.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpen.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpen.bin
new file mode 100644 (file)
index 0000000..edafc2d
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpen.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpixmap.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpixmap.bin
new file mode 100644 (file)
index 0000000..ce9cb8c
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpixmap.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpoint.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpoint.bin
new file mode 100644 (file)
index 0000000..ca66b1e
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpoint.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpointf.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpointf.bin
new file mode 100644 (file)
index 0000000..7aebb46
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpointf.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpolygon.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpolygon.bin
new file mode 100644 (file)
index 0000000..8d3275d
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpolygon.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpolygonf.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpolygonf.bin
new file mode 100644 (file)
index 0000000..3e85997
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpolygonf.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qquaternion.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qquaternion.bin
new file mode 100644 (file)
index 0000000..c498f8f
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qquaternion.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qrect.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qrect.bin
new file mode 100644 (file)
index 0000000..70730db
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qrect.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qrectf.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qrectf.bin
new file mode 100644 (file)
index 0000000..2f8dac6
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qrectf.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qregexp.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qregexp.bin
new file mode 100644 (file)
index 0000000..db8518e
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qregexp.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qregion.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qregion.bin
new file mode 100644 (file)
index 0000000..ecf01a8
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qregion.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qsize.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qsize.bin
new file mode 100644 (file)
index 0000000..fec8c62
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qsize.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qsizef.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qsizef.bin
new file mode 100644 (file)
index 0000000..210976a
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qsizef.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qsizepolicy.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qsizepolicy.bin
new file mode 100644 (file)
index 0000000..cfdf49b
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qsizepolicy.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qstring.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qstring.bin
new file mode 100644 (file)
index 0000000..f44d7cb
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qstring.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qstringlist.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qstringlist.bin
new file mode 100644 (file)
index 0000000..34e6f73
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qstringlist.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtextformat.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtextformat.bin
new file mode 100644 (file)
index 0000000..432068d
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtextformat.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtextlength.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtextlength.bin
new file mode 100644 (file)
index 0000000..3b209f1
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtextlength.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtime.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtime.bin
new file mode 100644 (file)
index 0000000..31f63fd
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtime.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtransform.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtransform.bin
new file mode 100644 (file)
index 0000000..52cddb5
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtransform.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qulonglong.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qulonglong.bin
new file mode 100644 (file)
index 0000000..e321e7d
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qulonglong.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qurl.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qurl.bin
new file mode 100644 (file)
index 0000000..4e444b7
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qurl.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/quuid.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/quuid.bin
new file mode 100644 (file)
index 0000000..a8d57c6
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/quuid.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariant.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariant.bin
new file mode 100644 (file)
index 0000000..1c8bc45
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariant.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvarianthash.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvarianthash.bin
new file mode 100644 (file)
index 0000000..e2ffb00
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvarianthash.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariantlist.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariantlist.bin
new file mode 100644 (file)
index 0000000..cf95d44
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariantlist.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariantmap.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariantmap.bin
new file mode 100644 (file)
index 0000000..6b0b1fb
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariantmap.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector2d.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector2d.bin
new file mode 100644 (file)
index 0000000..2bc3aeb
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector2d.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector3d.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector3d.bin
new file mode 100644 (file)
index 0000000..b035f7f
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector3d.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector4d.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector4d.bin
new file mode 100644 (file)
index 0000000..a804c5e
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector4d.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/short.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/short.bin
new file mode 100644 (file)
index 0000000..e7ae61f
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/short.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/uchar.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/uchar.bin
new file mode 100644 (file)
index 0000000..426f974
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/uchar.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/uint.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/uint.bin
new file mode 100644 (file)
index 0000000..086e080
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/uint.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/ulong.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/ulong.bin
new file mode 100644 (file)
index 0000000..399a9ea
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/ulong.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/ushort.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/ushort.bin
new file mode 100644 (file)
index 0000000..25cb14e
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/ushort.bin differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/void.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/void.bin
new file mode 100644 (file)
index 0000000..7337dc7
Binary files /dev/null and b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/void.bin differ
index f40b1ea..f88e795 100644 (file)
@@ -262,6 +262,19 @@ private slots:
     void forwardDeclare();
     void debugStream_data();
     void debugStream();
+
+    void loadQt4Stream_data();
+    void loadQt4Stream();
+    void saveQt4Stream_data();
+    void saveQt4Stream();
+    void loadQt5Stream_data();
+    void loadQt5Stream();
+    void saveQt5Stream_data();
+    void saveQt5Stream();
+private:
+    void dataStream_data(QDataStream::Version version);
+    void loadQVariantFromDataStream(QDataStream::Version version);
+    void saveQVariantFromDataStream(QDataStream::Version version);
 };
 
 Q_DECLARE_METATYPE(QDate)
@@ -2003,13 +2016,6 @@ Q_DECLARE_METATYPE(MyType*)
 void tst_QVariant::userType()
 {
     {
-        QVariant userVariant(QVariant::UserType);
-
-        QVERIFY(userVariant.isValid());
-        QVERIFY(userVariant.isNull());
-    }
-
-    {
         MyType data(1, "eins");
         MyType data2(2, "zwei");
 
@@ -3338,6 +3344,123 @@ void tst_QVariant::forwardDeclare()
     QCOMPARE(qvariant_cast<Forward*>(v), f);
 }
 
+void tst_QVariant::loadQt5Stream_data()
+{
+    dataStream_data(QDataStream::Qt_5_0);
+}
+
+void tst_QVariant::loadQt5Stream()
+{
+    loadQVariantFromDataStream(QDataStream::Qt_5_0);
+}
+
+void tst_QVariant::saveQt5Stream_data()
+{
+    dataStream_data(QDataStream::Qt_5_0);
+}
+
+void tst_QVariant::saveQt5Stream()
+{
+    saveQVariantFromDataStream(QDataStream::Qt_5_0);
+}
+
+void tst_QVariant::loadQt4Stream_data()
+{
+    dataStream_data(QDataStream::Qt_4_9);
+}
+
+void tst_QVariant::loadQt4Stream()
+{
+    loadQVariantFromDataStream(QDataStream::Qt_4_9);
+}
+
+void tst_QVariant::saveQt4Stream_data()
+{
+    dataStream_data(QDataStream::Qt_4_9);
+}
+
+void tst_QVariant::saveQt4Stream()
+{
+    saveQVariantFromDataStream(QDataStream::Qt_4_9);
+}
+
+void tst_QVariant::dataStream_data(QDataStream::Version version)
+{
+    QTest::addColumn<QString>("fileName");
+
+    QString path;
+    switch (version) {
+    case QDataStream::Qt_4_9:
+        path = QString::fromLatin1("qt4.9");
+        break;
+    case QDataStream::Qt_5_0:
+        path = QString::fromLatin1("qt5.0");
+        break;
+    default:
+        Q_UNIMPLEMENTED();
+    }
+
+    path = path.prepend(":/stream/").append("/");
+    QDir dir(path);
+    uint i = 0;
+    foreach (const QFileInfo &fileInfo, dir.entryInfoList(QStringList() << "*.bin")) {
+        QTest::newRow((path + fileInfo.fileName()).toLatin1()) << fileInfo.filePath();
+        i += 1;
+    }
+    QVERIFY(i > 10);
+}
+
+void tst_QVariant::loadQVariantFromDataStream(QDataStream::Version version)
+{
+    QFETCH(QString, fileName);
+
+    QFile file(fileName);
+    QVERIFY(file.open(QIODevice::ReadOnly));
+
+    QDataStream stream(&file);
+    stream.setVersion(version);
+
+    QString typeName;
+    QVariant loadedVariant;
+    stream >> typeName >> loadedVariant;
+
+    const int id = QMetaType::type(typeName.toLatin1());
+    QVariant constructedVariant(static_cast<QVariant::Type>(id));
+    QCOMPARE(constructedVariant.userType(), id);
+    QCOMPARE(QMetaType::typeName(loadedVariant.userType()), typeName.toLatin1().constData());
+    QCOMPARE(loadedVariant.userType(), constructedVariant.userType());
+}
+
+void tst_QVariant::saveQVariantFromDataStream(QDataStream::Version version)
+{
+    QFETCH(QString, fileName);
+
+    QFile file(fileName);
+    QVERIFY(file.open(QIODevice::ReadOnly));
+    QDataStream dataFileStream(&file);
+
+    QString typeName;
+    dataFileStream >> typeName;
+    QByteArray data = file.readAll();
+    const int id = QMetaType::type(typeName.toLatin1());
+
+    QBuffer buffer;
+    buffer.open(QIODevice::ReadWrite);
+    QDataStream stream(&buffer);
+    stream.setVersion(version);
+
+    QVariant constructedVariant(static_cast<QVariant::Type>(id));
+    QCOMPARE(constructedVariant.userType(), id);
+    stream << constructedVariant;
+
+    // We are testing QVariant there is no point in testing full array.
+    QCOMPARE(buffer.data().left(5), data.left(5));
+
+    buffer.seek(0);
+    QVariant recunstructedVariant;
+    stream >> recunstructedVariant;
+    QCOMPARE(recunstructedVariant.userType(), constructedVariant.userType());
+}
 
 class MessageHandler {
 public:
@@ -3397,6 +3520,5 @@ void tst_QVariant::debugStream()
     QVERIFY(msgHandler.testPassed());
 }
 
-
 QTEST_MAIN(tst_QVariant)
 #include "tst_qvariant.moc"
index 2faacc2..558604e 100644 (file)
@@ -242,8 +242,6 @@ void tst_QMetaType::constructCoreType_data()
     QTest::addColumn<int>("typeId");
     for (int i = 0; i <= QMetaType::LastCoreType; ++i)
         QTest::newRow(QMetaType::typeName(i)) << i;
-    for (int i = QMetaType::FirstCoreExtType; i <= QMetaType::LastCoreExtType; ++i)
-        QTest::newRow(QMetaType::typeName(i)) << i;
     // GUI types are tested in tst_QGuiMetaType.
 }
 
index 8f0a331..52999c1 100644 (file)
@@ -307,8 +307,6 @@ void tst_qvariant::createCoreType_data()
     QTest::addColumn<int>("typeId");
     for (int i = 0; i <= QMetaType::LastCoreType; ++i)
         QTest::newRow(QMetaType::typeName(i)) << i;
-    for (int i = QMetaType::FirstCoreExtType; i <= QMetaType::LastCoreExtType; ++i)
-        QTest::newRow(QMetaType::typeName(i)) << i;
 }
 
 // Tests how fast a Qt core type can be default-constructed by a