From b244ce3915e5e41bb24df49292da189bea8059c4 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Sat, 17 Apr 2010 17:40:19 +0200 Subject: [PATCH] extend fullscreen testcase --- testcases/t/02-fullscreen.t | 44 +++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/testcases/t/02-fullscreen.t b/testcases/t/02-fullscreen.t index 766a43af..4ca40e3f 100644 --- a/testcases/t/02-fullscreen.t +++ b/testcases/t/02-fullscreen.t @@ -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" );