Back to index

unity  6.0.0
Public Member Functions
unity.tests.test_switcher.SwitcherWorkspaceTests Class Reference
Inheritance diagram for unity.tests.test_switcher.SwitcherWorkspaceTests:
Inheritance graph
[legend]
Collaboration diagram for unity.tests.test_switcher.SwitcherWorkspaceTests:
Collaboration graph
[legend]

List of all members.

Public Member Functions

def test_switcher_shows_current_workspace_only
def test_switcher_all_mode_shows_all_apps
def test_switcher_can_switch_to_minimised_window
def set_timeout_setting
def setUp
def check_test_behavior
def dash
def hud
def launcher
def panels
def switcher
def window_manager
def workspace
def set_unity_log_level
def assertNumberWinsIsEventually

Detailed Description

Test Switcher behavior with respect to multiple workspaces.

Definition at line 343 of file test_switcher.py.


Member Function Documentation

def unity.tests.UnityTestCase.assertNumberWinsIsEventually (   self,
  app,
  num 
) [inherited]
Asserts that 'app' eventually has 'num' wins. Waits up to 10 seconds.

Definition at line 196 of file __init__.py.

00196 
00197     def assertNumberWinsIsEventually(self, app, num):
00198         """Asserts that 'app' eventually has 'num' wins. Waits up to 10 seconds."""
00199 
00200         self.assertThat(lambda: len(app.get_windows()), Eventually(Equals(num)))

Here is the caller graph for this function:

Fail the test if it did something naughty.

This includes leaving the dash or the hud open, changing the current
workspace, or leaving the system in show_desktop mode.

Definition at line 56 of file __init__.py.

00056 
00057     def check_test_behavior(self):
00058         """Fail the test if it did something naughty.
00059 
00060         This includes leaving the dash or the hud open, changing the current
00061         workspace, or leaving the system in show_desktop mode.
00062 
00063         """
00064         well_behaved = True
00065         reasons = []
00066         log.info("Checking system state for badly behaving test...")
00067 
00068         # Have we switched workspace?
00069         if self.workspace.current_workspace != self._initial_workspace_num:
00070             well_behaved = False
00071             reasons.append("The test changed the active workspace from %d to %d." \
00072                 % (self._initial_workspace_num, self.workspace.current_workspace))
00073             log.warning("Test changed the active workspace, changing it back...")
00074             self.workspace.switch_to(self._initial_workspace_num)
00075         # Have we left the dash open?
00076         if self.dash.visible:
00077             well_behaved = False
00078             reasons.append("The test left the dash open.")
00079             log.warning("Test left the dash open, closing it...")
00080             self.dash.ensure_hidden()
00081         # ... or the hud?
00082         if self.hud.visible:
00083             well_behaved = False
00084             reasons.append("The test left the hud open.")
00085             log.warning("Test left the hud open, closing it...")
00086             self.hud.ensure_hidden()
00087         # Are we in show desktop mode?
00088         if self.window_manager.showdesktop_active:
00089             well_behaved = False
00090             reasons.append("The test left the system in show_desktop mode.")
00091             log.warning("Test left the system in show desktop mode, exiting it...")
00092             self.window_manager.leave_show_desktop()
00093         for launcher in self.launcher.get_launchers():
00094             if launcher.in_keynav_mode:
00095                 well_behaved = False
00096                 reasons.append("The test left the launcher keynav mode enabled.")
00097                 log.warning("Test left the launcher in keynav mode, exiting it...")
00098                 launcher.key_nav_cancel()
00099             if launcher.in_switcher_mode:
00100                 well_behaved = False
00101                 reasons.append("The test left the launcher in switcher mode.")
00102                 log.warning("Test left the launcher in switcher mode, exiting it...")
00103                 launcher.switcher_cancel()
00104 
00105         if not well_behaved:
00106             self.fail("/n".join(reasons))
00107         else:
00108             log.info("Test was well behaved.")

def unity.tests.UnityTestCase.dash (   self) [inherited]

Definition at line 110 of file __init__.py.

00110 
00111     def dash(self):
00112         if not getattr(self, '__dash', None):
00113             self.__dash = Dash()
00114         return self.__dash

def unity.tests.UnityTestCase.hud (   self) [inherited]

Definition at line 116 of file __init__.py.

00116 
00117     def hud(self):
00118         if not getattr(self, '__hud', None):
00119             self.__hud = Hud();
00120         return self.__hud

def unity.tests.UnityTestCase.launcher (   self) [inherited]

Definition at line 122 of file __init__.py.

