File indexing completed on 2024-04-21 16:12:20
0001 /* 0002 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0003 SPDX-FileCopyrightText: 2021 Harald Sitter <sitter@kde.org> 0004 */ 0005 0006 #include <QSignalSpy> 0007 #include <QTest> 0008 0009 #include <config-drkonqi.h> 0010 #include <statusnotifier_activationclosetimer.h> 0011 0012 class MockDBusServiceWatcher : public DBusServiceWatcher 0013 { 0014 Q_OBJECT 0015 public: 0016 using DBusServiceWatcher::DBusServiceWatcher; 0017 void start() override 0018 { 0019 } 0020 }; 0021 0022 class MockIdleWatcher : public IdleWatcher 0023 { 0024 Q_OBJECT 0025 public: 0026 using IdleWatcher::IdleWatcher; 0027 void start() override 0028 { 0029 } 0030 }; 0031 0032 class ActivationCloseTimerTest : public QObject 0033 { 0034 Q_OBJECT 0035 private Q_SLOTS: 0036 void serviceLostTest() 0037 { 0038 ActivationCloseTimer timer; 0039 timer.setActivationTimeout(1s); 0040 timer.setCloseTimeout(2s); 0041 0042 MockDBusServiceWatcher dbus; 0043 MockIdleWatcher idle; 0044 QSignalSpy activateSpy(&timer, &ActivationCloseTimer::autoActivate); 0045 QSignalSpy closeSpy(&timer, &ActivationCloseTimer::autoClose); 0046 timer.start(&dbus, &idle); 0047 Q_EMIT dbus.serviceUnregistered(); 0048 QVERIFY(activateSpy.wait()); 0049 QVERIFY(closeSpy.empty()); 0050 } 0051 0052 void serviceLostThenBackTest() 0053 { 0054 ActivationCloseTimer timer; 0055 timer.setActivationTimeout(1s); 0056 timer.setCloseTimeout(2s); 0057 0058 MockDBusServiceWatcher dbus; 0059 MockIdleWatcher idle; 0060 QSignalSpy activateSpy(&timer, &ActivationCloseTimer::autoActivate); 0061 QSignalSpy closeSpy(&timer, &ActivationCloseTimer::autoClose); 0062 timer.start(&dbus, &idle); 0063 Q_EMIT dbus.serviceUnregistered(); 0064 Q_EMIT dbus.serviceRegistered(); 0065 QVERIFY(!activateSpy.wait()); 0066 QVERIFY(!closeSpy.empty()); // seeing as the service returned we should receive an auto close 0067 } 0068 0069 void idleSystemLostAServiceTest() 0070 { 0071 ActivationCloseTimer timer; 0072 timer.setActivationTimeout(1s); 0073 timer.setCloseTimeout(2s); 0074 0075 MockDBusServiceWatcher dbus; 0076 MockIdleWatcher idle; 0077 QSignalSpy activateSpy(&timer, &ActivationCloseTimer::autoActivate); 0078 QSignalSpy closeSpy(&timer, &ActivationCloseTimer::autoClose); 0079 timer.start(&dbus, &idle); 0080 Q_EMIT idle.idle(); 0081 Q_EMIT dbus.serviceUnregistered(); 0082 QVERIFY(activateSpy.wait()); 0083 QVERIFY(closeSpy.empty()); 0084 } 0085 0086 void idleSystemHasAllServices() 0087 { 0088 ActivationCloseTimer timer; 0089 timer.setActivationTimeout(1s); 0090 timer.setCloseTimeout(2s); 0091 0092 MockDBusServiceWatcher dbus; 0093 MockIdleWatcher idle; 0094 QSignalSpy activateSpy(&timer, &ActivationCloseTimer::autoActivate); 0095 QSignalSpy closeSpy(&timer, &ActivationCloseTimer::autoClose); 0096 timer.start(&dbus, &idle); 0097 Q_EMIT idle.idle(); 0098 QVERIFY(!closeSpy.wait()); 0099 QVERIFY(activateSpy.empty()); 0100 } 0101 0102 void justAutoCloseTest() 0103 { 0104 ActivationCloseTimer timer; 0105 timer.setActivationTimeout(1s); 0106 timer.setCloseTimeout(2s); 0107 0108 MockDBusServiceWatcher dbus; 0109 MockIdleWatcher idle; 0110 QSignalSpy activateSpy(&timer, &ActivationCloseTimer::autoActivate); 0111 QSignalSpy closeSpy(&timer, &ActivationCloseTimer::autoClose); 0112 timer.start(&dbus, &idle); 0113 QVERIFY(closeSpy.wait()); 0114 QVERIFY(activateSpy.empty()); 0115 } 0116 }; 0117 0118 QTEST_GUILESS_MAIN(ActivationCloseTimerTest) 0119 0120 #include "statusnotifier_activationclosetimertest.moc"