From: Michael Stapelberg Date: Fri, 16 Apr 2010 21:04:42 +0000 (+0200) Subject: add test for the match functionality in the new parser X-Git-Tag: tree-pr1~247 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=50d590df28d602deebf143b0948ecf133d007e02;p=i3%2Fi3 add test for the match functionality in the new parser --- diff --git a/testcases/t/19-match.t b/testcases/t/19-match.t new file mode 100644 index 00000000..9babb074 --- /dev/null +++ b/testcases/t/19-match.t @@ -0,0 +1,63 @@ +#!perl +# vim:ts=4:sw=4:expandtab +# +# Tests all kinds of matching methods +# +use Test::More tests => 4; +use Data::Dumper; +use FindBin; +use lib "$FindBin::Bin/lib"; +use i3test; +use AnyEvent::I3; +use X11::XCB qw(:all); +use v5.10; + +my $i3 = i3("/tmp/nestedcons"); + +my $tmp = get_unused_workspace(); +$i3->command("workspace $tmp")->recv; + +ok(@{get_ws_content($tmp)} == 0, 'no containers yet'); + +# Open a new window +my $x = X11::XCB::Connection->new; +my $window = $x->root->create_child( + class => WINDOW_CLASS_INPUT_OUTPUT, + rect => [ 0, 0, 30, 30 ], + background_color => '#C0C0C0', +); + +$window->map; +# give it some time to be picked up by the window manager +# TODO: better check for $window->mapped or something like that? +# maybe we can even wait for getting mapped? +my $c = 0; +while (@{get_ws_content($tmp)} == 0 and $c++ < 5) { + sleep 0.25; +} +my $content = get_ws_content($tmp); +ok(@{$content} == 1, 'window mapped'); +my $win = $content->[0]; + +###################################################################### +# first test that matches which should not match this window really do +# not match it +###################################################################### +# TODO: use PCRE expressions +# TODO: specify more match types +$i3->command(q|[class="*"] kill|)->recv; +$i3->command(q|[con_id="99999"] kill|)->recv; + +$content = get_ws_content($tmp); +ok(@{$content} == 1, 'window still there'); + +# now kill the window +my $id = $win->{id}; +$i3->command(qq|[con_id="$id"] kill|)->recv; + +$content = get_ws_content($tmp); +ok(@{$content} == 0, 'window killed'); + +# TODO: same test, but with pcre expressions + +diag( "Testing i3, Perl $], $^X" );