File indexing completed on 2024-04-14 03:50:36
0001 /* 0002 * SPDX-FileCopyrightText: 2022 Glen Ditchfield <GJDitchfield@acm.org> 0003 * SPDX-License-Identifier: LGPL-2.0-or-later 0004 */ 0005 0006 #include "incidencebase.h" 0007 0008 #include <QTest> 0009 #include <QTimeZone> 0010 0011 using namespace KCalendarCore; 0012 0013 class TestIdentical: public QObject 0014 { 0015 Q_OBJECT 0016 private Q_SLOTS: 0017 0018 void testTrue_data() 0019 { 0020 QTest::addColumn<QDateTime>("dt1"); 0021 QTest::addColumn<QDateTime>("dt2"); 0022 0023 QTest::newRow("local") << QDateTime(QDate(2022, 02, 22), QTime(22, 22, 22), QTimeZone::LocalTime) 0024 << QDateTime(QDate(2022, 02, 22), QTime(22, 22, 22), QTimeZone::LocalTime); 0025 0026 QTest::newRow("tz") << QDateTime(QDate(2022, 02, 22), QTime(22, 22, 22), QTimeZone("Atlantic/Azores")) 0027 << QDateTime(QDate(2022, 02, 22), QTime(22, 22, 22), QTimeZone("Atlantic/Azores")); 0028 0029 QTest::newRow("invalid") << QDateTime() << QDateTime(); 0030 0031 #pragma GCC diagnostic push 0032 #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 0033 QTest::newRow("utc-tz") << QDateTime(QDate(2023, 11, 18), QTime(13, 31), Qt::UTC) << QDateTime(QDate(2023, 11, 18), QTime(13, 31), QTimeZone::utc()); 0034 QTest::newRow("tz-newoffset") << QDateTime(QDate(2023, 11, 18), QTime(13, 31), Qt::UTC) 0035 << QDateTime(QDate(2023, 11, 18), QTime(13, 31), QTimeZone::fromSecondsAheadOfUtc(0)); 0036 QTest::newRow("utc-newoffset") << QDateTime(QDate(2023, 11, 18), QTime(13, 31), Qt::UTC) 0037 << QDateTime(QDate(2023, 11, 18), QTime(13, 31), QTimeZone::fromSecondsAheadOfUtc(0)); 0038 QTest::newRow("utc-oldoffset-newoffset") << QDateTime(QDate(2023, 11, 18), QTime(13, 31), Qt::OffsetFromUTC, 0) 0039 << QDateTime(QDate(2023, 11, 18), QTime(13, 31), QTimeZone::fromSecondsAheadOfUtc(0)); 0040 0041 QTest::newRow("offset") << QDateTime(QDate(2023, 11, 18), QTime(13, 31), Qt::OffsetFromUTC, 3600) 0042 << QDateTime(QDate(2023, 11, 18), QTime(13, 31), QTimeZone::fromSecondsAheadOfUtc(3600)); 0043 #pragma GCC diagnostic pop 0044 } 0045 0046 void testTrue() 0047 { 0048 QFETCH(QDateTime, dt1); 0049 QFETCH(QDateTime, dt2); 0050 0051 QVERIFY(identical(dt1, dt2)); 0052 QVERIFY(identical(dt2, dt1)); 0053 } 0054 0055 void testFalse_data() 0056 { 0057 QTest::addColumn<QDateTime>("dt1"); 0058 QTest::addColumn<QDateTime>("dt2"); 0059 0060 QTest::newRow("date") << QDateTime(QDate(2022, 02, 22), QTime(22, 22, 22), QTimeZone::LocalTime) 0061 << QDateTime(QDate(2022, 02, 23), QTime(22, 22, 22), QTimeZone::LocalTime); 0062 QTest::newRow("time") << QDateTime(QDate(2022, 02, 22), QTime(22, 22, 22), QTimeZone::LocalTime) 0063 << QDateTime(QDate(2022, 02, 22), QTime(22, 22, 23), QTimeZone::LocalTime); 0064 0065 // Note: QTimeZone::LocalTime is used for "floating" date-times; "this time 0066 // in the current system time zone". 0067 QTest::newRow("timeSpec") << QDateTime(QDate(2022, 02, 22), QTime(22, 22, 22), QTimeZone::LocalTime) 0068 << QDateTime(QDate(2022, 02, 22), QTime(22, 22, 22), QTimeZone::systemTimeZone()); 0069 0070 // Both zones are UTC+0. 0071 QTest::newRow("timeZone") 0072 << QDateTime(QDate(2022, 02, 22), QTime(22, 22, 22), QTimeZone("Africa/Abidjan")) 0073 << QDateTime(QDate(2022, 02, 22), QTime(22, 22, 22), QTimeZone("Africa/Accra")); 0074 0075 #pragma GCC diagnostic push 0076 #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 0077 QTest::newRow("invalid timeSpec") 0078 << QDateTime(QDate(2022, 02, 22), QTime(22, 22, 22), QDateTime().timeSpec()) 0079 << QDateTime(); 0080 #pragma GCC diagnostic pop 0081 QTest::newRow("invalid timeZone") 0082 << QDateTime(QDate(2022, 02, 22), QTime(22, 22, 22), QDateTime().timeZone()) 0083 << QDateTime(); 0084 } 0085 0086 void testFalse() 0087 { 0088 QFETCH(QDateTime, dt1); 0089 QFETCH(QDateTime, dt2); 0090 QVERIFY(!identical(dt1, dt2)); 0091 } 0092 }; 0093 0094 QTEST_MAIN(TestIdentical) 0095 #include "testidentical.moc"