From 23d6a1a23e4a4521d2fe63806dbadc29dc449a82 Mon Sep 17 00:00:00 2001 From: hjk Date: Sat, 30 Nov 2013 23:41:05 +0100 Subject: [PATCH] Debugger: Add dumper for QTimeZone Change-Id: I1b20529d7ecdcbf5480e95d6e7be89a2fdb6a8b7 Reviewed-by: Eike Ziller --- share/qtcreator/debugger/dumper.py | 4 ++++ share/qtcreator/debugger/qttypes.py | 11 +++++++++++ tests/auto/debugger/tst_dumpers.cpp | 15 +++++++++++++++ tests/manual/debugger/simple/simple_test_app.cpp | 10 ++++++++++ 4 files changed, 40 insertions(+) diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index 4fc58280de1..63ee3a53b30 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -330,6 +330,10 @@ class DumperBase: def putByteArrayValue(self, value): return self.putValue(self.encodeByteArray(value), Hex2EncodedLatin1) + def putByteArrayValueByAddress(self, addr): + self.putValue(self.encodeByteArrayHelper(self.dereference(addr)), + Hex2EncodedLatin1) + def putStringValueByAddress(self, addr): self.putValue(self.encodeStringHelper(self.dereference(addr)), Hex4EncodedLittleEndian) diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index be6bfad8641..140924f256c 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -231,6 +231,17 @@ def qdump__QTime(d, value): d.putNumChild(0) +def qdump__QTimeZone(d, value): + base = d.dereferenceValue(value) + if d.isNull(base): + d.putValue("(null)") + d.putNumChild(0) + return + idAddr = base + 2 * d.ptrSize() # [QSharedData] + [vptr] + d.putByteArrayValueByAddress(idAddr) + d.putPlainChildren(value["d"]) + + def qdump__QDateTime(d, value): qtVersion = d.qtVersion() isValid = False diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index cdf1dc90a0d..a232da52ede 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -1298,6 +1298,21 @@ void tst_Dumpers::dumper_data() % Check("c", "'x' (120)", "@QChar").setForCdbOnly() % Check("c", "120", "@QChar").setEngines(DumpTestGdbEngine | DumpTestLldbEngine); + QTest::newRow("QTimeZone0") + << Data("#include \n", + "QTimeZone tz;\n" + "unused(&tz);\n") + % CoreProfile() + % Check("tz", "(null)", "@QTimeZone"); + + QTest::newRow("QTimeZone1") + << Data("#include \n", + "QTimeZone tz(\"UTC+05:00\");\n" + "unused(&tz);\n") + % CoreProfile() + % Check("tz", "\"UTC+05:00\"", "@QTimeZone") + % Check("tz.d.m_name", "\"UTC+05:00\"", "@QString"); + QTest::newRow("QDate0") << Data("#include \n", "QDate date;\n" diff --git a/tests/manual/debugger/simple/simple_test_app.cpp b/tests/manual/debugger/simple/simple_test_app.cpp index 059cf9cc1e7..1c064b44096 100644 --- a/tests/manual/debugger/simple/simple_test_app.cpp +++ b/tests/manual/debugger/simple/simple_test_app.cpp @@ -168,6 +168,7 @@ void dummyStatement(...) {} #include #include #include +#include #endif #if USE_SCRIPTLIB @@ -708,6 +709,14 @@ namespace undefined { namespace qdatetime { + void testQTimeZone() + { + QTimeZone zz; + QTimeZone tz("UTC+05:00"); + BREAK_HERE; + dummyStatement(&zz, &tz); + } + void testQDate() { QDate date; @@ -768,6 +777,7 @@ namespace qdatetime { void testDateTime() { + testQTimeZone(); testQDate(); testQDateTime(); testQTime();