i3/testcases/t/117-workspace.t
Maik Fischer da403b3667 testcases: use $x in wait_for_(un)map change to wait_for_(un)map($win)
wait_for_unmap currently ignores its $window parameter, since
X11::XCB doesn't provide $event->{window} for unmap events yet.
2011-11-21 23:50:58 +00:00

121 lines
3.5 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
#
# Tests whether we can switch to a non-existant workspace
# (necessary for further tests)
#
use List::Util qw(first);
use i3test;
# to ensure that workspace 1 stays open
cmd 'open';
my $tmp = fresh_workspace;
ok(workspace_exists($tmp), 'workspace created');
# if the workspace could not be created, we cannot run any other test
# (every test starts by creating its workspace)
if (!workspace_exists($tmp)) {
BAIL_OUT('Cannot create workspace, further tests make no sense');
}
my $otmp = fresh_workspace;
diag("Other temporary workspace name: $otmp\n");
# As the old workspace was empty, it should get
# cleaned up as we switch away from it
cmd "workspace $otmp";
ok(!workspace_exists($tmp), 'old workspace cleaned up');
# Switch to the same workspace again to make sure it doesnt get cleaned up
cmd "workspace $otmp";
cmd "workspace $otmp";
ok(workspace_exists($otmp), 'other workspace still exists');
#####################################################################
# check if the workspace next / prev commands work
#####################################################################
cmd 'workspace next';
ok(!workspace_exists('next'), 'workspace "next" does not exist');
cmd "workspace $tmp";
cmd 'open';
ok(workspace_exists($tmp), 'workspace created');
cmd "workspace $otmp";
cmd 'open';
ok(workspace_exists($tmp), 'workspace tmp still exists');
ok(workspace_exists($otmp), 'workspace otmp created');
is(focused_ws(), $otmp, 'focused workspace is otmp');
cmd 'workspace prev';
is(focused_ws(), $tmp, 'focused workspace is tmp after workspace prev');
cmd 'workspace next';
is(focused_ws(), $otmp, 'focused workspace is otmp after workspace next');
#####################################################################
# check that wrapping works
#####################################################################
cmd 'workspace next';
is(focused_ws(), '1', 'focused workspace is 1 after workspace next');
cmd 'workspace next';
is(focused_ws(), $tmp, 'focused workspace is tmp after workspace next');
cmd 'workspace next';
is(focused_ws(), $otmp, 'focused workspace is otmp after workspace next');
cmd 'workspace prev';
is(focused_ws(), $tmp, 'focused workspace is tmp after workspace prev');
cmd 'workspace prev';
is(focused_ws(), '1', 'focused workspace is tmp after workspace prev');
cmd 'workspace prev';
is(focused_ws(), $otmp, 'focused workspace is otmp after workspace prev');
#####################################################################
# check if we can change to "next" / "prev"
#####################################################################
cmd 'workspace "next"';
ok(workspace_exists('next'), 'workspace "next" exists');
is(focused_ws(), 'next', 'now on workspace next');
cmd 'workspace "prev"';
ok(workspace_exists('prev'), 'workspace "prev" exists');
is(focused_ws(), 'prev', 'now on workspace prev');
#####################################################################
# check that the numbers are assigned/recognized correctly
#####################################################################
cmd "workspace 3: $tmp";
my $ws = get_ws("3: $tmp");
ok(defined($ws), "workspace 3: $tmp was created");
is($ws->{num}, 3, 'workspace number is 3');
cmd "workspace 0: $tmp";
$ws = get_ws("0: $tmp");
ok(defined($ws), "workspace 0: $tmp was created");
is($ws->{num}, 0, 'workspace number is 0');
cmd "workspace aa: $tmp";
$ws = get_ws("aa: $tmp");
ok(defined($ws), "workspace aa: $tmp was created");
is($ws->{num}, -1, 'workspace number is -1');
done_testing;