~unity8-desktop-session-team/indicator-session/indicator-session-using-upstart

« back to all changes in this revision

Viewing changes to tests/backend-dbus/test-actions.cc

  • Committer: Charles Kerr
  • Date: 2013-07-02 00:26:11 UTC
  • mto: This revision was merged to the branch mainline in revision 399.
  • Revision ID: charles.kerr@canonical.com-20130702002611-lhtxz8ouz9uc2ldx
in cmake/Translations.cmake, use the GNUInstallDirs variables

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
#include "backend.h"
23
23
#include "backend-dbus/backend-dbus.h"
24
24
 
25
 
#define SUPPRESS_KEY "suppress-logout-restart-shutdown"
26
 
 
27
25
/***
28
26
****
29
27
***/
38
36
 
39
37
    GCancellable * cancellable;
40
38
    IndicatorSessionActions * actions;
41
 
    GSettings * indicator_settings;
42
39
 
43
40
    virtual void SetUp ()
44
41
    {
45
42
      super :: SetUp ();
46
43
 
47
44
      // init 'actions'
48
 
      indicator_settings = g_settings_new ("com.canonical.indicator.session");
49
45
      cancellable = g_cancellable_new ();
50
46
      actions = 0;
51
47
      backend_get (cancellable, &actions, NULL, NULL);
56
52
    virtual void TearDown ()
57
53
    {
58
54
      g_cancellable_cancel (cancellable);
59
 
      g_clear_object (&indicator_settings);
60
55
      g_clear_object (&cancellable);
61
56
      g_clear_object (&actions);
62
57
 
192
187
TEST_F (Actions, Reboot)
193
188
{
194
189
  ASSERT_TRUE (login1_manager->last_action().empty());
195
 
  ASSERT_FALSE (g_settings_get_boolean (indicator_settings, SUPPRESS_KEY));
196
190
 
197
191
  // confirm that user is prompted
198
192
  // and that no action is taken when the user cancels the dialog
213
207
  ASSERT_EQ (login1_manager->last_action(), "reboot");
214
208
 
215
209
  // confirm that we try to reboot w/o prompting
216
 
  // if prompting is disabled
 
210
  // if the EndSessionDialog isn't available
 
211
  delete end_session_dialog;
 
212
  end_session_dialog = 0;
217
213
  login1_manager->clear_last_action ();
218
 
  ASSERT_EQ ("", login1_manager->last_action());
219
 
  g_settings_set_boolean (indicator_settings, SUPPRESS_KEY, TRUE);
220
 
  wait_msec (50);
221
214
  ASSERT_TRUE (login1_manager->last_action().empty());
222
215
  wait_msec (50);
223
216
  indicator_session_actions_reboot (actions);
224
217
  wait_msec (50);
225
 
  ASSERT_EQ ("reboot", login1_manager->last_action());
226
 
 
227
 
  g_settings_reset (indicator_settings, SUPPRESS_KEY);
 
218
  ASSERT_EQ (login1_manager->last_action(), "reboot");
228
219
}
229
220
 
230
221
TEST_F (Actions, PowerOff)
251
242
 
252
243
  // confirm that we try to shutdown w/o prompting
253
244
  // if the EndSessionDialog isn't available
254
 
  // if prompting is disabled
 
245
  delete end_session_dialog;
 
246
  end_session_dialog = 0;
255
247
  login1_manager->clear_last_action ();
256
 
  ASSERT_EQ ("", login1_manager->last_action());
257
 
  g_settings_set_boolean (indicator_settings, SUPPRESS_KEY, TRUE);
258
248
  wait_msec (50);
259
249
  indicator_session_actions_power_off (actions);
260
250
  wait_msec (50);
261
251
  ASSERT_EQ (login1_manager->last_action(), "power-off");
262
 
 
263
 
  g_settings_reset (indicator_settings, SUPPRESS_KEY);
264
252
}
265
253
 
266
254
TEST_F (Actions, Logout)
285
273
  wait_msec (100);
286
274
  ASSERT_EQ (MockSessionManager::LogoutQuiet, session_manager->last_action ());
287
275
 
288
 
  // confirm that we try to call SessionManager::LogoutQuet
289
 
  // when prompts are disabled
290
 
  login1_manager->clear_last_action ();
291
 
  ASSERT_EQ ("", login1_manager->last_action());
292
 
  g_settings_set_boolean (indicator_settings, SUPPRESS_KEY, TRUE);
 
276
  // confirm that we try to call SessionManager::LogoutNormal
 
277
  // if the EndSessionDialog isn't available
 
278
  delete end_session_dialog;
 
279
  end_session_dialog = 0;
293
280
  wait_msec (50);
294
281
  indicator_session_actions_logout (actions);
295
282
  wait_msec (50);
296
 
  ASSERT_EQ (MockSessionManager::LogoutQuiet, session_manager->last_action ());
297
 
 
298
 
  g_settings_reset (indicator_settings, SUPPRESS_KEY);
 
283
  ASSERT_EQ (MockSessionManager::LogoutNormal, session_manager->last_action ());
299
284
}
300
285
 
301
286
TEST_F (Actions, Suspend)
404
389
  ASSERT_EQ (b, gb);
405
390
}
406
391
 
407
 
namespace
408
 
{
409
 
  static gboolean toggle_suppress (gpointer settings)
410
 
  {
411
 
    const char * key = SUPPRESS_KEY;
412
 
    gboolean b = g_settings_get_boolean (G_SETTINGS(settings), key);
413
 
    g_settings_set_boolean (G_SETTINGS(settings), key, !b);
414
 
    return G_SOURCE_REMOVE;
415
 
  }
416
 
}
417
 
 
418
 
TEST_F (Actions, SuppressPrompts)
419
 
{
420
 
  for (int i=0; i<3; ++i)
421
 
    {
422
 
      bool b;
423
 
      gboolean b2;
424
 
 
425
 
      b = indicator_session_actions_can_prompt (actions);
426
 
      b2 = !g_settings_get_boolean (indicator_settings, SUPPRESS_KEY);
427
 
      ASSERT_EQ (b, b2);
428
 
      
429
 
      g_idle_add (toggle_suppress, indicator_settings);
430
 
      wait_for_signal (actions, "notify::" INDICATOR_SESSION_ACTIONS_PROP_CAN_PROMPT);
431
 
    }
432
 
 
433
 
  g_settings_reset (indicator_settings, SUPPRESS_KEY);
 
392
TEST_F (Actions, CanPrompt)
 
393
{
 
394
  gboolean b;
 
395
 
 
396
  ASSERT_TRUE (indicator_session_actions_can_prompt (actions));
 
397
 
 
398
  delete end_session_dialog;
 
399
  end_session_dialog = 0;
 
400
  wait_msec (50);
 
401
  ASSERT_FALSE (indicator_session_actions_can_prompt (actions));
 
402
  g_object_get (actions, INDICATOR_SESSION_ACTIONS_PROP_CAN_PROMPT, &b, NULL);
 
403
  ASSERT_FALSE (b);
 
404
 
 
405
  end_session_dialog = new MockEndSessionDialog (loop, conn);
 
406
  wait_msec (50);
 
407
  ASSERT_TRUE (indicator_session_actions_can_prompt (actions));
 
408
  g_object_get (actions, INDICATOR_SESSION_ACTIONS_PROP_CAN_PROMPT, &b, NULL);
 
409
  ASSERT_TRUE (b);
434
410
}