00122 
00123     def launcher(self):
00124         if not getattr(self, '__launcher', None):
00125             self.__launcher = self._get_launcher_controller()
00126         return self.__launcher

def unity.tests.UnityTestCase.panels (   self) [inherited]

Definition at line 128 of file __init__.py.

00128 
00129     def panels(self):
00130         if not getattr(self, '__panels', None):
00131             self.__panels = self._get_panel_controller()
00132         return self.__panels

def unity.tests.test_switcher.SwitcherTestCase.set_timeout_setting (   self,
  state 
) [inherited]

Definition at line 22 of file test_switcher.py.

00022 
00023     def set_timeout_setting(self, state):
00024         if type(state) is not bool:
00025             raise TypeError("'state' must be boolean, not %r" % type(state))
00026         self.set_unity_option("alt_tab_timeout", state)
00027         sleep(1)
00028 

Here is the caller graph for this function:

def unity.tests.UnityTestCase.set_unity_log_level (   self,
  component,
  level 
) [inherited]
Set the unity log level for 'component' to 'level'.

Valid levels are: TRACE, DEBUG, INFO, WARNING and ERROR.

Components are dotted unity component names. The empty string specifies
the root logging component.

Definition at line 183 of file __init__.py.

00183 
00184     def set_unity_log_level(self, component, level):
00185         """Set the unity log level for 'component' to 'level'.
00186 
00187         Valid levels are: TRACE, DEBUG, INFO, WARNING and ERROR.
00188 
00189         Components are dotted unity component names. The empty string specifies
00190         the root logging component.
00191         """
00192         valid_levels = ('TRACE', 'DEBUG', 'INFO', 'WARN', 'WARNING', 'ERROR')
00193         if level not in valid_levels:
00194             raise ValueError("Log level '%s' must be one of: %r" % (level, valid_levels))
00195         set_log_severity(component, level)

Here is the call graph for this function:

Here is the caller graph for this function:

def unity.tests.UnityTestCase.setUp (   self) [inherited]

Reimplemented in unity.tests.test_panel.PanelCrossMonitorsTests, unity.tests.test_dash.DashBorderTests, unity.tests.test_dash.DashLensBarTests, unity.tests.test_hud.HudVisualTests, unity.tests.test_hud.HudLockedLauncherInteractionsTests, unity.tests.test_hud.HudLauncherInteractionsTests, unity.tests.test_switcher.SwitcherDetailsTests, unity.tests.test_panel.PanelWindowButtonsTests, unity.tests.test_ibus.IBusTestsAnthyIgnore, unity.tests.test_ibus.IBusTestsPinyinIgnore, unity.tests.test_ibus.IBusTestsAnthy, unity.tests.test_quicklist.QuicklistKeyNavigationTests, unity.tests.test_ibus.IBusTestsHangul, unity.tests.test_dash.DashMultiKeyTests, unity.tests.test_ibus.IBusTestsPinyin, unity.tests.test_hud.HudBehaviorTests, unity.tests.test_hud.HudTestsBase, unity.tests.test_panel.PanelTestsBase, unity.tests.launcher.LauncherTestCase, unity.tests.test_switcher.SwitcherTests, unity.tests.launcher.test_capture.LauncherCaptureTests, unity.tests.test_ibus.IBusTests, unity.tests.launcher.test_icon_behavior.LauncherIconsTests, unity.tests.launcher.test_reveal.LauncherRevealTests, unity.tests.launcher.test_shortcut.LauncherShortcutTests, unity.tests.test_shortcut_hint.BaseShortcutHintTests, unity.tests.test_command_lens.CommandLensSearchTests, unity.tests.test_dash.DashTestCase, unity.tests.test_home_lens.HomeLensSearchTests, and unity.tests.test_showdesktop.ShowDesktopTests.

Definition at line 46 of file __init__.py.

00046 
00047     def setUp(self):
00048         super(UnityTestCase, self).setUp()
00049         self._setUpUnityLogging()
00050         self._initial_workspace_num = self.workspace.current_workspace
00051         self.addCleanup(self.check_test_behavior)
00052         #
00053         # Setting this here since the show desktop feature seems to be a bit
00054         # ropey. Once it's been proven to work reliably we can remove this line:
00055         self.set_unity_log_level("unity.plugin", "DEBUG")

Here is the call graph for this function:

def unity.tests.UnityTestCase.switcher (   self) [inherited]

Definition at line 134 of file __init__.py.

00134 
00135     def switcher(self):
00136         if not getattr(self, '__switcher', None):
00137             self.__switcher = Switcher()
00138         return self.__switcher

Test switcher 'show_all' mode shows apps from all workspaces.

