@@ -23,19 +23,8 @@
24#include <QtTest>
24#include <QtTest>
25#include <QDebug>
25#include <QDebug>
29#include <unitymenumodel.h>
26#include <unitymenumodel.h>
31− #define BUS_NAME "com.canonical.unity8.unitymenumodelstacktest"
32− #define OBJECT_PATH "/com/canonical/unity8/unitymenumodelstack"
34−static void on_bus_acquired (GDBusConnection *bus, const gchar *name, gpointer user_data);
35−static void on_name_aquired (GDBusConnection *bus, const gchar *name, gpointer user_data);
36−static void on_name_lost (GDBusConnection *bus, const gchar *name, gpointer user_data);
39class UnityMenuModelStackTest : public QObject
28class UnityMenuModelStackTest : public QObject
@@ -43,25 +32,10 @@ private Q_SLOTS:
44 void initTestCase()
33 void initTestCase()
52− GBusNameOwnerFlags flags;
53− flags = (GBusNameOwnerFlags) (G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT | G_BUS_NAME_OWNER_FLAGS_REPLACE);
55− g_bus_own_name (G_BUS_TYPE_SESSION, BUS_NAME, flags,
56− on_bus_acquired, on_name_aquired, on_name_lost, this, NULL);
59 void cleanupTestCase()
37 void cleanupTestCase()
62− g_object_unref(m_connection);
67 void init()
41 void init()
@@ -70,30 +44,11 @@ private Q_SLOTS:
70 QFETCH(int, menuDepth);
44 QFETCH(int, menuDepth);
71 QFETCH(int, subMenuCount);
45 QFETCH(int, subMenuCount);
73− waitFor([this]() { return this->m_connected || this->m_failed; }, 500);
47+ m_model = new UnityMenuModel();
74− QVERIFY(m_connected);
48+ m_model->setModelData(recuseAddMenu(subMenuCount, menuDepth));
76− const QString& path = QString(OBJECT_PATH) + "/" + test;
78− m_menuUid = exportMenuModel(&m_menu, m_connection, path, subMenuCount, menuDepth);
80− m_model = new UnityMenuModel;
81− m_model->setBusName(BUS_NAME);
82− m_model->setMenuObjectPath(path.toUtf8());
85 void cleanup() {
51 void cleanup() {
90− if (m_menuUid != 0) {
91− g_dbus_connection_unexport_menu_model(m_connection, m_menuUid);
95− g_object_unref(m_menu);
@@ -177,7 +132,8 @@ private Q_SLOTS:
179 QCOMPARE(stack.count(), menuDepth+1);
134 QCOMPARE(stack.count(), menuDepth+1);
180− g_menu_remove(m_menu, removeIndex);
135+
136+ m_model->removeRow(removeIndex);
182 waitFor([&stack, resultCount]() { return stack.count() == resultCount; }, 1000);
138 waitFor([&stack, resultCount]() { return stack.count() == resultCount; }, 1000);
183 QCOMPARE(stack.count(), resultCount);
139 QCOMPARE(stack.count(), resultCount);
@@ -191,65 +147,32 @@ private:
191 while(!functor() && timer.elapsed() < ms) { QTest::qWait(10); }
147 while(!functor() && timer.elapsed() < ms) { QTest::qWait(10); }
192 return functor();
148 return functor();
194− guint exportMenuModel(GMenu** menu, GDBusConnection* connection, const QString& object_path, int submenuCount, int depth);
197− GDBusConnection* m_connection;
202− UnityMenuModel* m_model;
205−void recuseAddMenu(GMenu* menu, int subMenuCount, int depth_remaining)
207− for (int i = 0; i < subMenuCount; i ++) {
208− GMenuItem* item = g_menu_item_new("", NULL);
210− if (depth_remaining > 0) {
211− GMenu* submenu = g_menu_new ();
212− recuseAddMenu(submenu, subMenuCount, depth_remaining-1);
151+ QVariant recuseAddMenu(int subMenuCount, int depth_remaining)
213− g_menu_item_set_submenu (item, G_MENU_MODEL (submenu));
152+ {
214− }
153+ QVariantList rows;
216− g_menu_append_item (menu, item);
155+ for (int i = 0; i < subMenuCount; i ++) {
217− }
156+ QVariantMap row;
218−}
157+ QVariantMap rowData;
220−guint UnityMenuModelStackTest::exportMenuModel(GMenu** menu, GDBusConnection* connection, const QString& object_path, int submenuCount, int depth)
159+ if (depth_remaining > 0) {
221−{
160+ row["submenu"] = recuseAddMenu(subMenuCount, depth_remaining-1);
222− *menu=g_menu_new();
161+ }
223− recuseAddMenu(*menu, submenuCount, depth);
225− QByteArray path = object_path.toUtf8();
163+ row["rowData"] = rowData;
227− return g_dbus_connection_export_menu_model (connection, path.constData(), G_MENU_MODEL (*menu), NULL);
165+ rows << row;
230−static void
168+ return rows;
231−on_bus_acquired (GDBusConnection *bus, const gchar *, gpointer user_data)
233− UnityMenuModelStackTest* test = (UnityMenuModelStackTest*)user_data;
234− test->m_connection = bus;
237−static void
171+public:
238−on_name_aquired (GDBusConnection*, const gchar*, gpointer user_data)
172+ UnityMenuModel* m_model;
240− UnityMenuModelStackTest* test = (UnityMenuModelStackTest*)user_data;
241− test->m_connected = true;
242− test->m_failed = false;
247−on_name_lost (GDBusConnection*, const gchar*, gpointer user_data)
249− UnityMenuModelStackTest* test = (UnityMenuModelStackTest*)user_data;
250− test->m_connected = false;
251− test->m_failed = true;
254QTEST_GUILESS_MAIN(UnityMenuModelStackTest)
177QTEST_GUILESS_MAIN(UnityMenuModelStackTest)
255#include "unitymenumodelstacktest.moc"
178#include "unitymenumodelstacktest.moc"