]> git.sur5r.net Git - i3/i3/commitdiff
extend fullscreen testcase
authorMichael Stapelberg <michael@stapelberg.de>
Sat, 17 Apr 2010 15:40:19 +0000 (17:40 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Sat, 17 Apr 2010 15:40:19 +0000 (17:40 +0200)
testcases/t/02-fullscreen.t

index 766a43af8375f61bafa35dff6cc782dcdd5d2b11..4ca40e3f89a346158e952af12f644d849fc09781 100644 (file)
@@ -1,7 +1,7 @@
 #!perl
 # vim:ts=4:sw=4:expandtab
 
-use Test::More tests => 16;
+use Test::More tests => 19;
 use Test::Deep;
 use X11::XCB qw(:all);
 use Data::Dumper;
@@ -32,6 +32,10 @@ BEGIN {
 
 my $x = X11::XCB::Connection->new;
 
+##################################
+# map a window, then fullscreen it
+##################################
+
 my $original_rect = X11::XCB::Rect->new(x => 0, y => 0, width => 30, height => 30);
 
 my $window = $x->root->create_child(
@@ -74,12 +78,18 @@ ok(($wrect->{y} - $orect->{y}) < $threshold, 'y coordinate fullscreen');
 ok(abs($wrect->{width} - $orect->{width}) < $threshold, 'width coordinate fullscreen');
 ok(abs($wrect->{height} - $orect->{height}) < $threshold, 'height coordinate fullscreen');
 
+
 $window->unmap;
 
+#########################################################
+# test with a window which is fullscreened before mapping
+#########################################################
+
 # open another container because the empty one will swallow the window we
 # map in a second
 $i3->command('open')->recv;
 
+$original_rect = X11::XCB::Rect->new(x => 0, y => 0, width => 30, height => 30);
 $window = $x->root->create_child(
     class => WINDOW_CLASS_INPUT_OUTPUT,
     rect => $original_rect,
@@ -100,10 +110,40 @@ ok($window->mapped, "Window is mapped after opening it in fullscreen mode");
 $wrect = $new_rect;
 
 # see if the window really is fullscreen. 20 px for borders are allowed
-my $threshold = 20;
 ok(($wrect->{x} - $orect->{x}) < $threshold, 'x coordinate fullscreen');
 ok(($wrect->{y} - $orect->{y}) < $threshold, 'y coordinate fullscreen');
 ok(abs($wrect->{width} - $orect->{width}) < $threshold, 'width coordinate fullscreen');
 ok(abs($wrect->{height} - $orect->{height}) < $threshold, 'height coordinate fullscreen');
 
+###############################################################################
+# test if setting two windows in fullscreen mode at the same time does not work
+###############################################################################
+
+$original_rect = X11::XCB::Rect->new(x => 0, y => 0, width => 30, height => 30);
+my $swindow = $x->root->create_child(
+    class => WINDOW_CLASS_INPUT_OUTPUT,
+    rect => $original_rect,
+    background_color => '#C0C0C0',
+);
+
+$swindow->map;
+sleep(0.25);
+
+ok(!$swindow->mapped, 'window not mapped while fullscreen window active');
+
+$new_rect = $swindow->rect;
+ok(!eq_deeply($new_rect, $original_rect), "Window got repositioned");
+
+sleep(0.25);
+$swindow->fullscreen(1);
+sleep(0.25);
+
+my $content = get_ws_content($tmp);
+
+my $fullscreen_windows = grep { $_->{fullscreen_mode} != 0 } @{$content};
+is($fullscreen_windows, 1, 'amount of fullscreen windows');
+
+# clean up the workspace so that it will be cleaned when switching away
+$i3->command('kill')->recv for (@{$content});
+
 diag( "Testing i3, Perl $], $^X" );