From f21b01fc28c28fda6c58229cb4d35ee2aea8f467 Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Wed, 28 Oct 2009 11:50:19 +0100 Subject: [PATCH] debugger: work on auto tests --- tests/auto/debugger/tst_gdb.cpp | 215 ++++++++++++++++++-------------- 1 file changed, 118 insertions(+), 97 deletions(-) diff --git a/tests/auto/debugger/tst_gdb.cpp b/tests/auto/debugger/tst_gdb.cpp index 41d8c6c4e40..0e116434272 100644 --- a/tests/auto/debugger/tst_gdb.cpp +++ b/tests/auto/debugger/tst_gdb.cpp @@ -194,16 +194,21 @@ private slots: void dumpFoo(); void dumpQByteArray(); void dumpQChar(); - void dumpQList_char_star(); void dumpQList_char(); + void dumpQList_char_star(); void dumpQList_int(); + void dumpQList_int_star(); void dumpQList_QString(); void dumpQList_QString3(); void dumpQList_Int3(); void dumpQStack(); void dumpQString(); void dumpQStringList(); - void dumpQWeakPointer(); + void dumpQWeakPointer_11(); + void dumpQWeakPointer_12(); + void dumpQWeakPointer_13(); + void dumpQWeakPointer_14(); + void dumpQWeakPointer_2(); void dumpQVector(); void dumpQHash(); @@ -2446,43 +2451,12 @@ void tst_Gdb::dumpQTextCodec() dumpQTextCodecHelper(QTextCodec::codecForName(codecName)); } -#if QT_VERSION >= 0x040500 -template <typename T1, typename T2> - size_t offsetOf(const T1 *klass, const T2 *member) -{ - return static_cast<size_t>(reinterpret_cast<const char *>(member) - - reinterpret_cast<const char *>(klass)); -} - -template <typename T> -void tst_Gdb::dumpQWeakPointerHelper(QWeakPointer<T> &ptr) -{ - typedef QtSharedPointer::ExternalRefCountData Data; - const size_t dataOffset = 0; - const Data *d = *reinterpret_cast<const Data **>( - reinterpret_cast<const char **>(&ptr) + dataOffset); - const int *weakRefPtr = reinterpret_cast<const int *>(&d->weakref); - const int *strongRefPtr = reinterpret_cast<const int *>(&d->strongref); - T *data = ptr.toStrongRef().data(); - const QString dataStr = valToString(*data); - QByteArray expected("value='"); - if (isSimpleType<T>()) - expected.append(dataStr); - expected.append("',valuedisabled='true',numchild='1',children=[{name='data',addr='"). - append(ptrToBa(data)).append("',type='").append(typeToString<T>()). - append("',value='").append(dataStr).append("'},{name='weakref',value='"). - append(valToString(*weakRefPtr)).append("',type='int',addr='"). - append(ptrToBa(weakRefPtr)).append("',numchild='0'},{name='strongref',value='"). - append(valToString(*strongRefPtr)).append("',type='int',addr='"). - append(ptrToBa(strongRefPtr)).append("',numchild='0'}]"); - testDumper(expected, &ptr, NS"QWeakPointer", true, typeToString<T>()); -} -#endif #endif // #if 0 ///////////////////////////// QWeakPointer ///////////////////////////////// #if QT_VERSION >= 0x040500 + void dumpQWeakPointer_11() { // Case 1: Simple type. @@ -2492,6 +2466,20 @@ void dumpQWeakPointer_11() /* B */ (void) 0; } +void tst_Gdb::dumpQWeakPointer_11() +{ + // Case 1.1: Null pointer. + prepare("dumpQWeakPointer_11"); + if (checkUninitialized) + run("A","{iname='local.sp',addr='-',name='sp'," + "type='"NS"QSharedPointer<int>',value='<not in scope>',numchild='0'}"); + next(); + next(); + run("B","{iname='local.sp',addr='-',name='sp'," + "type='"NS"QSharedPointer<int>',value='<0 items>',numchild='1'}"); +} + + void dumpQWeakPointer_12() { // Case 1.2: Weak pointer is unique. @@ -2500,6 +2488,31 @@ void dumpQWeakPointer_12() /* B */ (void) 0; } +void tst_Gdb::dumpQWeakPointer_12() +{ + // Case 1.1: Null pointer. + prepare("dumpQWeakPointer_12"); + if (checkUninitialized) + run("A","{iname='local.sp',addr='-',name='sp'," + "type='"NS"QSharedPointer<int>',value='<not in scope>',numchild='0'}"); + next(); + next(); + run("B","{iname='local.sp',addr='-',name='sp'," + "type='"NS"QSharedPointer<int>',value='<0 items>',numchild='1'}"); +} + + +/* + //,numchild='1',children=[{name='data',addr='"). + append(ptrToBa(data)).append("',type='").append(typeToString<T>()). + append("',value='").append(dataStr).append("'},{name='weakref',value='"). + append(valToString(*weakRefPtr)).append("',type='int',addr='"). + append(ptrToBa(weakRefPtr)).append("',numchild='0'},{name='strongref',value='"). + append(valToString(*strongRefPtr)).append("',type='int',addr='"). + append(ptrToBa(strongRefPtr)).append("',numchild='0'}]"); +*/ + + void dumpQWeakPointer_13() { // Case 1.3: There are other weak pointers. @@ -2508,6 +2521,11 @@ void dumpQWeakPointer_13() /* B */ (void) 0; } +void tst_Gdb::dumpQWeakPointer_13() +{ +} + + void dumpQWeakPointer_14() { // Case 1.4: There are other strong shared pointers as well. @@ -2516,6 +2534,11 @@ void dumpQWeakPointer_14() /* B */ (void) 0; } +void tst_Gdb::dumpQWeakPointer_14() +{ +} + + void dumpQWeakPointer_2() { // Case 2: Composite type. @@ -2523,76 +2546,20 @@ void dumpQWeakPointer_2() /* */ QWeakPointer<QString> wp = sp.toWeakRef(); /* B */ (void) 0; } -#endif -void tst_Gdb::dumpQWeakPointer() +void tst_Gdb::dumpQWeakPointer_2() { -#if QT_VERSION >= 0x040500 - -return; - - // Case 1.1: Null pointer. - prepare("dumpQWeakPointer_11"); - if (checkUninitialized) - run("A","{iname='local.sp',addr='-',name='sp'," - "type='"NS"QSharedPointer<int>',value='<not in scope>',numchild='0'}"); - next(); - run("B","{iname='local.sp',addr='-',name='sp'," - "type='"NS"QSharedPointer<int>',value='<0 items>',numchild='1'}"); - -/* - //,numchild='1',children=[{name='data',addr='"). - append(ptrToBa(data)).append("',type='").append(typeToString<T>()). - append("',value='").append(dataStr).append("'},{name='weakref',value='"). - append(valToString(*weakRefPtr)).append("',type='int',addr='"). - append(ptrToBa(weakRefPtr)).append("',numchild='0'},{name='strongref',value='"). - append(valToString(*strongRefPtr)).append("',type='int',addr='"). - append(ptrToBa(strongRefPtr)).append("',numchild='0'}]"); - - // Case 1.2: Weak pointer is unique. -void tst_Gdb::dumpQWeakPointerHelper(QWeakPointer<T> &ptr) -{ - typedef QtSharedPointer::ExternalRefCountData Data; - const size_t dataOffset = 0; - const Data *d = *reinterpret_cast<const Data **>( - reinterpret_cast<const char **>(&ptr) + dataOffset); - const int *weakRefPtr = reinterpret_cast<const int *>(&d->weakref); - const int *strongRefPtr = reinterpret_cast<const int *>(&d->strongref); - T *data = ptr.toStrongRef().data(); - const QString dataStr = valToString(*data); - QByteArray expected("value='"); - if (isSimpleType<T>()) - expected.append(dataStr); - expected.append("',valuedisabled='true',numchild='1',children=[{name='data',addr='"). - append(ptrToBa(data)).append("',type='").append(typeToString<T>()). - append("',value='").append(dataStr).append("'},{name='weakref',value='"). - append(valToString(*weakRefPtr)).append("',type='int',addr='"). - append(ptrToBa(weakRefPtr)).append("',numchild='0'},{name='strongref',value='"). - append(valToString(*strongRefPtr)).append("',type='int',addr='"). - append(ptrToBa(strongRefPtr)).append("',numchild='0'}]"); - testDumper(expected, &ptr, NS"QWeakPointer", true, typeToString<T>()); } +#else // before Qt 4.5 - QSharedPointer<int> sp(new int(99)); - wp = sp.toWeakRef(); - dumpQWeakPointerHelper(wp); +void tst_Gdb::dumpQWeakPointer_11() {} +void tst_Gdb::dumpQWeakPointer_12() {} +void tst_Gdb::dumpQWeakPointer_13() {} +void tst_Gdb::dumpQWeakPointer_14() {} +void tst_Gdb::dumpQWeakPointer_2() {} - // Case 1.3: There are other weak pointers. - QWeakPointer<int> wp2 = sp.toWeakRef(); - dumpQWeakPointerHelper(wp); - - // Case 1.4: There are other strong shared pointers as well. - QSharedPointer<int> sp2(sp); - dumpQWeakPointerHelper(wp); - - // Case 2: Composite type. - QSharedPointer<QString> spS(new QString("Test")); - QWeakPointer<QString> wpS = spS.toWeakRef(); - dumpQWeakPointerHelper(wpS); -*/ #endif -} ///////////////////////////// QHash<QString, QString> ////////////////////////////// @@ -2708,6 +2675,34 @@ void tst_Gdb::dumpQList_int() } +///////////////////////////// QList<int *> ///////////////////////////////// + +void dumpQList_int_star() +{ + /* A */ QList<int *> list; + /* B */ list.append(new int(1)); + /* C */ list.append(0); + /* D */ list.append(new int(2)); + /* E */ (void) 0; +} + +void tst_Gdb::dumpQList_int_star() +{ + prepare("dumpQList_int_star"); + if (checkUninitialized) + run("A","{iname='local.list',addr='-',name='list'," + "type='"NS"QList<int>',value='<not in scope>',numchild='0'}"); + next(); + next(); + next(); + next(); + run("E","{iname='local.list',addr='-',name='list'," + "type='"NS"QList<int>',value='<2 items>',numchild='2'," + "childtype='int',childnumchild='0',children=[" + "{value='1'},{value='2'}]}", "local.list"); +} + + ///////////////////////////// QList<char> ///////////////////////////////// void dumpQList_char() @@ -3046,6 +3041,32 @@ int main(int argc, char *argv[]) return 0; } + if (argc == 2 && QByteArray(argv[1]) == "debug") { + dumpArray_char(); + dumpArray_int(); + dumpFoo(); + dumpMisc(); + dumpQByteArrayTest(); + dumpQCharTest(); + dumpQHash_int_int(); + dumpQList_char(); + dumpQList_char_star(); + dumpQList_int(); + dumpQList_int_star(); + dumpQList_Int3(); + dumpQList_QString(); + dumpQList_QString3(); + dumpQStack(); + dumpQString(); + dumpQStringList(); + dumpQVector(); + dumpQWeakPointer_11(); + dumpQWeakPointer_12(); + dumpQWeakPointer_13(); + dumpQWeakPointer_14(); + dumpQWeakPointer_2(); + } + try { // Plain call. Start the testing. QCoreApplication app(argc, argv); -- GitLab