| |
@@ -0,0 +1,112 @@
|
| |
+ use base "installedtest";
|
| |
+ use strict;
|
| |
+ use testapi;
|
| |
+ use utils;
|
| |
+
|
| |
+ # This will test that
|
| |
+ # - a game can be played both full screen or normal
|
| |
+
|
| |
+ sub send_tab_to_select {
|
| |
+ my $times = shift;
|
| |
+ foreach (1 .. $times) {
|
| |
+ send_key("tab");
|
| |
+ sleep(1);
|
| |
+ }
|
| |
+ send_key("ret");
|
| |
+ sleep(2);
|
| |
+ }
|
| |
+
|
| |
+ sub go_tux {
|
| |
+ my $time = shift // 20;
|
| |
+ while ($time > 0) {
|
| |
+ hold_key("up");
|
| |
+ sleep(1);
|
| |
+ release_key("up");
|
| |
+ sleep(3);
|
| |
+ $time -= 1;
|
| |
+ }
|
| |
+ }
|
| |
+
|
| |
+ sub run {
|
| |
+ my $self = shift;
|
| |
+
|
| |
+ # Open the game
|
| |
+ menu_launch_type("tux racer");
|
| |
+ assert_screen("apps_run_tuxracer");
|
| |
+
|
| |
+ # Check that it has started in the fullscreen mode.
|
| |
+ if (check_screen("panel_controls")) {
|
| |
+ record_soft_failure("The game should have started in full screen mode.");
|
| |
+ }
|
| |
+ # Select new game. The background changes like hell,
|
| |
+ # and the mouse does not work particularly well
|
| |
+ # without 3d acceleration, so we need to rely
|
| |
+ # on keyboard.
|
| |
+ # Take what is offered.
|
| |
+ send_tab_to_select(2);
|
| |
+ assert_screen('tuxracer_menu');
|
| |
+ # Navigate to start the practice
|
| |
+ send_tab_to_select(1);
|
| |
+ assert_screen('tuxracer_bunnyhill');
|
| |
+ # Navigate to start the race.
|
| |
+ send_tab_to_select(6);
|
| |
+ # Wait a little bit to start the race
|
| |
+ sleep(5);
|
| |
+
|
| |
+ # Try to play the game.
|
| |
+ # This is sending a forward key intermittently
|
| |
+ # to slide to slope towards the finish. As it is difficult
|
| |
+ # to make sure Tux finishes in the right place and because
|
| |
+ # the game graphics changes a lot, we need to check whether
|
| |
+ # the screen changes and when it stops changing for some
|
| |
+ # time, we could assume that we have finished the game.
|
| |
+ assert_screen_change(sub { go_tux(30) }, timeout => 10);
|
| |
+ # Then hit to come back to the Race settings.
|
| |
+ send_key('esc');
|
| |
+ assert_screen('tuxracer_bunnyhill');
|
| |
+ sleep(2);
|
| |
+ # One more escape to come to the menu.
|
| |
+ send_key('esc');
|
| |
+ assert_screen('tuxracer_menu');
|
| |
+ # Navigate to Configuration and switch off full screen.
|
| |
+ send_tab_to_select(2);
|
| |
+ # Hit space to switch off full screen.
|
| |
+ send_key('spc');
|
| |
+ sleep(1);
|
| |
+ # Go and press OK.
|
| |
+ send_tab_to_select(7);
|
| |
+
|
| |
+ # Now the application should be in non-fs mode,
|
| |
+ # so we should be able to see the Gnome panel
|
| |
+ assert_screen("panel_controls");
|
| |
+
|
| |
+ # Start the game again.
|
| |
+ send_tab_to_select(1);
|
| |
+ assert_screen('tuxracer_bunnyhill');
|
| |
+ send_tab_to_select(6);
|
| |
+ sleep(5);
|
| |
+
|
| |
+ # Play it as before.
|
| |
+ assert_screen_change(sub { go_tux(30) }, timeout => 10);
|
| |
+
|
| |
+ # Send Esc
|
| |
+ send_key('esc');
|
| |
+ assert_screen('tuxracer_bunnyhill');
|
| |
+
|
| |
+ send_key('esc');
|
| |
+ assert_screen('tuxracer_menu');
|
| |
+
|
| |
+ # Quit game
|
| |
+ send_tab_to_select(6);
|
| |
+ }
|
| |
+
|
| |
+ sub test_flags {
|
| |
+ return {always_rollback => 1};
|
| |
+ }
|
| |
+
|
| |
+ 1;
|
| |
+
|
| |
+ # vim: set sw=4 et:
|
| |
+
|
| |
+
|
| |
+
|
| |