File indexing completed on 2024-04-21 05:18: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(
0034             QLocale::c().toString(dt, QLatin1StringView("dddd"))));
0035     }
0036 
0037     void testLocalizedFormat()
0038     {
0039         DateFormatter f(DateFormatter::Localized);
0040 
0041         auto dt = QDateTime(QDate(2015, 5, 26), QTime(12, 34, 56));
0042         QCOMPARE(f.dateString(dt, QLatin1StringView("de")),
0043                  QString::fromLatin1("26.05.15 12:34"));
0044     }
0045 
0046     void testFormat_data()
0047     {
0048         QTest::addColumn<KMime::DateFormatter::FormatType>("format");
0049         QTest::addColumn<QDateTime>("dt");
0050         QTest::addColumn<QString>("output");
0051 
0052         QTest::newRow("ctime") << DateFormatter::CTime << QDateTime(QDate(2023, 11, 18), QTime(17, 34, 56)) << QStringLiteral("Sat Nov 18 17:34:56 2023");
0053     }
0054 
0055     void testFormat()
0056     {
0057         QFETCH(KMime::DateFormatter::FormatType, format);
0058         QFETCH(QDateTime, dt);
0059         QFETCH(QString, output);
0060 
0061         KMime::DateFormatter formatter(format);
0062         QCOMPARE(formatter.dateString(dt), output);
0063     }
0064 
0065     void testCustomFormat()
0066     {
0067         DateFormatter f(DateFormatter::Custom);
0068         f.setCustomFormat(QStringLiteral("hh:mm Z"));
0069         auto dt = QDateTime(QDate(2023, 11, 18), QTime(17, 34, 56), QTimeZone("Europe/Brussels"));
0070         QCOMPARE(f.dateString(dt), QLatin1StringView("17:34 +0100"));
0071     }
0072 };
0073 
0074 QTEST_MAIN(DateFormatterTest)
0075 
0076 #include "dateformattertest.moc"