t/319-gaps.t: also test the gaps command

This commit is contained in:
Michael Stapelberg 2022-10-31 22:12:23 +01:00 committed by Michael Stapelberg
parent 3f400b8ad0
commit 4d0323fa9e

View File

@ -37,28 +37,93 @@ my $screen_height = 800;
my $outer_gaps = 20;
my $inner_gaps = 10;
my $total_gaps = $outer_gaps + $inner_gaps;
my $left_rect = $left->rect;
my $right_rect = $right->rect;
# Gaps toward one screen edge, each window covers half of the screen,
# each gets half of the inner gaps.
my $expected_width = ($screen_width / 2) - $total_gaps - ($inner_gaps / 2);
sub is_gaps {
my $left_rect = $left->rect;
my $right_rect = $right->rect;
# Gaps toward the screen edges at top and bottom.
my $expected_height = $screen_height - 2 * $total_gaps;
# Gaps toward one screen edge, each window covers half of the screen,
# each gets half of the inner gaps.
my $expected_width = ($screen_width / 2) - $total_gaps - ($inner_gaps / 2);
is_deeply($left_rect, {
x => $total_gaps,
y => $total_gaps,
width => $expected_width,
height => $expected_height,
}, 'left window position and size matches gaps expectations');
# Gaps toward the screen edges at top and bottom.
my $expected_height = $screen_height - 2 * $total_gaps;
is_deeply($right_rect, {
x => $left_rect->x + $left_rect->width + $inner_gaps,
y => $total_gaps,
width => $expected_width,
height => $expected_height,
}, 'right window position and size matches gaps expectations');
is_deeply($left_rect, {
x => $total_gaps,
y => $total_gaps,
width => $expected_width,
height => $expected_height,
}, 'left window position and size matches gaps expectations');
is_deeply($right_rect, {
x => $left_rect->x + $left_rect->width + $inner_gaps,
y => $total_gaps,
width => $expected_width,
height => $expected_height,
}, 'right window position and size matches gaps expectations');
}
is_gaps();
################################################################################
# gaps command
################################################################################
# Verify gaps on a different workspace do not influence the existing workspace
fresh_workspace;
cmd 'gaps outer current set 30px';
cmd "workspace $tmp";
sync_with_i3;
is_gaps();
# Verify global gaps do influence all workspaces
cmd 'gaps outer all set 30px';
sync_with_i3;
$outer_gaps = 30;
$total_gaps = $outer_gaps + $inner_gaps;
is_gaps();
# Verify negative outer gaps compensate inner gaps, resulting only in gaps
# in between adjacent windows or split containers, not towards the screen edges.
cmd 'gaps outer all set -10px';
sync_with_i3;
sub is_gaps_in_between_only {
my $left_rect = $left->rect;
my $right_rect = $right->rect;
# No gaps towards the screen edges, each window covers half of the screen,
# each gets half of the inner gaps.
my $expected_width = ($screen_width / 2) - ($inner_gaps / 2);
# No gaps towards the screen edges at top and bottom.
my $expected_height = $screen_height;
is_deeply($left_rect, {
x => 0,
y => 0,
width => $expected_width,
height => $expected_height,
}, 'left window position and size matches gaps expectations');
is_deeply($right_rect, {
x => $left_rect->x + $left_rect->width + $inner_gaps,
y => 0,
width => $expected_width,
height => $expected_height,
}, 'right window position and size matches gaps expectations');
}
is_gaps_in_between_only();
# Reduce the inner gaps and verify the outer gaps are adjusted to not
# over-compensate.
cmd 'gaps inner all set 6px';
$inner_gaps = 6;
$total_gaps = $outer_gaps + $inner_gaps;
sync_with_i3;
is_gaps_in_between_only();
done_testing;