From 074b719b7909fb30a72ffb4a6e2105924a7816a7 Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Thu, 29 Oct 2009 13:30:59 +0100
Subject: [PATCH] debugger: add autotest for synchroneous dumpers

QVariant, QPoint[F], QSize[F], QRect[F]
---
 tests/auto/debugger/tst_gdb.cpp | 454 ++++++++++++++++++++++++--------
 1 file changed, 348 insertions(+), 106 deletions(-)

diff --git a/tests/auto/debugger/tst_gdb.cpp b/tests/auto/debugger/tst_gdb.cpp
index 1dc69746789..51bf50d5554 100644
--- a/tests/auto/debugger/tst_gdb.cpp
+++ b/tests/auto/debugger/tst_gdb.cpp
@@ -1,4 +1,4 @@
-
+//
 //bool checkUninitialized = true;
 bool checkUninitialized = false;
 //#define DO_DEBUG 1
@@ -7,10 +7,19 @@ bool checkUninitialized = false;
 #include <QtCore/QMutex>
 #include <QtCore/QWaitCondition>
 
-#include <QtCore/private/qobject_p.h>
 
-//#include <QtGui/QStandardItemModel>
-//#include <QtGui/QStringListModel>
+/*
+#include <QtGui/QBitmap>
+#include <QtGui/QBrush>
+#include <QtGui/QColor>
+#include <QtGui/QCursor>
+#include <QtGui/QFont>
+#include <QtGui/QIcon>
+#include <QtGui/QKeySequence>
+#include <QtGui/QQuaternion>
+#include <QtGui/QStandardItemModel>
+#include <QtGui/QStringListModel>
+*/
 
 #include <QtTest/QtTest>
 
@@ -194,6 +203,8 @@ private slots:
     void dump_Foo();
     void dump_QByteArray();
     void dump_QChar();
+    void dump_QHash_int_int();
+    void dump_QHash_QString_QString();
     void dump_QList_char();
     void dump_QList_char_star();
     void dump_QList_int();
@@ -201,16 +212,18 @@ private slots:
     void dump_QList_QString();
     void dump_QList_QString3();
     void dump_QList_Int3();
+    void dump_QPoint();
+    void dump_QRect();
+    void dump_QSize();
     void dump_QStack();
     void dump_QString();
     void dump_QStringList();
+    void dump_QVariant();
+    void dump_QVector();
     void dump_QWeakPointer_11();
     void dump_QWeakPointer_12();
     void dump_QWeakPointer_13();
     void dump_QWeakPointer_2();
-    void dump_QVector();
-
-    void dump_QHash();
 
 public slots:
     void dumperCompatibility();
@@ -239,9 +252,6 @@ public slots:
     void dump_QPixmap();
     void dump_QSharedPointer();
     void dump_QTextCodec();
-    void dump_QVariant_invalid();
-    void dump_QVariant_QString();
-    void dump_QVariant_QStringList();
     void dumpStdVector();
 #endif
 
@@ -642,7 +652,7 @@ void tst_Gdb::initTestCase()
             funcName = ba.mid(5, pos - 5) + '@';
         } else if (ba.startsWith("    /*")) {
             int pos = ba.indexOf('*', 7);
-            m_lineForLabel[funcName + ba.mid(7, pos - 8)] = i + 1;
+            m_lineForLabel[(funcName + ba.mid(7, pos - 8)).trimmed()] = i + 1;
         }
     }
     m_thread.startup(gdbProc);
@@ -677,6 +687,9 @@ void tst_Gdb::run(const QByteArray &label, const QByteArray &expected0,
     //qDebug() << "OUTPUT: " << locals.toString() << "\n\n";
 
     QByteArray actual = received.trimmed();
+    int pos = actual.indexOf("^done");
+    if (pos != -1)
+        actual = actual.left(pos);
     if (actual.endsWith("\\n"))
         actual.chop(2);
     QByteArray expected = "locals={iname='local',name='Locals',value=' ',type=' ',"
@@ -1345,59 +1358,6 @@ void tst_Gdb::dump_QFileInfo()
     testDumper(expected, &fi, NS"QFileInfo", true);
 }
 
