1 /*
2 SPDX-FileCopyrightText: 2016 Martin Graesslin <mgraesslin@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
5
6 */
7
8 #include "onscreennotificationtest.h"
9
10 #include "onscreennotification.h"
11 #include "input.h"
12
13 #include <KSharedConfig>
14 #include <KConfigGroup>
15
16 #include <QQmlEngine>
17 #include <QSignalSpy>
18 #include <QTest>
19
20 QTEST_MAIN(OnScreenNotificationTest);
21
22 namespace KWin
23 {
24
installInputEventSpy(InputEventSpy * spy)25 void InputRedirection::installInputEventSpy(InputEventSpy *spy)
26 {
27 Q_UNUSED(spy);
28 }
29
uninstallInputEventSpy(InputEventSpy * spy)30 void InputRedirection::uninstallInputEventSpy(InputEventSpy *spy)
31 {
32 Q_UNUSED(spy);
33 }
34
35 InputRedirection *InputRedirection::s_self = nullptr;
36
37 }
38
39 using KWin::OnScreenNotification;
40
show()41 void OnScreenNotificationTest::show()
42 {
43 OnScreenNotification notification;
44 auto config = KSharedConfig::openConfig(QString(), KSharedConfig::SimpleConfig);
45 KConfigGroup group = config->group("OnScreenNotification");
46 group.writeEntry(QStringLiteral("QmlPath"), QString("/does/not/exist.qml"));
47 group.sync();
48 notification.setConfig(config);
49 notification.setEngine(new QQmlEngine(¬ification));
50 notification.setMessage(QStringLiteral("Some text so that we see it in the test"));
51
52 QSignalSpy visibleChangedSpy(¬ification, &OnScreenNotification::visibleChanged);
53 QCOMPARE(notification.isVisible(), false);
54 notification.setVisible(true);
55 QCOMPARE(notification.isVisible(), true);
56 QCOMPARE(visibleChangedSpy.count(), 1);
57
58 // show again should not trigger
59 notification.setVisible(true);
60 QCOMPARE(visibleChangedSpy.count(), 1);
61
62 // timer should not have hidden
63 QTest::qWait(500);
64 QCOMPARE(notification.isVisible(), true);
65
66 // hide again
67 notification.setVisible(false);
68 QCOMPARE(notification.isVisible(), false);
69 QCOMPARE(visibleChangedSpy.count(), 2);
70
71 // now show with timer
72 notification.setTimeout(250);
73 notification.setVisible(true);
74 QCOMPARE(notification.isVisible(), true);
75 QCOMPARE(visibleChangedSpy.count(), 3);
76 QVERIFY(visibleChangedSpy.wait());
77 QCOMPARE(notification.isVisible(), false);
78 QCOMPARE(visibleChangedSpy.count(), 4);
79 }
80
timeout()81 void OnScreenNotificationTest::timeout()
82 {
83 OnScreenNotification notification;
84 QSignalSpy timeoutChangedSpy(¬ification, &OnScreenNotification::timeoutChanged);
85 QCOMPARE(notification.timeout(), 0);
86 notification.setTimeout(1000);
87 QCOMPARE(notification.timeout(), 1000);
88 QCOMPARE(timeoutChangedSpy.count(), 1);
89 notification.setTimeout(1000);
90 QCOMPARE(timeoutChangedSpy.count(), 1);
91 notification.setTimeout(0);
92 QCOMPARE(notification.timeout(), 0);
93 QCOMPARE(timeoutChangedSpy.count(), 2);
94 }
95
iconName()96 void OnScreenNotificationTest::iconName()
97 {
98 OnScreenNotification notification;
99 QSignalSpy iconNameChangedSpy(¬ification, &OnScreenNotification::iconNameChanged);
100 QVERIFY(iconNameChangedSpy.isValid());
101 QCOMPARE(notification.iconName(), QString());
102 notification.setIconName(QStringLiteral("foo"));
103 QCOMPARE(notification.iconName(), QStringLiteral("foo"));
104 QCOMPARE(iconNameChangedSpy.count(), 1);
105 notification.setIconName(QStringLiteral("foo"));
106 QCOMPARE(iconNameChangedSpy.count(), 1);
107 notification.setIconName(QStringLiteral("bar"));
108 QCOMPARE(notification.iconName(), QStringLiteral("bar"));
109 QCOMPARE(iconNameChangedSpy.count(), 2);
110 }
111
message()112 void OnScreenNotificationTest::message()
113 {
114 OnScreenNotification notification;
115 QSignalSpy messageChangedSpy(¬ification, &OnScreenNotification::messageChanged);
116 QVERIFY(messageChangedSpy.isValid());
117 QCOMPARE(notification.message(), QString());
118 notification.setMessage(QStringLiteral("foo"));
119 QCOMPARE(notification.message(), QStringLiteral("foo"));
120 QCOMPARE(messageChangedSpy.count(), 1);
121 notification.setMessage(QStringLiteral("foo"));
122 QCOMPARE(messageChangedSpy.count(), 1);
123 notification.setMessage(QStringLiteral("bar"));
124 QCOMPARE(notification.message(), QStringLiteral("bar"));
125 QCOMPARE(messageChangedSpy.count(), 2);
126 }
127