From: ck Date: Mon, 10 Aug 2009 14:59:15 +0000 (+0200) Subject: Debugger: Fixed QMapNode dumper. X-Git-Tag: v1.2.90~160 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=d5d53c746a5e117da3cfa325734a16cf4029b0e9;p=qt-creator-jp%2Fqt-creator-jp.git Debugger: Fixed QMapNode dumper. --- diff --git a/share/qtcreator/gdbmacros/gdbmacros.cpp b/share/qtcreator/gdbmacros/gdbmacros.cpp index 36f68f5d08..32aa86d2c9 100644 --- a/share/qtcreator/gdbmacros/gdbmacros.cpp +++ b/share/qtcreator/gdbmacros/gdbmacros.cpp @@ -1696,7 +1696,7 @@ static void qDumpQMapNode(QDumper &d) unsigned keyOffset = 2 * sizeof(void*) - mapnodesize; unsigned valueOffset = 2 * sizeof(void*) - mapnodesize + valueOff; - d.beginChildren(d.innertype); + d.beginChildren(); d.beginHash(); d.putItem("name", "key"); qDumpInnerValue(d, keyType, addOffset(h, keyOffset)); diff --git a/tests/auto/debugger/main.cpp b/tests/auto/debugger/main.cpp index ada35ff8a1..5f687ac801 100644 --- a/tests/auto/debugger/main.cpp +++ b/tests/auto/debugger/main.cpp @@ -1319,41 +1319,47 @@ void tst_Debugger::dumpQMap() } template - void tst_Debugger::dumpQMapNodeHelper(QMap &map) -{ -#if 0 // TODO: Fails due to inconsistencies in gdbmacros.cpp - for (typename QMap::iterator it = map.begin(); it != map.end(); ++it) { - const K &key = it.key(); - const V &val = it.value(); - const char * const keyType = typeToString(key); - QByteArray expected = QByteArray("value='',numchild='2',childtype='"). - append(keyType).append("',childnumchild='").append(typeToNumchild(key)). - append("',children=[{name='key',addr='").append(ptrToBa(&key)). - append("',value='").append(valToString(key)).append("'},{name='value',addr='"). - append(ptrToBa(&val)).append("',value='").append(valToString(val)). - append("'}]"); - size_t nodeSize; - size_t valOffset; - getMapNodeParams(nodeSize, valOffset); - testDumper(expected, *reinterpret_cast(&it), NS"QMapNode", - true, getMapType(key, val), "", 0, 0, nodeSize, valOffset); - }; -#endif + void tst_Debugger::dumpQMapNodeHelper(QMap &m) +{ + typename QMap::iterator it = m.begin(); + const K &key = it.key(); + const V &val = it.value(); + const char * const keyType = typeToString(key); + QByteArray expected = QByteArray("value='',numchild='2'," + "children=[{name='key',addr='").append(ptrToBa(&key)). + append("',type='").append(typeToString(key)).append("',value='"). + append(valToString(key)).append("'},{name='value',addr='"). + append(ptrToBa(&val)).append("',type='").append(typeToString(val)). + append("',value='").append(valToString(val)). + append("'}]"); + size_t nodeSize; + size_t valOffset; + getMapNodeParams(nodeSize, valOffset); + testDumper(expected, *reinterpret_cast(&it), NS"QMapNode", + true, getMapType(key, val), "", 0, 0, nodeSize, valOffset); } void tst_Debugger::dumpQMapNode() { - // Case 1: Empty Map. - QMap map; + // Case 1: simple type -> simple type. + QMap map; + map[2] = 3; dumpQMapNodeHelper(map); - // Case 2: One element. - map[3] = "String 1"; - dumpQMapNodeHelper(map); + // Case 2: simple type -> composite type. + QMap map2; + map2[3] = "String 5"; + dumpQMapNodeHelper(map2); - // Case 3: Two elements. - map[10] = "String 2"; - dumpQMapNodeHelper(map); + // Case 3: composite type -> simple type. + QMap map3; + map3["String 7"] = 11; + dumpQMapNodeHelper(map3); + + // Case 4: composite type -> composite type. + QMap map4; + map4["String 13"] = "String 17"; + dumpQMapNodeHelper(map4); } void tst_Debugger::dumpQObject() @@ -1911,17 +1917,17 @@ void tst_Debugger::dumpQPixmapHelper(QPixmap &p) { QByteArray expected = QByteArray("value='(").append(QString::number(p.width())). append("x").append(QString::number(p.height())). - append("',type='"NS"QPixmap',numchild='0'"); + append(")',type='"NS"QPixmap',numchild='0'"); testDumper(expected, &p, NS"QPixmap", true); } void tst_Debugger::dumpQPixmap() { -#if 0 // Crashes. // Case 1: Null Pixmap. QPixmap p; dumpQPixmapHelper(p); +#if 0 // Crashes. // Case 2: Uninitialized non-null pixmap. p = QPixmap(20, 100); dumpQPixmapHelper(p);