-void tst_Gdb::dump_QHash()
-{
-    QHash<QString, QList<int> > hash;
-    hash.insert("Hallo", QList<int>());
-    hash.insert("Welt", QList<int>() << 1);
-    hash.insert("!", QList<int>() << 1 << 2);
-    hash.insert("!", QList<int>() << 1 << 2);
-}
-
-template <typename K, typename V>
-void tst_Gdb::dump_QHashNodeHelper(QHash<K, V> &hash)
-{
-    typename QHash<K, V>::iterator it = hash.begin();
-    typedef QHashNode<K, V> HashNode;
-    HashNode *dummy = 0;
-    HashNode *node =
-        reinterpret_cast<HashNode *>(reinterpret_cast<char *>(const_cast<K *>(&it.key())) -
-            size_t(&dummy->key));
-    const K &key = it.key();
-    const V &val = it.value();
-    QByteArray expected("value='");
-    if (isSimpleType<V>())
-        expected.append(valToString(val));
-    expected.append("',numchild='2',children=[{name='key',type='").
-        append(typeToString<K>()).append("',addr='").append(ptrToBa(&key)).
-        append("'},{name='value',type='").append(typeToString<V>()).
-        append("',addr='").append(ptrToBa(&val)).append("'}]");
-    testDumper(expected, node, NS"QHashNode", true,
-        getMapType<K, V>(), "", sizeof(it.key()), sizeof(it.value()));
-}
-
-void tst_Gdb::dump_QHashNode()
-{
-    // Case 1: simple type -> simple type.
-    QHash<int, int> hash1;
-    hash1[2] = 3;
-    dump_QHashNodeHelper(hash1);
-
-    // Case 2: simple type -> composite type.
-    QHash<int, QString> hash2;
-    hash2[5] = "String 7";
-    dump_QHashNodeHelper(hash2);
-
-    // Case 3: composite type -> simple type
-    QHash<QString, int> hash3;
-    hash3["String 11"] = 13;
-    dump_QHashNodeHelper(hash3);
-
-    // Case 4: composite type -> composite type
-    QHash<QString, QString> hash4;
-    hash4["String 17"] = "String 19";
-    dump_QHashNodeHelper(hash4);
-}
 
 void tst_Gdb::dump_QImageHelper(const QImage &img)
 {
@@ -2375,38 +2335,6 @@ void tst_Gdb::dump_QSharedPointer()
 #endif
 }
 
