gri3-wm/testcases/t/112-floating-resize.t

84 lines
2.1 KiB
Perl
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!perl
# vim:ts=4:sw=4:expandtab
use i3test;
use X11::XCB qw(:all);
BEGIN {
use_ok('X11::XCB::Connection') or BAIL_OUT('Cannot load X11::XCB::Connection');
}
my $x = X11::XCB::Connection->new;
fresh_workspace;
#####################################################################
# Create a floating window and see if resizing works
#####################################################################
my $window = open_floating_window($x);
# See if configurerequests cause window movements (they should not)
my ($a, $t) = $window->rect;
$window->rect(X11::XCB::Rect->new(x => $a->x, y => $a->y, width => $a->width, height => $a->height));
sync_with_i3($x);
my ($na, $nt) = $window->rect;
is_deeply($na, $a, 'Rects are equal after configurerequest');
sub test_resize {
$window->rect(X11::XCB::Rect->new(x => 0, y => 0, width => 100, height => 100));
sync_with_i3($x);
my ($absolute, $top) = $window->rect;
# Make sure the width/height are different from what were gonna test, so
# that the test will work.
isnt($absolute->width, 300, 'width != 300');
isnt($absolute->height, 500, 'height != 500');
$window->rect(X11::XCB::Rect->new(x => 0, y => 0, width => 300, height => 500));
sync_with_i3($x);
($absolute, $top) = $window->rect;
is($absolute->width, 300, 'width = 300');
is($absolute->height, 500, 'height = 500');
}
# Test with default border
test_resize;
# Test borderless
cmd 'border none';
test_resize;
# Test with 1-px-border
cmd 'border 1pixel';
test_resize;
################################################################################
# Check if we can position a floating window out of bounds. The XDummy screen
# is 1280x1024, so x=2864, y=893 is out of bounds.
################################################################################
($a, $t) = $window->rect;
$window->rect(X11::XCB::Rect->new(
x => 2864,
y => 893,
width => $a->width,
height => $a->height));
sync_with_i3;
($a, $t) = $window->rect;
cmp_ok($a->x, '<', 1280, 'X not moved out of bounds');
cmp_ok($a->y, '<', 1024, 'Y not moved out of bounds');
done_testing;