#include <QtTest/QtTest>

Q_DECLARE_METATYPE(QDate)
Q_DECLARE_METATYPE(QTime)

#include <poppler-qt4.h>

class TestDateConv: public QObject
{
    Q_OBJECT
private slots:
    void checkDates_data();
    void checkDates();
};

void TestDateConv::checkDates_data()
{
    qRegisterMetaType<QDate>("QDate");
    qRegisterMetaType<QTime>("QTime");

    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.data()), QDateTime(day, time, Qt::UTC) );
}

QTEST_MAIN(TestDateConv)
#include "check_dateConversion.moc"