Definition at line 369 of file test_switcher.py.

00369 
00370     def test_switcher_all_mode_shows_all_apps(self):
00371         """Test switcher 'show_all' mode shows apps from all workspaces."""
00372         initial_workspace = self.workspace.current_workspace
00373         self.addCleanup(self.workspace.switch_to, initial_workspace)
00374         self.close_all_app('Calculator')
00375         self.close_all_app('Character Map')
00376 
00377         #FIXME: this is setup
00378         self.workspace.switch_to(1)
00379         calc = self.start_app("Calculator")
00380         sleep(1)
00381         self.workspace.switch_to(2)
00382         char_map = self.start_app("Character Map")
00383         sleep(1)
00384         # END SETUP
00385 
00386         self.switcher.initiate(SwitcherMode.ALL)
00387         self.addCleanup(self.switcher.terminate)
00388 
00389         icon_names = [i.tooltip_text for i in self.switcher.icons]
00390         self.assertThat(icon_names, Contains(calc.name))
00391         self.assertThat(icon_names, Contains(char_map.name))

Switcher must be able to switch to a minimised window when there's

another instance of the same application on a different workspace.

Definition at line 392 of file test_switcher.py.

00392 
00393     def test_switcher_can_switch_to_minimised_window(self):
00394         """Switcher must be able to switch to a minimised window when there's
00395 
00396         another instance of the same application on a different workspace.
00397 
00398         """
00399         initial_workspace = self.workspace.current_workspace
00400         self.addCleanup(self.workspace.switch_to, initial_workspace)
00401         #FIXME this is setup.
00402         # disable automatic gridding of the switcher after a timeout, since it makes
00403         # it harder to write the tests.
00404         self.set_unity_option("alt_tab_timeout", False)
00405         self.close_all_app("Calculator")
00406         self.close_all_app("Mahjongg")
00407 
00408         self.workspace.switch_to(1)
00409         self.start_app("Mahjongg")
00410 
00411         self.workspace.switch_to(3)
00412         mahjongg = self.start_app("Mahjongg")
00413         sleep(1)
00414         self.keybinding("window/minimize")
00415         sleep(1)
00416 
00417         self.start_app("Calculator")
00418         sleep(1)
00419         # END SETUP
00420 
00421         self.switcher.initiate()
00422         while self.switcher.current_icon.tooltip_text != mahjongg.name:
00423             logger.debug("%s -> %s" % (self.switcher.current_icon.tooltip_text, mahjongg.name))
00424             self.switcher.next_icon()
00425             sleep(1)
00426         self.switcher.select()
00427 
00428         #get mahjongg windows - there should be two:
00429         wins = mahjongg.get_windows()
00430         self.assertThat(len(wins), Equals(2))
00431         # Ideally we should be able to find the instance that is on the
00432         # current workspace and ask that one if it is hidden.
00433         self.assertFalse(wins[0].is_hidden)
00434         self.assertFalse(wins[1].is_hidden)
Switcher must show apps from the current workspace only.

Definition at line 346 of file test_switcher.py.

00346 
00347     def test_switcher_shows_current_workspace_only(self):
00348         """Switcher must show apps from the current workspace only."""
00349         initial_workspace = self.workspace.current_workspace
00350         self.addCleanup(self.workspace.switch_to, initial_workspace)
00351         #FIXME: SETUP
00352         self.close_all_app('Calculator')
00353         self.close_all_app('Character Map')
00354 
00355         self.workspace.switch_to(1)
00356         calc = self.start_app("Calculator")
00357         sleep(1)
00358         self.workspace.switch_to(2)
00359         char_map = self.start_app("Character Map")
00360         sleep(1)
00361         # END SETUP
00362 
00363         self.switcher.initiate()
00364         self.addCleanup(self.switcher.terminate)
00365 
00366         icon_names = [i.tooltip_text for i in self.switcher.icons]
00367         self.assertThat(icon_names, Contains(char_map.name))
00368         self.assertThat(icon_names, Not(Contains(calc.name)))

def unity.tests.UnityTestCase.window_manager (   self) [inherited]

Definition at line 140 of file __init__.py.

00140 
00141     def window_manager(self):
00142         if not getattr(self, '__window_manager', None):
00143             self.__window_manager = self._get_window_manager()
00144         return self.__window_manager

def unity.tests.UnityTestCase.workspace (   self) [inherited]

Definition at line 146 of file __init__.py.

00146 
00147     def workspace(self):
00148         if not getattr(self, '__workspace', None):
00149             self.__workspace = WorkspaceManager()
00150         return self.__workspace


The documentation for this class was generated from the following file: