diff options
author | Michael Stapelberg <michael@stapelberg.de> | 2022-10-31 22:12:23 +0100 |
---|---|---|
committer | Michael Stapelberg <stapelberg@users.noreply.github.com> | 2022-11-01 17:55:46 +0100 |
commit | 4d0323fa9e0f12f844678fcf43f95b46507cff3c (patch) | |
tree | ff972bd5bf7dffa2afd7db1cd3d9f05367a64370 | |
parent | 3f400b8ad05092780ff97b615fd975bb80c2362d (diff) | |
download | i3-4d0323fa9e0f12f844678fcf43f95b46507cff3c.tar.gz i3-4d0323fa9e0f12f844678fcf43f95b46507cff3c.zip |
t/319-gaps.t: also test the gaps command
-rw-r--r-- | testcases/t/319-gaps.t | 111 |
1 files changed, 88 insertions, 23 deletions
diff --git a/testcases/t/319-gaps.t b/testcases/t/319-gaps.t index a10f438d..66b2abee 100644 --- a/testcases/t/319-gaps.t +++ b/testcases/t/319-gaps.t @@ -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); - -# Gaps toward the screen edges at top and bottom. -my $expected_height = $screen_height - 2 * $total_gaps; - -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'); + +sub is_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); + + # Gaps toward the screen edges at top and bottom. + my $expected_height = $screen_height - 2 * $total_gaps; + + 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; |