File indexing completed on 2025-03-09 04:57:05

0001 /*
0002  * SPDX-FileCopyrightText: 2014 Mario Bensi <mbensi@ipsquad.net>
0003  SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0004 */
0005 
0006 
0007 #include <testlib/qtest_zanshin.h>
0008 
0009 #include "testlib/monitorspy.h"
0010 #include "testlib/akonadifakemonitor.h"
0011 #include <Akonadi/Item>
0012 
0013 using namespace Testlib;
0014 
0015 class TimerTest: public QObject
0016 {
0017     Q_OBJECT
0018 public:
0019     TimerTest(AkonadiFakeMonitor *monitor, int duration)
0020         : m_monitor(monitor)
0021     {
0022         QTimer::singleShot(duration, Qt::PreciseTimer, this, &TimerTest::addItem);
0023     }
0024 
0025 private slots:
0026     void addItem()
0027     {
0028         Akonadi::Item item;
0029         m_monitor->addItem(item);
0030     }
0031 
0032 private:
0033     AkonadiFakeMonitor *m_monitor;
0034 };
0035 
0036 class MonitorSpyTest : public QObject
0037 {
0038     Q_OBJECT
0039 public:
0040     explicit MonitorSpyTest(QObject *parent = nullptr)
0041         : QObject(parent)
0042     {
0043     }
0044 
0045 private slots:
0046     void shouldWaitOneSecondWithoutSignal()
0047     {
0048         // GIVEN
0049         AkonadiFakeMonitor monitor;
0050         MonitorSpy monitorSpy(&monitor);
0051         Akonadi::Item item;
0052         QDateTime now = QDateTime::currentDateTime();
0053 
0054         // WHEN
0055         monitorSpy.waitForStableState();
0056 
0057         // THEN
0058         QVERIFY(now.msecsTo(QDateTime::currentDateTime()) >= 1000ll);
0059     }
0060 
0061     void shouldWaitOneSecondAfterLastSignal()
0062     {
0063         // GIVEN
0064         AkonadiFakeMonitor monitor;
0065         MonitorSpy monitorSpy(&monitor);
0066         QDateTime now = QDateTime::currentDateTime();
0067 
0068         // WHEN
0069         TimerTest timer(&monitor, 500);
0070         monitorSpy.waitForStableState();
0071 
0072         // THEN
0073         QVERIFY(now.msecsTo(QDateTime::currentDateTime()) >= 1500ll);
0074     }
0075 };
0076 
0077 ZANSHIN_TEST_MAIN(MonitorSpyTest)
0078 
0079 #include "monitorspytest.moc"