-void tst_Gdb::dump_QVariant_invalid()
-{
-    QVariant v;
-    testDumper("value='(invalid)',type='$T',numchild='0'",
-        &v, NS"QVariant", false);
-}
-
-void tst_Gdb::dump_QVariant_QString()
-{
-    QVariant v = "abc";
-    testDumper("value='KFFTdHJpbmcpICJhYmMi',valueencoded='5',type='$T',"
-        "numchild='0'",
-        &v, NS"QVariant", true);
-/*
-    FIXME: the QString version should have a child:
-    testDumper("value='KFFTdHJpbmcpICJhYmMi',valueencoded='5',type='$T',"
-        "numchild='1',children=[{name='value',value='IgBhAGIAYwAiAA==',"
-        "valueencoded='4',type='QString',numchild='0'}]",
-        &v, NS"QVariant", true);
-*/
-}
-
-void tst_Gdb::dump_QVariant_QStringList()
-{
-    QVariant v = QStringList() << "Hi";
-    testDumper("value='(QStringList) ',type='$T',numchild='1',"
-        "children=[{name='value',exp='(*('myns::QStringList'*)%)',"
-        "type='QStringList',numchild='1'}]"
-            << QByteArray::number(quintptr(&v)),
-        &v, NS"QVariant", true);
-}
-
 void tst_Gdb::dump_StdVector()
 {
     std::vector<std::list<int> *> vector;
@@ -2453,6 +2381,235 @@ void tst_Gdb::dump_QTextCodec()
 
 #endif // #if 0
 
+///////////////////////////// QVariant /////////////////////////////////
+
+void dump_QVariant()
+{
+    /*<not in scope>*/ QVariant v;
+    /* <invalid>    */ v = QBitArray();
+    /* QBitArray    */ v = 0; // QBitmap();
+    /* QBitMap      */ v = bool(true);
+    /* bool         */ v = 0; // QBrush();
+    /* QBrush       */ v = QByteArray("abc");
+    /* QByteArray   */ v = QChar(QLatin1Char('x'));
+    /* QChar        */ v = 0; // QColor();
+    /* QColor       */ v = 0; // QCursor();
+    /* QCursor      */ v = QDate();
+    /* QDate        */ v = QDateTime();
+    /* QDateTime    */ v = double(46);
+    /* double       */ v = 0; // QFont();
+    /* QFont        */ v = QVariantHash();
+    /* QVariantHash */ v = 0; // QIcon();
+    /* QIcon        */ v = 0; // QImage();
+    /* QImage       */ v = int(42);
+    /* int          */ v = 0; // QKeySequence();
+    /* QKeySequence */ v = QLine();
+    /* QLine        */ v = QLineF();
+    /* QLineF       */ v = QVariantList();
+    /* QVariantList */ v = QLocale();
+    /* QLocale      */ v = qlonglong(44);
+    /* qlonglong    */ v = QVariantMap();
+    /* QVariantMap  */ v = 0; // QTransform();
+    /* QTransform   */ v = 0; // QMatrix4x4();
+    /* QMatrix4x4   */ v = 0; // QPalette();
+    /* QPalette     */ v = 0; // QPen();
+    /* QPen         */ v = 0; // QPixmap();
+    /* QPixmap      */ v = QPoint(45, 46);
+    /* QPoint       */ v = 0; // QPointArray();
+    /* QPointArray  */ v = QPointF(41, 42);
+    /* QPointF      */ v = 0; // QPolygon();
+    /* QPolygon     */ v = 0; // QQuaternion();
+    /* QQuaternion  */ v = QRect();
+    /* QRect        */ v = QRectF();
+    /* QRectF       */ v = QRegExp("abc");
+    /* QRegExp      */ v = 0; // QRegion();
+    /* QRegion      */ v = QSize(0, 0);
+    /* QSize        */ v = QSizeF(0, 0);
+    /* QSizeF       */ v = 0; // QSizePolicy();
+    /* QSizePolicy  */ v = QString("abc");
+    /* QString      */ v = QStringList() << "abc";
+    /* QStringList  */ v = 0; // QTextFormat();
+    /* QTextFormat  */ v = 0; // QTextLength();
+    /* QTextLength  */ v = QTime();
+    /* QTime        */ v = uint(43);
+    /* uint         */ v = qulonglong(45);
+    /* qulonglong   */ v = QUrl("http://foo");
+    /* QUrl         */ v = 0; // QVector2D();
+    /* QVector2D    */ v = 0; // QVector3D();
+    /* QVector3D    */ v = 0; // QVector4D();
+    /* QVector4D    */ (void) 0;
+}
+
+void tst_Gdb::dump_QVariant()
+{
+    #define PRE "iname='local.v',addr='-',name='v',type='"NS"QVariant',"
+    prepare("dump_QVariant");
+    if (checkUninitialized) /*<not in scope>*/
+        run("A","{"PRE"'value=<not in scope>',numchild='0'}");
+    next(); 
+    run("<invalid>", "{"PRE"value='<invalid>',numchild='0'}");
+    next(); 
+    run("QBitArray", "{"PRE"value='("NS"QBitArray)',numchild='1',children=["
+        "{name='data',type='"NS"QBitArray',value='{...}',numchild='1'}]}",
+        "local.v");
+    next(); 
+    //run("QBitMap", "{"PRE"value="NS"QBitMap'',numchild='1',children=["
+    //    "]}", "local.v");
+    next(); 
+    run("bool", "{"PRE"value='true',numchild='0'}", "local.v");
+    next(); 
+    //run("QBrush", "{"PRE"value='"NS"QBrush',numchild='1',children=["
+    //    "]}", "local.v");
+    next(); 
+    run("QByteArray", "{"PRE"value='("NS"QByteArray)',numchild='1',"
+        "children=[{name='data',type='"NS"QByteArray',valueencoded='6',"
+            "value='616263',numchild='3'}]}", "local.v");
+    next(); 
+    run("QChar", "{"PRE"value='("NS"QChar)',numchild='1',"
+        "children=[{name='data',type='"NS"QChar',value=''x', ucs=120',numchild='0'}]}", "local.v");
+    next(); 
+    //run("QColor", "{"PRE"value='("NS"QColor)',numchild='1',children=["
+    //    "]}", "local.v");
+    next(); 
+    //run("QCursor", "{"PRE"value='',numchild='1',children=["
+    //    "]}", "local.v");
+    next(); 
+    run("QDate", "{"PRE"value='("NS"QDate)',numchild='1',children=["
+        "{name='data',type='"NS"QDate',value='{...}',numchild='1'}]}", "local.v");
+    next(); 
+    run("QDateTime", "{"PRE"value='("NS"QDateTime)',numchild='1',children=["
+        "{name='data',type='"NS"QDateTime',value='{...}',numchild='1'}]}", "local.v");
+    next(); 
+    run("double", "{"PRE"value='46',numchild='0'}", "local.v");
+    next(); 
+    //run("QFont", "{"PRE"value='(NS"QFont")',numchild='1',children=["
+    //    "{name='data',type='"NS"QFont',value='{...}',numchild='1'}]}", "local.v");
+    next(); 
+    run("QVariantHash", "{"PRE"value='("NS"QVariantHash)',numchild='1',children=["
+        "{name='data',type='"NS"QHash<"NS"QString, "NS"QVariant>',"
+            "value='<0 items>',numchild='0'}]}", "local.v");
+    next(); 
+    //run("QIcon", "{"PRE"value='("NS"QIcon)',numchild='1',children=["
+    //    "{name='data',type='"NS"QIcon',value='{...}',numchild='1'}]}", "local.v");
+    next(); 
+    //run("QImage", "{"PRE"value='("NS"QImage)',numchild='1',children=["
+    //    "{name='data',type='"NS"QImage',value='{...}',numchild='1'}]}", "local.v");
+    next(); 
+    run("int", "{"PRE"value='42',numchild='0'}", "local.v");
+    next(); 
+    //run("QKeySequence", "{"PRE"value='("NS"QKeySequence)',numchild='1'",
+    //  "local.v");
+    next(); 
+    run("QLine", "{"PRE"value='("NS"QLine)',numchild='1',children=["
+        "{name='data',type='"NS"QLine',value='{...}',numchild='2'}]}", "local.v");
+    next(); 
+    run("QLineF", "{"PRE"value='("NS"QLineF)',numchild='1',children=["
+        "{name='data',type='"NS"QLineF',value='{...}',numchild='2'}]}", "local.v");
+    next(); 
+    run("QVariantList", "{"PRE"value='("NS"QVariantList)',numchild='1',children=["
+        "{name='data',type='"NS"QList<"NS"QVariant>',"
+            "value='<0 items>',numchild='0'}]}", "local.v");
+    next(); 
+    run("QLocale", "{"PRE"value='("NS"QLocale)',numchild='1',children=["
+        "{name='data',type='"NS"QLocale',value='{...}',numchild='2'}]}", "local.v");
+    next(); 
+    run("qlonglong", "{"PRE"value='44',numchild='0'}", "local.v");
+    next(); 
+    run("QVariantMap", "{"PRE"value='("NS"QVariantMap)',numchild='1',children=["
+        "{name='data',type='"NS"QMap<"NS"QString, "NS"QVariant>',"
+            "value='{...}',numchild='1'}]}", "local.v");
+    next(); 
+    //run("QTransform", "{"PRE"value='("NS"QTransform)',numchild='1',children=["
+    //    "{name='data',type='"NS"QTransform',value='{...}',numchild='1'}]}", "local.v");
+    next(); 
+    //run("QMatrix4x4", "{"PRE"value='("NS"QMatrix4x4)',numchild='1',children=["
+    //    "{name='data',type='"NS"QMatrix4x4',value='{...}',numchild='1'}]}", "local.v");
+    next(); 
+    //run("QPalette", "{"PRE"value='("NS"QPalette)',numchild='1',children=["
+    //    "{name='data',type='"NS"QPalette',value='{...}',numchild='1'}]}", "local.v");
+    next(); 
+    //run("QPen", "{"PRE"value='("NS"QPen)',numchild='1',children=["
+    //    "{name='data',type='"NS"QPen',value='{...}',numchild='1'}]}", "local.v");
+    next(); 
+    //run("QPixmap", "{"PRE"value='("NS"QPixmap)',numchild='1',children=["
+    //    "{name='data',type='"NS"QPixmap',value='{...}',numchild='1'}]}", "local.v");
+    next(); 
+    run("QPoint", "{"PRE"value='("NS"QPoint)',numchild='1',children=["
+        "{name='data',type='"NS"QPoint',value='(45, 46)',numchild='2'}]}",
+            "local.v");
+    next(); 
+    //run("QPointArray", "{"PRE"value='("NS"QPointArray)',numchild='1',children=["
+    //    "{name='data',type='"NS"QPointArray',value='{...}',numchild='1'}]}", "local.v");
+    next(); 
+// FIXME
+//    run("QPointF", "{"PRE"value='("NS"QPointF)',numchild='1',children=["
+//        "{name='data',type='"NS"QPointF',value='(41, 42)',numchild='2'}]}",
+//            "local.v");
+    next(); 
+    //run("QPolygon", "{"PRE"value='("NS"QPolygon)',numchild='1',children=["
+    //    "{name='data',type='"NS"QPolygon',value='{...}',numchild='1'}]}", "local.v");
+    next(); 
+    //run("QQuaternion", "{"PRE"value='("NS"QQuaternion)',numchild='1',children=["
+    //    "{name='data',type='"NS"QQuaternion',value='{...}',numchild='1'}]}", "local.v");
+    next(); 
+    run("QRect", "{"PRE"value='("NS"QRect)',numchild='1',children=["
+        "{name='data',type='"NS"QRect',value='{...}',numchild='4'}]}", "local.v");
+    next(); 
+// FIXME:
+//    run("QRectF", "{"PRE"value='("NS"QRectF)',numchild='1',children=["
+//        "{name='data',type='"NS"QRectF',value='{...}',numchild='4'}]}", "local.v");
+    next(); 
+    run("QRegExp", "{"PRE"value='("NS"QRegExp)',numchild='1',children=["
+        "{name='data',type='"NS"QRegExp',value='{...}',numchild='1'}]}", "local.v");
+    next(); 
+    //run("QRegion", "{"PRE"value='("NS"QRegion)',numchild='1',children=["
+    //    "{name='data',type='"NS"QRegion',value='{...}',numchild='1'}]}", "local.v");
+    next(); 
+    run("QSize", "{"PRE"value='("NS"QSize)',numchild='1',children=["
+        "{name='data',type='"NS"QSize',value='(0, 0)',numchild='2'}]}", "local.v");
+    next(); 
+
+// FIXME:
+//    run("QSizeF", "{"PRE"value='("NS"QSizeF)',numchild='1',children=["
+//        "{name='data',type='"NS"QSizeF',value='(0, 0)',numchild='2'}]}", "local.v");
+    next(); 
+    //run("QSizePolicy", "{"PRE"value='("NS"QSizePolicy)',numchild='1',children=["
+    //    "{name='data',type='"NS"QSizePolicy',value='{...}',numchild='1'}]}", "local.v");
+    next(); 
+    run("QString", "{"PRE"value='("NS"QString)',numchild='1',children=["
+        "{name='data',type='"NS"QString',valueencoded='7',value='610062006300',numchild='0'}]}",
+        "local.v");
+    next(); 
+    run("QStringList", "{"PRE"value='("NS"QStringList)',numchild='1',children=["
+        "{name='data',type='"NS"QStringList',value='<1 items>',numchild='1'}]}", "local.v");
+    next(); 
+    //run("QTextFormat", "{"PRE"value='("NS"QTextFormat)',numchild='1',children=["
+    //    "{name='data',type='"NS"QTextFormat',value='{...}',numchild='1'}]}", "local.v");
+    next(); 
+    //run("QTextLength", "{"PRE"value='("NS"QTextLength)',numchild='1',children=["
+    //    "{name='data',type='"NS"QTextLength',value='{...}',numchild='1'}]}", "local.v");
+    next(); 
+    run("QTime", "{"PRE"value='("NS"QTime)',numchild='1',children=["
+        "{name='data',type='"NS"QTime',value='{...}',numchild='1'}]}", "local.v");
+    next(); 
+    run("uint", "{"PRE"value='43',numchild='0'}", "local.v");
+    next(); 
+    run("qulonglong", "{"PRE"value='45',numchild='0'}", "local.v");
+    next(); 
+    run("QUrl", "{"PRE"value='("NS"QUrl)',numchild='1',children=["
+        "{name='data',type='"NS"QUrl',value='{...}',numchild='1'}]}", "local.v");
+    next(); 
+    //run("QVector2D", "{"PRE"value='("NS"QVector2D)',numchild='1',children=["
+    //   "{name='data',type='"NS"QVector2D',value='{...}',numchild='1'}]}", "local.v");
+    next(); 
+    //run("QVector3D", "{"PRE"value='("NS"QVector3D)',numchild='1',children=["
+    //    "{name='data',type='"NS"QVector3D',value='{...}',numchild='1'}]}", "local.v");
+    next(); 
+    //run("QVector4D", "{"PRE"value='("NS"QVector4D)',numchild='1',children=["
+    //    "{name='data',type='"NS"QVector4D',value='{...}',numchild='1'}]}", "local.v");
+}
+
+
 ///////////////////////////// QWeakPointer /////////////////////////////////
 
 #if QT_VERSION >= 0x040500
@@ -2601,14 +2758,6 @@ void tst_Gdb::dump_QWeakPointer_2() {}
 
 ///////////////////////////// QHash<QString, QString> //////////////////////////////
 
-void dump_QHash_QString_QString()
-{
-    /* A */ QHash<QString, QString> h;
-    /* B */ h["hello"] = "world";
-    /* C */ h["foo"] = "bar";
-    /* D */ (void) 0;
-}
-
 void dump_QHash_int_int()
 {
     /* A */ QHash<int, int> h;
@@ -2617,7 +2766,7 @@ void dump_QHash_int_int()
     /* D */ (void) 0;
 }
 
-void tst_Gdb::dump_QHash()
+void tst_Gdb::dump_QHash_int_int()
 {
     // Need to check the following combinations:
     // int-key optimization, small value
@@ -2645,7 +2794,19 @@ void tst_Gdb::dump_QHash()
             "{name='43',value='44'},"
             "{name='45',value='46'}]}",
             "local.h");
+}
 
