~unity-team/unity/trunk

« back to all changes in this revision

Viewing changes to tests/test_application_launcher_icon.cpp

  • Committer: Tarmac
  • Author(s): Marco Trevisan (Treviño), Lukas Vacek
  • Date: 2013-02-08 17:43:30 UTC
  • mfrom: (3086.4.6 unity-trunk)
  • Revision ID: tarmac-20130208174330-0tcvvcbkm60kmt0t
ApplicationLauncherIcon: Show a list of related windows in a Launcher icon's Quicklist

(LP: #1107866). Fixes: https://bugs.launchpad.net/bugs/1107866.

Approved by John Lea, Marco Trevisan (Treviño).

Show diffs side-by-side

added added

removed removed

Lines of Context:
180
180
  EXPECT_TRUE(mock_icon->IsActive());
181
181
}
182
182
 
 
183
TEST_F(TestApplicationLauncherIcon, NoWindowListMenusWithOneWindow)
 
184
{
 
185
  auto win = std::make_shared<MockApplicationWindow>(g_random_int());
 
186
  mock_app->window_list_ = { win };
 
187
 
 
188
  auto const& menus = mock_icon->Menus();
 
189
  auto menu_it = std::find_if(menus.begin(), menus.end(), [win] (glib::Object<DbusmenuMenuitem> it) {
 
190
    auto* label = dbusmenu_menuitem_property_get(it, DBUSMENU_MENUITEM_PROP_LABEL);
 
191
    return (label && std::string(label) == win->title());
 
192
  });
 
193
 
 
194
  EXPECT_EQ(menu_it, menus.end());
 
195
}
 
196
 
 
197
TEST_F(TestApplicationLauncherIcon, WindowListMenusWithTwoWindows)
 
198
{
 
199
  auto win1 = std::make_shared<MockApplicationWindow>(1);
 
200
  auto wm_win1 = std::make_shared<StandaloneWindow>(win1->window_id());
 
201
  auto win2 = std::make_shared<MockApplicationWindow>(2);
 
202
  auto wm_win2 = std::make_shared<StandaloneWindow>(win2->window_id());
 
203
 
 
204
  mock_app->window_list_ = { win1, win2 };
 
205
  WM->AddStandaloneWindow(wm_win1);
 
206
  WM->AddStandaloneWindow(wm_win2);
 
207
  ASSERT_TRUE(wm_win2->active());
 
208
 
 
209
  auto const& menus = mock_icon->Menus();
 
210
 
 
211
  auto menu1_it = std::find_if(menus.begin(), menus.end(), [win1] (glib::Object<DbusmenuMenuitem> it) {
 
212
    auto* label = dbusmenu_menuitem_property_get(it, DBUSMENU_MENUITEM_PROP_LABEL);
 
213
    return (label && std::string(label) == win1->title());
 
214
  });
 
215
 
 
216
  ASSERT_NE(menu1_it, menus.end());
 
217
  EXPECT_TRUE(dbusmenu_menuitem_property_get_bool(*menu1_it, DBUSMENU_MENUITEM_PROP_ENABLED));
 
218
  EXPECT_TRUE(dbusmenu_menuitem_property_get_bool(*menu1_it, DBUSMENU_MENUITEM_PROP_VISIBLE));
 
219
  EXPECT_TRUE(dbusmenu_menuitem_property_get_bool(*menu1_it, QuicklistMenuItem::MARKUP_ACCEL_DISABLED_PROPERTY));
 
220
  EXPECT_EQ(dbusmenu_menuitem_property_get_int(*menu1_it, QuicklistMenuItem::MAXIMUM_LABEL_WIDTH_PROPERTY), 300);
 
221
 
 
222
  auto menu2_it = std::find_if(menus.begin(), menus.end(), [win2] (glib::Object<DbusmenuMenuitem> it) {
 
223
    auto* label = dbusmenu_menuitem_property_get(it, DBUSMENU_MENUITEM_PROP_LABEL);
 
224
    return (label && std::string(label) == win2->title());
 
225
  });
 
226
 
 
227
  ASSERT_NE(menu2_it, menus.end());
 
228
  EXPECT_TRUE(dbusmenu_menuitem_property_get_bool(*menu2_it, DBUSMENU_MENUITEM_PROP_ENABLED));
 
229
  EXPECT_TRUE(dbusmenu_menuitem_property_get_bool(*menu2_it, DBUSMENU_MENUITEM_PROP_VISIBLE));
 
230
  EXPECT_TRUE(dbusmenu_menuitem_property_get_bool(*menu2_it, QuicklistMenuItem::MARKUP_ACCEL_DISABLED_PROPERTY));
 
231
  EXPECT_EQ(dbusmenu_menuitem_property_get_int(*menu2_it, QuicklistMenuItem::MAXIMUM_LABEL_WIDTH_PROPERTY), 300);
 
232
 
 
233
  bool activated = false;
 
234
  wm_win1->active.changed.connect([&activated] (bool a) { activated = a; });
 
235
  g_signal_emit_by_name(*menu1_it, DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, 0);
 
236
 
 
237
  EXPECT_TRUE(wm_win1->active());
 
238
  EXPECT_TRUE(activated);
 
239
 
 
240
  activated = false;
 
241
  wm_win2->active.changed.connect([&activated] (bool a) { activated = a; });
 
242
  g_signal_emit_by_name(*menu2_it, DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, 0);
 
243
 
 
244
  EXPECT_TRUE(wm_win2->active());
 
245
  EXPECT_TRUE(activated);
 
246
}
 
247
 
 
248
TEST_F(TestApplicationLauncherIcon, WindowListMenusWithEmptyTitles)
 
249
{
 
250
  auto win1 = std::make_shared<MockApplicationWindow>(1);
 
251
  auto win2 = std::make_shared<MockApplicationWindow>(2);
 
252
  win1->title_.clear();
 
253
 
 
254
  mock_app->window_list_ = { win1, win2 };
 
255
  auto const& menus = mock_icon->Menus();
 
256
 
 
257
  auto menu1_it = std::find_if(menus.begin(), menus.end(), [win1] (glib::Object<DbusmenuMenuitem> it) {
 
258
    auto* label = dbusmenu_menuitem_property_get(it, DBUSMENU_MENUITEM_PROP_LABEL);
 
259
    return (label && std::string(label) == win1->title());
 
260
  });
 
261
 
 
262
  ASSERT_EQ(menu1_it, menus.end());
 
263
}
 
264
 
183
265
}