#!perl
# vim:ts=4:sw=4:expandtab
-use Test::More tests => 9;
-use Test::Deep;
-use X11::XCB qw(:all);
-use Data::Dumper;
-use Time::HiRes qw(sleep);
-use FindBin;
-use lib "$FindBin::Bin/lib";
use i3test;
+use X11::XCB qw(:all);
BEGIN {
use_ok('X11::XCB::Window');
}
-X11::XCB::Connection->connect(':0');
+my $x = X11::XCB::Connection->new;
# Create a floating window which is smaller than the minimum enforced size of i3
-my $original_rect = X11::XCB::Rect->new(x => 0, y => 0, width => 30, height => 30);
-
-my $window = X11::XCB::Window->new(
+my $window = $x->root->create_child(
class => WINDOW_CLASS_INPUT_OUTPUT,
- rect => $original_rect,
- background_color => 12632256,
- type => 'utility',
+ rect => [ 0, 0, 30, 30],
+ background_color => '#C0C0C0',
+ # replace the type with 'utility' as soon as the coercion works again in X11::XCB
+ window_type => $x->atom(name => '_NET_WM_WINDOW_TYPE_UTILITY'),
);
isa_ok($window, 'X11::XCB::Window');
-$window->create;
$window->map;
-sleep(0.25);
+sleep 0.25;
my ($absolute, $top) = $window->rect;
-ok($absolute->{width} >= 75, "i3 raised the width to 75");
-ok($absolute->{height} >= 50, "i3 raised the height to 50");
+ok($window->mapped, 'Window is mapped');
+cmp_ok($absolute->{width}, '>=', 75, 'i3 raised the width to 75');
+cmp_ok($absolute->{height}, '>=', 50, 'i3 raised the height to 50');
-ok($absolute->{x} != 0 && $absolute->{y} != 0, "i3 did not map it to (0x0)");
+ok($absolute->{x} != 0 && $absolute->{y} != 0, 'i3 did not map it to (0x0)');
-$original_rect = X11::XCB::Rect->new(x => 1, y => 1, width => 80, height => 90);
+$window->unmap;
-$window = X11::XCB::Window->new(
+$window = $x->root->create_child(
class => WINDOW_CLASS_INPUT_OUTPUT,
- rect => $original_rect,
- background_color => 12632256,
- type => 'utility',
+ rect => [ 1, 1, 80, 90],
+ background_color => '#C0C0C0',
+ window_type => $x->atom(name => '_NET_WM_WINDOW_TYPE_UTILITY'),
);
isa_ok($window, 'X11::XCB::Window');
-$window->create;
$window->map;
-sleep(0.25);
+sleep 0.25;
($absolute, $top) = $window->rect;
-ok($absolute->{width} == 80, "i3 let the width at 80");
-ok($absolute->{height} == 90, "i3 let the height at 90");
+cmp_ok($absolute->{width}, '==', 80, "i3 let the width at 80");
+cmp_ok($absolute->{height}, '==', 92, "i3 let the height at 90");
+
+# We need to compare the position with decorations due to the way
+# we do decoration rendering (on the parent frame) in the tree branch
+cmp_ok($top->{x}, '==', 1, 'i3 mapped it to x=1');
+cmp_ok($top->{y}, '==', 19, 'i3 mapped it to y=18');
-ok($top->{x} == 1 && $top->{y} == 1, "i3 mapped it to (1,1)");
+$window->unmap;
-diag( "Testing i3, Perl $], $^X" );
+done_testing;