Spaces:
Sleeping
Sleeping
File size: 3,249 Bytes
5cee033 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
#include <QtTest/QTest>
Q_DECLARE_METATYPE(QDate)
Q_DECLARE_METATYPE(QTime)
#include <poppler-qt6.h>
class TestDateConv : public QObject
{
Q_OBJECT
public:
explicit TestDateConv(QObject *parent = nullptr) : QObject(parent) { }
private slots:
void initTestCase();
void checkDates_data();
void checkDates();
void checkInvalidDates_data();
void checkInvalidDates();
};
void TestDateConv::initTestCase()
{
qRegisterMetaType<QDate>("QDate");
qRegisterMetaType<QTime>("QTime");
}
void TestDateConv::checkDates_data()
{
QTest::addColumn<QByteArray>("input");
QTest::addColumn<QDate>("day");
QTest::addColumn<QTime>("time");
// This is a typical case - all data provided
QTest::newRow("D:20040101121110") << QByteArray("D:20040101121110Z") << QDate(2004, 1, 1) << QTime(12, 11, 10);
// The D: is strongly recommended, but optional
QTest::newRow("20040101121110") << QByteArray("20040101121110Z") << QDate(2004, 1, 1) << QTime(12, 11, 10);
// Only the year is actually required
QTest::newRow("D:2006") << QByteArray("D:2006") << QDate(2006, 1, 1) << QTime(0, 0, 0);
QTest::newRow("D:200602") << QByteArray("D:200602") << QDate(2006, 2, 1) << QTime(0, 0, 0);
QTest::newRow("D:20060304") << QByteArray("D:20060304") << QDate(2006, 3, 4) << QTime(0, 0, 0);
QTest::newRow("D:2006030405") << QByteArray("D:2006030405") << QDate(2006, 3, 4) << QTime(5, 0, 0);
QTest::newRow("D:200603040512") << QByteArray("D:200603040512") << QDate(2006, 3, 4) << QTime(5, 12, 0);
// If the timezone isn't specified, I assume UTC
QTest::newRow("D:20060304051226") << QByteArray("D:20060304051226") << QDate(2006, 3, 4) << QTime(5, 12, 26);
// Check for real timezone conversions
QTest::newRow("D:20030131115258-04'00'") << QByteArray("D:20030131115258-04'00'") << QDate(2003, 1, 31) << QTime(15, 52, 58);
QTest::newRow("D:20030131115258+05'00'") << QByteArray("D:20030131115258+05'00'") << QDate(2003, 1, 31) << QTime(6, 52, 58);
// There are places that have non-hour offsets
// Yep, that means you Adelaide.
QTest::newRow("D:20030131115258+08'30'") << QByteArray("D:20030131115258+08'30'") << QDate(2003, 1, 31) << QTime(3, 22, 58);
QTest::newRow("D:20030131115258-08'30'") << QByteArray("D:20030131115258-08'30'") << QDate(2003, 1, 31) << QTime(20, 22, 58);
}
void TestDateConv::checkDates()
{
QFETCH(QByteArray, input);
QFETCH(QDate, day);
QFETCH(QTime, time);
QCOMPARE(Poppler::convertDate(input.constData()), QDateTime(day, time, Qt::UTC));
}
void TestDateConv::checkInvalidDates_data()
{
QTest::addColumn<QByteArray>("input");
// Null data
QTest::newRow("Null data") << QByteArray();
// Empty data
QTest::newRow("Empty data") << QByteArray("");
// Empty data
QTest::newRow("One character") << QByteArray("D");
// Empty data
QTest::newRow("'D:'") << QByteArray("D:");
// Empty data
QTest::newRow("Not a date") << QByteArray("D:IAmNotAValidDate");
}
void TestDateConv::checkInvalidDates()
{
QFETCH(QByteArray, input);
QCOMPARE(Poppler::convertDate(input.constData()), QDateTime());
}
QTEST_GUILESS_MAIN(TestDateConv)
#include "check_dateConversion.moc"
|