+
+void dump_QHash_QString_QString()
+{
+    /* A */ QHash<QString, QString> h;
+    /* B */ h["hello"] = "world";
+    /* C */ h["foo"] = "bar";
+    /* D */ (void) 0;
+}
+
+void tst_Gdb::dump_QHash_QString_QString()
+{
     prepare("dump_QHash_QString_QString");
     if (checkUninitialized)
         run("A","{iname='local.h',addr='-',name='h',"
@@ -2907,7 +3068,84 @@ void tst_Gdb::dump_QList_Int3()
             "local.list,local.list.0");
 }
 
-///////////////////////////// QVector /////////////////////////////////
+
+///////////////////////////// QPoint /////////////////////////////////
+
+void dump_QPoint()
+{
+    /* A */ QPoint p(43, 44);
+    /* B */ QPointF f(45, 46);
+    /* C */ (void) 0;
+}
+
+void tst_Gdb::dump_QPoint()
+{
+    prepare("dump_QPoint");
+    next();
+    next();
+    run("C","{iname='local.p',addr='-',name='p',type='"NS"QPoint',"
+            "value='(43, 44)',numchild='2',childtype='int',childnumchild='0',"
+                "children=[{name='x',value='43'},{name='y',value='44'}]},"
+            "{iname='local.f',addr='-',name='f',type='"NS"QPointF',"
+            "value='(45, 46)',numchild='2',childtype='double',childnumchild='0',"
+                "children=[{name='x',value='45'},{name='y',value='46'}]}",
+            "local.p,local.f");
+}
+
+
+///////////////////////////// QRect /////////////////////////////////
+
+void dump_QRect()
+{
+    /* A */ QRect p(43, 44, 100, 200);
+    /* B */ QRectF f(45, 46, 100, 200);
+    /* C */ (void) 0;
+}
+
+void tst_Gdb::dump_QRect()
+{
+    prepare("dump_QRect");
+    next();
+    next();
+
+return; // FIXME
+
+    run("C","{iname='local.p',addr='-',name='p',type='"NS"QRect',"
+            "value='(100x200+43+44)',numchild='4',childtype='int',childnumchild='0',"
+                "children=[{name='x1',value='43'},{name='y1',value='44'},"
+                "{name='x2',value='142'},{name='y2',value='243'}]},"
+            "{iname='local.f',addr='-',name='f',type='"NS"QRectF',"
+            "value='(45x46+100+200)',numchild='2',childtype='double',childnumchild='0',"
+                "children=[{name='x',value='45'},{name='y',value='46'}]}",
+            "local.p,local.f");
+}
+
+
+///////////////////////////// QSize /////////////////////////////////
+
+void dump_QSize()
+{
+    /* A */ QSize p(43, 44);
+    /* B */ QSizeF f(45, 46);
+    /* C */ (void) 0;
+}
+
+void tst_Gdb::dump_QSize()
+{
+    prepare("dump_QSize");
+    next();
+    next();
+    run("C","{iname='local.p',addr='-',name='p',type='"NS"QSize',"
+            "value='(43, 44)',numchild='2',childtype='int',childnumchild='0',"
+                "children=[{name='w',value='43'},{name='h',value='44'}]},"
+            "{iname='local.f',addr='-',name='f',type='"NS"QSizeF',"
+            "value='(45, 46)',numchild='2',childtype='double',childnumchild='0',"
+                "children=[{name='w',value='45'},{name='h',value='46'}]}",
+            "local.p,local.f");
+}
+
+
+///////////////////////////// QStack /////////////////////////////////
 
 void dump_QStack()
 {
@@ -3094,9 +3332,13 @@ int main(int argc, char *argv[])
         dump_QList_Int3();
         dump_QList_QString();
         dump_QList_QString3();
+        dump_QPoint();
+        dump_QRect();
+        dump_QSize();
         dump_QStack();
         dump_QString();
         dump_QStringList();
+        dump_QVariant();
         dump_QVector();
         dump_QWeakPointer_11();
         dump_QWeakPointer_12();
-- 
GitLab