File indexing completed on 2024-03-24 03:56:12

0001 /*
0002     This file is part of kcontacts.
0003     SPDX-FileCopyrightText: 2016 Benjamin Löwe <benni@mytum.de>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #include "datetimetest.h"
0009 #include <QTest>
0010 #include <QTimeZone>
0011 #include <vcardtool_p.h>
0012 
0013 DateTimeTest::DateTimeTest(QObject *parent)
0014     : QObject(parent)
0015 {
0016 }
0017 
0018 DateTimeTest::~DateTimeTest()
0019 {
0020 }
0021 
0022 void DateTimeTest::shouldParseDateTime()
0023 {
0024     using namespace KContacts;
0025 
0026     QDateTime expected;
0027     QDateTime dt;
0028     bool timeIsValid;
0029 
0030     dt = VCardTool::parseDateTime(QStringLiteral("2016-01-20T12:33:30+0200"));
0031     expected = QDateTime(QDate(2016, 1, 20), QTime(12, 33, 30), QTimeZone::fromSecondsAheadOfUtc(2 * 3600));
0032     QCOMPARE(dt, expected);
0033     QVERIFY(dt.isValid());
0034 
0035     dt = VCardTool::parseDateTime(QStringLiteral("2016-01-20T12:33:30+02"));
0036     QCOMPARE(dt, expected);
0037     QVERIFY(dt.isValid());
0038 
0039     dt = VCardTool::parseDateTime(QStringLiteral("20160120T123330+0200"));
0040     QCOMPARE(dt, expected);
0041     QVERIFY(dt.isValid());
0042 
0043     dt = VCardTool::parseDateTime(QStringLiteral("2016-01-20T12:33Z"));
0044     expected = QDateTime(QDate(2016, 1, 20), QTime(12, 33, 0), QTimeZone::UTC);
0045     QCOMPARE(dt, expected);
0046     QVERIFY(dt.isValid());
0047 
0048     dt = VCardTool::parseDateTime(QStringLiteral("2016-01-20T12:33-0300"));
0049     expected = QDateTime(QDate(2016, 1, 20), QTime(12, 33, 0), QTimeZone::fromSecondsAheadOfUtc(-3 * 3600));
0050     QCOMPARE(dt, expected);
0051     QVERIFY(dt.isValid());
0052 
0053     dt = VCardTool::parseDateTime(QStringLiteral("2016-01-20T12:33"), &timeIsValid);
0054     expected = QDateTime(QDate(2016, 1, 20), QTime(12, 33, 0), QTimeZone::LocalTime);
0055     QCOMPARE(dt, expected);
0056     QVERIFY(timeIsValid);
0057     QVERIFY(dt.isValid());
0058 
0059     dt = VCardTool::parseDateTime(QStringLiteral("2016-01-20"), &timeIsValid);
0060     expected = QDateTime(QDate(2016, 1, 20), QTime(), QTimeZone::LocalTime);
0061     QCOMPARE(dt, expected);
0062     QVERIFY(dt.isValid());
0063     QVERIFY(!timeIsValid);
0064     QCOMPARE(dt.time(), QTime(0, 0));
0065 
0066     dt = VCardTool::parseDateTime(QStringLiteral("T1233Z"), &timeIsValid);
0067     QVERIFY(!dt.isValid());
0068     QVERIFY(timeIsValid);
0069     QCOMPARE(dt.time(), QTime(12, 33));
0070 
0071     dt = VCardTool::parseDateTime(QStringLiteral("--0120"));
0072     expected = QDateTime(QDate(-1, 1, 20).startOfDay());
0073     QCOMPARE(dt, expected);
0074     QVERIFY(dt.isValid());
0075 
0076     dt = VCardTool::parseDateTime(QStringLiteral("--01-20"));
0077     expected = QDateTime(QDate(-1, 1, 20).startOfDay());
0078     QCOMPARE(dt, expected);
0079     QVERIFY(dt.isValid());
0080 }
0081 
0082 void DateTimeTest::shouldCreateDateTime()
0083 {
0084     using namespace KContacts;
0085 
0086     QDateTime dt;
0087     QString str;
0088     QString expected;
0089 
0090     dt = QDateTime(QDate(2016, 1, 20), QTime(12, 33, 30), QTimeZone::UTC);
0091     str = VCardTool::createDateTime(dt, VCard::v4_0);
0092     expected = QStringLiteral("20160120T123330Z");
0093     QCOMPARE(str, expected);
0094 
0095     dt = QDateTime(QDate(2016, 1, 20), QTime(), QTimeZone::UTC);
0096     str = VCardTool::createDateTime(dt, VCard::v4_0);
0097     expected = QStringLiteral("20160120T000000Z");
0098     QCOMPARE(str, expected);
0099 
0100     dt = QDateTime(QDate(2016, 1, 20), QTime(12, 33, 30), QTimeZone::LocalTime);
0101     str = VCardTool::createDateTime(dt, VCard::v4_0);
0102     expected = QStringLiteral("20160120T123330");
0103     QCOMPARE(str, expected);
0104 
0105     dt = QDateTime(QDate(2016, 1, 20), QTime(12, 33, 30), QTimeZone::fromSecondsAheadOfUtc(-2 * 3600));
0106     str = VCardTool::createDateTime(dt, VCard::v4_0);
0107     expected = QStringLiteral("20160120T123330-0200");
0108     QCOMPARE(str, expected);
0109 
0110     dt = QDateTime(QDate(2016, 1, 20), QTime(12, 33, 30), QTimeZone::fromSecondsAheadOfUtc(+2.5 * 3600));
0111     str = VCardTool::createDateTime(dt, VCard::v4_0);
0112     expected = QStringLiteral("20160120T123330+0230");
0113     QCOMPARE(str, expected);
0114 
0115     dt = QDateTime(QDate(2016, 1, 20), QTime(12, 33, 30), QTimeZone::fromSecondsAheadOfUtc(-2 * 3600));
0116     str = VCardTool::createDateTime(dt, VCard::v3_0);
0117     expected = QStringLiteral("2016-01-20T12:33:30-02:00");
0118     QCOMPARE(str, expected);
0119 
0120     dt = QDateTime(QDate(), QTime(12, 33, 30), QTimeZone::fromSecondsAheadOfUtc(-2 * 3600));
0121     str = VCardTool::createDateTime(dt, VCard::v3_0);
0122     expected = QString();
0123     QCOMPARE(str, expected);
0124 
0125     dt = QDateTime(QDate(2016, 1, 20), QTime(12, 33, 30));
0126     str = VCardTool::createDateTime(dt, VCard::v3_0, false);
0127     expected = QStringLiteral("2016-01-20");
0128     QCOMPARE(str, expected);
0129 
0130     dt = QDateTime(QDate(2016, 1, 20), QTime(12, 33, 30));
0131     str = VCardTool::createDateTime(dt, VCard::v4_0, false);
0132     expected = QStringLiteral("20160120");
0133     QCOMPARE(str, expected);
0134 }
0135 
0136 void DateTimeTest::shouldCreateDate()
0137 {
0138     using namespace KContacts;
0139 
0140     QDate d;
0141     QString str;
0142     QString expected;
0143 
0144     d = QDate(2016, 1, 20);
0145     str = VCardTool::createDate(d, VCard::v3_0);
0146     expected = QStringLiteral("2016-01-20");
0147     QCOMPARE(str, expected);
0148 
0149     d = QDate(2016, 1, 20);
0150     str = VCardTool::createDate(d, VCard::v4_0);
0151     expected = QStringLiteral("20160120");
0152     QCOMPARE(str, expected);
0153 
0154     d = QDate(-1, 1, 20);
0155     str = VCardTool::createDate(d, VCard::v3_0);
0156     expected = QStringLiteral("--01-20");
0157     QCOMPARE(str, expected);
0158 
0159     d = QDate(-1, 1, 20);
0160     str = VCardTool::createDate(d, VCard::v4_0);
0161     expected = QStringLiteral("--0120");
0162     QCOMPARE(str, expected);
0163 }
0164 
0165 QTEST_MAIN(DateTimeTest)
0166 
0167 #include "moc_datetimetest.cpp"