aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stapelberg <michael@stapelberg.de>2022-10-31 22:12:23 +0100
committerMichael Stapelberg <stapelberg@users.noreply.github.com>2022-11-01 17:55:46 +0100
commit4d0323fa9e0f12f844678fcf43f95b46507cff3c (patch)
treeff972bd5bf7dffa2afd7db1cd3d9f05367a64370
parent3f400b8ad05092780ff97b615fd975bb80c2362d (diff)
downloadi3-4d0323fa9e0f12f844678fcf43f95b46507cff3c.tar.gz
i3-4d0323fa9e0f12f844678fcf43f95b46507cff3c.zip
t/319-gaps.t: also test the gaps command
-rw-r--r--testcases/t/319-gaps.t111
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;