From: Michael Stapelberg Date: Sat, 17 Apr 2010 11:53:41 +0000 (+0200) Subject: extend t/02-fullscreen.t X-Git-Tag: tree-pr1~244 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=1b4bd96ea989d14052fabf7c84a03ca53387fe67;p=i3%2Fi3 extend t/02-fullscreen.t --- diff --git a/testcases/t/02-fullscreen.t b/testcases/t/02-fullscreen.t index 40a7d983..766a43af 100644 --- a/testcases/t/02-fullscreen.t +++ b/testcases/t/02-fullscreen.t @@ -1,16 +1,33 @@ #!perl +# vim:ts=4:sw=4:expandtab -use Test::More tests => 8; +use Test::More tests => 16; use Test::Deep; use X11::XCB qw(:all); use Data::Dumper; +use FindBin; +use lib "$FindBin::Bin/lib"; +use i3test; +use AnyEvent::I3; +use List::Util qw(first); +use v5.10; # We use relatively long sleeps (1/4 second) to make sure the window manager # reacted. use Time::HiRes qw(sleep); +my $i3 = i3("/tmp/nestedcons"); + +my $tmp = get_unused_workspace(); +$i3->command("workspace $tmp")->recv; + +# get the output of this workspace +my $tree = $i3->get_workspaces->recv; +my @outputs = @{$tree->{nodes}}; +my $output = first { defined(first { $_->{name} eq $tmp } @{$_->{nodes}}) } @outputs; + BEGIN { - use_ok('X11::XCB::Window'); + use_ok('X11::XCB::Window'); } my $x = X11::XCB::Connection->new; @@ -18,9 +35,9 @@ my $x = X11::XCB::Connection->new; my $original_rect = X11::XCB::Rect->new(x => 0, y => 0, width => 30, height => 30); my $window = $x->root->create_child( - class => WINDOW_CLASS_INPUT_OUTPUT, - rect => $original_rect, - background_color => '#C0C0C0', + class => WINDOW_CLASS_INPUT_OUTPUT, + rect => $original_rect, + background_color => '#C0C0C0', ); isa_ok($window, 'X11::XCB::Window'); @@ -31,6 +48,9 @@ $window->map; sleep(0.25); +# open another container to make the window get only half of the screen +$i3->command('open')->recv; + my $new_rect = $window->rect; ok(!eq_deeply($new_rect, $original_rect), "Window got repositioned"); $original_rect = $new_rect; @@ -44,12 +64,26 @@ sleep(0.25); $new_rect = $window->rect; ok(!eq_deeply($new_rect, $original_rect), "Window got repositioned after fullscreen"); +my $orect = $output->{rect}; +my $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'); + $window->unmap; +# open another container because the empty one will swallow the window we +# map in a second +$i3->command('open')->recv; + $window = $x->root->create_child( - class => WINDOW_CLASS_INPUT_OUTPUT, - rect => $original_rect, - background_color => 61440, + class => WINDOW_CLASS_INPUT_OUTPUT, + rect => $original_rect, + background_color => 61440, ); is_deeply($window->rect, $original_rect, "rect unmodified before mapping"); @@ -59,7 +93,17 @@ $window->map; sleep(0.25); +$new_rect = $window->rect; ok(!eq_deeply($new_rect, $original_rect), "Window got repositioned after fullscreen"); 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'); + diag( "Testing i3, Perl $], $^X" );