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"