1 /* 2 * SPDX-FileCopyrightText: 2014 Mario Bensi <mbensi@ipsquad.net> 3 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 4 */ 5 6 7 #include <testlib/qtest_zanshin.h> 8 9 #include "testlib/monitorspy.h" 10 #include "testlib/akonadifakemonitor.h" 11 #include <AkonadiCore/Akonadi/Item> 12 13 using namespace Testlib; 14 15 class TimerTest: public QObject 16 { 17 Q_OBJECT 18 public: TimerTest(AkonadiFakeMonitor * monitor,int duration)19 TimerTest(AkonadiFakeMonitor *monitor, int duration) 20 : m_monitor(monitor) 21 { 22 QTimer::singleShot(duration, Qt::PreciseTimer, this, &TimerTest::addItem); 23 } 24 25 private slots: addItem()26 void addItem() 27 { 28 Akonadi::Item item; 29 m_monitor->addItem(item); 30 } 31 32 private: 33 AkonadiFakeMonitor *m_monitor; 34 }; 35 36 class MonitorSpyTest : public QObject 37 { 38 Q_OBJECT 39 public: MonitorSpyTest(QObject * parent=nullptr)40 explicit MonitorSpyTest(QObject *parent = nullptr) 41 : QObject(parent) 42 { 43 } 44 45 private slots: shouldWaitOneSecondWithoutSignal()46 void shouldWaitOneSecondWithoutSignal() 47 { 48 // GIVEN 49 AkonadiFakeMonitor monitor; 50 MonitorSpy monitorSpy(&monitor); 51 Akonadi::Item item; 52 QDateTime now = QDateTime::currentDateTime(); 53 54 // WHEN 55 monitorSpy.waitForStableState(); 56 57 // THEN 58 QVERIFY(now.msecsTo(QDateTime::currentDateTime()) >= 1000ll); 59 } 60 shouldWaitOneSecondAfterLastSignal()61 void shouldWaitOneSecondAfterLastSignal() 62 { 63 // GIVEN 64 AkonadiFakeMonitor monitor; 65 MonitorSpy monitorSpy(&monitor); 66 QDateTime now = QDateTime::currentDateTime(); 67 68 // WHEN 69 TimerTest timer(&monitor, 500); 70 monitorSpy.waitForStableState(); 71 72 // THEN 73 QVERIFY(now.msecsTo(QDateTime::currentDateTime()) >= 1500ll); 74 } 75 }; 76 77 ZANSHIN_TEST_MAIN(MonitorSpyTest) 78 79 #include "monitorspytest.moc" 80