extend fullscreen testcase
This commit is contained in:
parent
c4d87e2f81
commit
b244ce3915
|
@ -1,7 +1,7 @@
|
||||||
#!perl
|
#!perl
|
||||||
# vim:ts=4:sw=4:expandtab
|
# vim:ts=4:sw=4:expandtab
|
||||||
|
|
||||||
use Test::More tests => 16;
|
use Test::More tests => 19;
|
||||||
use Test::Deep;
|
use Test::Deep;
|
||||||
use X11::XCB qw(:all);
|
use X11::XCB qw(:all);
|
||||||
use Data::Dumper;
|
use Data::Dumper;
|
||||||
|
@ -32,6 +32,10 @@ BEGIN {
|
||||||
|
|
||||||
my $x = X11::XCB::Connection->new;
|
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 $original_rect = X11::XCB::Rect->new(x => 0, y => 0, width => 30, height => 30);
|
||||||
|
|
||||||
my $window = $x->root->create_child(
|
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->{width} - $orect->{width}) < $threshold, 'width coordinate fullscreen');
|
||||||
ok(abs($wrect->{height} - $orect->{height}) < $threshold, 'height coordinate fullscreen');
|
ok(abs($wrect->{height} - $orect->{height}) < $threshold, 'height coordinate fullscreen');
|
||||||
|
|
||||||
|
|
||||||
$window->unmap;
|
$window->unmap;
|
||||||
|
|
||||||
|
#########################################################
|
||||||
|
# test with a window which is fullscreened before mapping
|
||||||
|
#########################################################
|
||||||
|
|
||||||
# open another container because the empty one will swallow the window we
|
# open another container because the empty one will swallow the window we
|
||||||
# map in a second
|
# map in a second
|
||||||
$i3->command('open')->recv;
|
$i3->command('open')->recv;
|
||||||
|
|
||||||
|
$original_rect = X11::XCB::Rect->new(x => 0, y => 0, width => 30, height => 30);
|
||||||
$window = $x->root->create_child(
|
$window = $x->root->create_child(
|
||||||
class => WINDOW_CLASS_INPUT_OUTPUT,
|
class => WINDOW_CLASS_INPUT_OUTPUT,
|
||||||
rect => $original_rect,
|
rect => $original_rect,
|
||||||
|
@ -100,10 +110,40 @@ ok($window->mapped, "Window is mapped after opening it in fullscreen mode");
|
||||||
$wrect = $new_rect;
|
$wrect = $new_rect;
|
||||||
|
|
||||||
# see if the window really is fullscreen. 20 px for borders are allowed
|
# 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->{x} - $orect->{x}) < $threshold, 'x coordinate fullscreen');
|
||||||
ok(($wrect->{y} - $orect->{y}) < $threshold, 'y coordinate fullscreen');
|
ok(($wrect->{y} - $orect->{y}) < $threshold, 'y coordinate fullscreen');
|
||||||
ok(abs($wrect->{width} - $orect->{width}) < $threshold, 'width coordinate fullscreen');
|
ok(abs($wrect->{width} - $orect->{width}) < $threshold, 'width coordinate fullscreen');
|
||||||
ok(abs($wrect->{height} - $orect->{height}) < $threshold, 'height 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" );
|
diag( "Testing i3, Perl $], $^X" );
|
||||||
|
|
Loading…
Reference in New Issue