@@ -20,6 +20,10 @@
2020#include "launcherbackend.h"
2121
2222#include <QtTest>
23+#include <QDBusConnection>
24+#include <QDBusMessage>
25+#include <QDBusVariant>
26+
2327
2428class LauncherBackendTest : public QObject
2529{
@@ -133,6 +137,80 @@ private Q_SLOTS:
133137 QString decodeOut = LauncherBackend::decodeAppId(encoded);
134138 QCOMPARE(decoded, decodeOut);
135139 }
140+
141+ void testDbusIface_data() {
142+ QTest::addColumn<QString>("appId");
143+ QTest::addColumn<bool>("setCount");
144+ QTest::addColumn<int>("inCount");
145+ QTest::addColumn<bool>("countVisible");
146+ QTest::addColumn<int>("expectedCount");
147+
148+ /* Get baseline data on things working */
149+ QTest::newRow("Baseline") << "rel-icon" << false << 0 << false << -1;
150+
151+ /* Turn it on */
152+ QTest::newRow("Visible Count") << "rel-icon" << true << 42 << true << 42;
153+
154+ /* Invalide app to load */
155+ QTest::newRow("Invalid App ID") << "this-app-doesnt-exist" << true << 42 << true << -1;
156+ }
157+
158+ void testDbusIface() {
159+ QFETCH(QString, appId);
160+ QFETCH(bool, setCount);
161+ QFETCH(int, inCount);
162+ QFETCH(bool, countVisible);
163+ QFETCH(int, expectedCount);
164+
165+ QDBusConnection con = QDBusConnection::sessionBus();
166+ QDBusMessage message;
167+ QDBusMessage reply;
168+
169+ LauncherBackend backend;
170+
171+ if (setCount) {
172+ message = QDBusMessage::createMethodCall("com.canonical.unity.launcher",
173+ "/com/canonical/unity/launcher/" + LauncherBackend::encodeAppId(appId),
174+ "org.freedesktop.DBus.Properties",
175+ "Set");
176+ QVariantList cargs;
177+ cargs.append(QString("com.canonical.unity.Launcher.Item"));
178+ cargs.append(QString("count"));
179+ cargs.append(QVariant::fromValue(QDBusVariant(inCount)));
180+
181+ message.setArguments(cargs);
182+ reply = con.call(message);
183+ QCOMPARE(reply.type(), QDBusMessage::ReplyMessage);
184+ }
185+
186+ /* Set countVisible */
187+ message = QDBusMessage::createMethodCall("com.canonical.unity.launcher",
188+ "/com/canonical/unity/launcher/" + LauncherBackend::encodeAppId(appId),
189+ "org.freedesktop.DBus.Properties",
190+ "Set");
191+ QVariantList cvargs;
192+ cvargs.append(QString("com.canonical.unity.Launcher.Item"));
193+ cvargs.append(QString("countVisible"));
194+ cvargs.append(QVariant::fromValue(QDBusVariant(countVisible)));
195+
196+ message.setArguments(cvargs);
197+ reply = con.call(message);
198+ QCOMPARE(reply.type(), QDBusMessage::ReplyMessage);
199+
200+ /* Get value */
201+ message = QDBusMessage::createMethodCall("com.canonical.unity.launcher",
202+ "/com/canonical/unity/launcher/" + LauncherBackend::encodeAppId(appId),
203+ "org.freedesktop.DBus.Properties",
204+ "Get");
205+ QVariantList getargs;
206+ getargs.append(QString("com.canonical.unity.Launcher.Item"));
207+ getargs.append(QString("count"));
208+
209+ message.setArguments(getargs);
210+ reply = con.call(message);
211+ QCOMPARE(reply.type(), QDBusMessage::ReplyMessage);
212+ QCOMPARE(reply.arguments()[0].value<QDBusVariant>().variant().toInt(), expectedCount);
213+ }
136214};
137215
138216QTEST_GUILESS_MAIN(LauncherBackendTest)