File indexing completed on 2024-05-05 09:36:08

0001 /*
0002   SPDX-FileCopyrightText: 2015 Volker Krause <vkrause@kde.org>
0003 
0004   SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "kmime_dateformatter.h"
0008 
0009 #include <QTest>
0010 #include <QObject>
0011 #include <QDateTime>
0012 #include <QTimeZone>
0013 
0014 using namespace KMime;
0015 
0016 class DateFormatterTest : public QObject
0017 {
0018     Q_OBJECT
0019 private Q_SLOTS:
0020 
0021     void testFancyFormat()
0022     {
0023         DateFormatter f(DateFormatter::Fancy);
0024 
0025         auto dt = QDateTime::currentDateTime();
0026         dt.setTime(QTime(12, 34, 56));
0027         QCOMPARE(f.dateString(dt), u"Today 12:34 PM");
0028 
0029         dt.setDate(dt.date().addDays(-1));
0030         QCOMPARE(f.dateString(dt), u"Yesterday 12:34 PM");
0031 
0032         dt.setDate(dt.date().addDays(-1));
0033         QVERIFY(f.dateString(dt).startsWith(QLocale::c().toString(dt, QLatin1String("dddd"))));
0034     }
0035 
0036     void testLocalizedFormat()
0037     {
0038         DateFormatter f(DateFormatter::Localized);
0039 
0040         auto dt = QDateTime(QDate(2015, 5, 26), QTime(12, 34, 56));
0041         QCOMPARE(f.dateString(dt, QLatin1String("de")), QString::fromLatin1("26.05.15 12:34"));
0042     }
0043 
0044     void testFormat_data()
0045     {
0046         QTest::addColumn<KMime::DateFormatter::FormatType>("format");
0047         QTest::addColumn<QDateTime>("dt");
0048         QTest::addColumn<QString>("output");
0049 
0050         QTest::newRow("ctime") << DateFormatter::CTime << QDateTime(QDate(2023, 11, 18), QTime(17, 34, 56)) << QStringLiteral("Sat Nov 18 17:34:56 2023");
0051     }
0052 
0053     void testFormat()
0054     {
0055         QFETCH(KMime::DateFormatter::FormatType, format);
0056         QFETCH(QDateTime, dt);
0057         QFETCH(QString, output);
0058 
0059         KMime::DateFormatter formatter(format);
0060         QCOMPARE(formatter.dateString(dt), output);
0061     }
0062 
0063     void testCustomFormat()
0064     {
0065         DateFormatter f(DateFormatter::Custom);
0066         f.setCustomFormat(QStringLiteral("hh:mm Z"));
0067         auto dt = QDateTime(QDate(2023, 11, 18), QTime(17, 34, 56), QTimeZone("Europe/Brussels"));
0068         QCOMPARE(f.dateString(dt), QLatin1String("17:34 +0100"));
0069     }
0070 };
0071 
0072 QTEST_MAIN(DateFormatterTest)
0073 
0074 #include "dateformattertest.moc"