Improve the QDateTime support

This commit is contained in:
Debao Zhang
2013-10-23 15:31:01 +08:00
parent 66f82bc124
commit afa8c959e8
6 changed files with 106 additions and 24 deletions
+56
View File
@@ -25,6 +25,7 @@
#include "private/xlsxutility_p.h"
#include <QString>
#include <QtTest>
#include <QDateTime>
class UtilityTest : public QObject
{
@@ -39,6 +40,12 @@ private Q_SLOTS:
void test_rowcol_to_cell();
void test_rowcol_to_cell_data();
void test_datetimeToNumber_data();
void test_datetimeToNumber();
void test_datetimeFromNumber_data();
void test_datetimeFromNumber();
};
UtilityTest::UtilityTest()
@@ -101,6 +108,55 @@ void UtilityTest::test_rowcol_to_cell_data()
QTest::newRow("...") << 1048576 << 16384 << false << false << "XFE1048577";
}
void UtilityTest::test_datetimeToNumber_data()
{
QTest::addColumn<QDateTime>("dt");
QTest::addColumn<bool>("is1904");
QTest::addColumn<double>("num");
//Note, for number 0, Excel2007 shown as 1900-1-0, which should be 1899-12-31
QTest::newRow("0") << QDateTime(QDate(1899, 12, 31), QTime(0,0), Qt::UTC) << false << 0.0;
QTest::newRow("1.25") << QDateTime(QDate(1900, 1, 1), QTime(6, 0), Qt::UTC) << false << 1.25;
QTest::newRow("59") << QDateTime(QDate(1900, 2, 28), QTime(0, 0), Qt::UTC) << false << 59.0;
QTest::newRow("61") << QDateTime(QDate(1900, 3, 1), QTime(0, 0), Qt::UTC) << false << 61.0;
QTest::newRow("1904: 0") << QDateTime(QDate(1904, 1, 1), QTime(0,0), Qt::UTC) << true << 0.0;
QTest::newRow("1904: 1.25") << QDateTime(QDate(1904, 1, 2), QTime(6, 0), Qt::UTC) << true << 1.25;
}
void UtilityTest::test_datetimeToNumber()
{
QFETCH(QDateTime, dt);
QFETCH(bool, is1904);
QFETCH(double, num);
QCOMPARE(QXlsx::datetimeToNumber(dt, is1904), num);
}
void UtilityTest::test_datetimeFromNumber_data()
{
QTest::addColumn<QDateTime>("dt");
QTest::addColumn<bool>("is1904");
QTest::addColumn<double>("num");
QTest::newRow("0") << QDateTime(QDate(1899, 12, 31), QTime(0,0), Qt::UTC) << false << 0.0;
QTest::newRow("1.25") << QDateTime(QDate(1900, 1, 1), QTime(6, 0), Qt::UTC) << false << 1.25;
QTest::newRow("59") << QDateTime(QDate(1900, 2, 28), QTime(0,0), Qt::UTC) << false << 59.0;
QTest::newRow("61") << QDateTime(QDate(1900, 3, 1), QTime(0,0), Qt::UTC) << false << 61.0;
QTest::newRow("1904: 0") << QDateTime(QDate(1904, 1, 1), QTime(0,0), Qt::UTC) << true << 0.0;
QTest::newRow("1904: 1.25") << QDateTime(QDate(1904, 1, 2), QTime(6, 0), Qt::UTC) << true << 1.25;
}
void UtilityTest::test_datetimeFromNumber()
{
QFETCH(QDateTime, dt);
QFETCH(bool, is1904);
QFETCH(double, num);
QCOMPARE(QXlsx::datetimeFromNumber(num, is1904), dt);
}
QTEST_APPLESS_MAIN(UtilityTest)
#include "tst_utilitytest.moc"