File indexing completed on 2024-04-28 15:18:53

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()
0019     {
0020         QVERIFY(
0021             identical(QDateTime(QDate(2022, 02, 22), QTime(22, 22, 22), Qt::LocalTime),
0022                       QDateTime(QDate(2022, 02, 22), QTime(22, 22, 22), Qt::LocalTime)));
0023 
0024         QVERIFY(
0025             identical(QDateTime(QDate(2022, 02, 22), QTime(22, 22, 22), QTimeZone("Atlantic/Azores")),
0026                       QDateTime(QDate(2022, 02, 22), QTime(22, 22, 22), QTimeZone("Atlantic/Azores"))));
0027 
0028         QVERIFY(identical(QDateTime(), QDateTime()));
0029     }
0030 
0031     void testFalse_data()
0032     {
0033         QTest::addColumn<QDateTime>("dt1");
0034         QTest::addColumn<QDateTime>("dt2");
0035 
0036         QTest::newRow("date")
0037             << QDateTime(QDate(2022, 02, 22), QTime(22, 22, 22), Qt::LocalTime)
0038             << QDateTime(QDate(2022, 02, 23), QTime(22, 22, 22), Qt::LocalTime);
0039         QTest::newRow("time")
0040             << QDateTime(QDate(2022, 02, 22), QTime(22, 22, 22), Qt::LocalTime)
0041             << QDateTime(QDate(2022, 02, 22), QTime(22, 22, 23), Qt::LocalTime);
0042 
0043         // Note:  Qt::LocalTime is used for "floating" date-times; "this time
0044         // in the current system time zone".
0045         QTest::newRow("timeSpec")
0046             << QDateTime(QDate(2022, 02, 22), QTime(22, 22, 22), Qt::LocalTime)
0047             << QDateTime(QDate(2022, 02, 22), QTime(22, 22, 22), QTimeZone::systemTimeZone());
0048 
0049         // Both zones are UTC+0.
0050         QTest::newRow("timeZone")
0051             << QDateTime(QDate(2022, 02, 22), QTime(22, 22, 22), QTimeZone("Africa/Abidjan"))
0052             << QDateTime(QDate(2022, 02, 22), QTime(22, 22, 22), QTimeZone("Africa/Accra"));
0053 
0054         QTest::newRow("invalid timeSpec")
0055             << QDateTime(QDate(2022, 02, 22), QTime(22, 22, 22), QDateTime().timeSpec())
0056             << QDateTime();
0057         QTest::newRow("invalid timeZone")
0058             << QDateTime(QDate(2022, 02, 22), QTime(22, 22, 22), QDateTime().timeZone())
0059             << QDateTime();
0060     }
0061 
0062     void testFalse()
0063     {
0064         QFETCH(QDateTime, dt1);
0065         QFETCH(QDateTime, dt2);
0066         QVERIFY(!identical(dt1, dt2));
0067     }
0068 };
0069 
0070 QTEST_MAIN(TestIdentical)
0071 #include "testidentical.moc"