File indexing completed on 2024-04-28 05:50:05

0001 /*
0002  * SPDX-License-Identifier: GPL-3.0-or-later
0003  * SPDX-FileCopyrightText: 2020 Johan Ouwerkerk <jm.ouwerkerk@gmail.com>
0004  */
0005 
0006 #include "validators/datetimevalidator.h"
0007 
0008 #include <QDateTime>
0009 #include <QObject>
0010 #include <QTest>
0011 #include <QValidator>
0012 #include <QtDebug>
0013 
0014 Q_DECLARE_METATYPE(std::optional<QDateTime>);
0015 
0016 class DateTimeParsingSamplesTest: public QObject
0017 {
0018     Q_OBJECT
0019 private Q_SLOTS:
0020     void testParseDateTime(void);
0021     void testParseDateTime_data(void);
0022 };
0023 
0024 
0025 void DateTimeParsingSamplesTest::testParseDateTime(void)
0026 {
0027     QFETCH(QString, input);
0028     QTEST(validators::parseDateTime(input), "result");
0029 }
0030 
0031 static void define_test_case(const QString &input, const std::optional<QDateTime> &result)
0032 {
0033     QTest::newRow(qPrintable(input)) << input << result;
0034 }
0035 
0036 void DateTimeParsingSamplesTest::testParseDateTime_data(void)
0037 {
0038     QTest::addColumn<QString>("input");
0039     QTest::addColumn<std::optional<QDateTime>>("result");
0040 
0041 
0042     define_test_case(QLatin1String("1970-01-01T00:00:00Z"), std::optional<QDateTime>(QDateTime::fromMSecsSinceEpoch(0)));
0043     define_test_case(QLatin1String("1970-01-01T00:00:00.500Z"), std::optional<QDateTime>(QDateTime::fromMSecsSinceEpoch(500LL)));
0044     define_test_case(QLatin1String("01-01-1970 01:00"), std::nullopt);
0045 }
0046 
0047 QTEST_APPLESS_MAIN(DateTimeParsingSamplesTest)
0048 
0049 #include "datetime-parsing.moc"