From 75ea610a8c29956101ab294b8d963b3a60c9ce2b Mon Sep 17 00:00:00 2001
From: ck <qt-info@nokia.com>
Date: Fri, 10 Jul 2009 17:43:47 +0200
Subject: [PATCH] Added auto test for QDateTime dumper.

---
 tests/auto/debugger/main.cpp | 59 +++++++++++++++++++++++++++++++++---
 1 file changed, 54 insertions(+), 5 deletions(-)

diff --git a/tests/auto/debugger/main.cpp b/tests/auto/debugger/main.cpp
index faf00d4406a..c9cf6c56805 100644
--- a/tests/auto/debugger/main.cpp
+++ b/tests/auto/debugger/main.cpp
@@ -124,6 +124,7 @@ private slots:
 
     void dumperCompatibility();
     void dumpQChar();
+    void dumpQDateTime();
     void dumpQFile();
     void dumpQHash();
     void dumpQList_int();
@@ -148,8 +149,9 @@ public slots:
 private:
     QProcess m_proc; // the Qt Creator process
 
-    void dumpQFileHelper(const QString &name, bool exists);
     void dumpQCharHelper(QChar &c);
+    void dumpQDateTimeHelper(QDateTime &d);
+    void dumpQFileHelper(const QString &name, bool exists);
 };
 
 static QByteArray stripped(QByteArray ba)
@@ -433,18 +435,65 @@ void tst_Debugger::dumpQChar()
     dumpQCharHelper(c);
 }
 
+
+static const QByteArray utfToBase64(const QString &string)
+{
+    return QByteArray(reinterpret_cast<const char *>(string.utf16()), 2 * string.size()).toBase64();
+}
+
+static const char *boolToVal(bool b)
+{
+    return b ? "'true'" : "'false'";
+}
+
+static const QByteArray generateQStringSpec(const QString& str)
+{
+    return QByteArray("value='").append(utfToBase64(str)).
+        append("',type='"NS"QString',numchild='0',valueencoded='2'");
+}
+
+void tst_Debugger::dumpQDateTimeHelper(QDateTime &d)
+{
+    QByteArray expected("value='");
+    if (d.isNull())
+        expected.append("(null)',");
+    else
+      expected.append(utfToBase64(d.toString())).append("',valueencoded='2',");
+    expected.append("type='$T',numchild='3',children=[");
+    expected.append("{name='isNull',value=").append(boolToVal(d.isNull())).append(",type='bool',numchild='0'},");
+    expected.append("{name='toTime_t',value='").append(QString::number((long) d.toTime_t())).
+            append("',type='long',numchild='0'},");
+    expected.append("{name='toString',").append(generateQStringSpec(d.toString())).append("},");
+    expected.append("{name='toString_(ISO)',").append(generateQStringSpec(d.toString(Qt::ISODate))).append("},");
+    expected.append("{name='toString_(SystemLocale)',").
+            append(generateQStringSpec(d.toString(Qt::SystemLocaleDate))).append("},");
+    expected.append("{name='toString_(Locale)',").
+            append(generateQStringSpec(d.toString(Qt::LocaleDate))).append("}]");
+    testDumper(expected, &d, NS"QDateTime", true);
+
+}
+
+void tst_Debugger::dumpQDateTime()
+{
+    // Case 1: Null object.
+    QDateTime d;
+    dumpQDateTimeHelper(d);
+
+    // Case 2: Non-null object.
+    d = QDateTime::currentDateTime();
+    dumpQDateTimeHelper(d);
+}
+
 void tst_Debugger::dumpQFileHelper(const QString &name, bool exists)
 {
     QFile file(name);
-    QByteArray filenameAsBase64(reinterpret_cast<const char *>(name.utf16()), 2 * name.size());
-    filenameAsBase64 = filenameAsBase64.toBase64();
-    const char *existsString = exists ? "'true'" : "'false'";
+    QByteArray filenameAsBase64 = utfToBase64(name);
     testDumper(
             QByteArray("value='") + filenameAsBase64 +
             QByteArray("',valueencoded='2',type='$T',numchild='2',children=[{name='fileName',value='") +
             filenameAsBase64 +
             QByteArray("',type='"NS"QString',numchild='0',valueencoded='2'},{name='exists',value=") +
-            QByteArray(existsString) + QByteArray(",type='bool',numchild='0'}]"),
+            QByteArray(boolToVal(exists)) + QByteArray(",type='bool',numchild='0'}]"),
             &file, NS"QFile", true);
 
 }
-- 
GitLab