aboutsummaryrefslogtreecommitdiff
path: root/testcases
diff options
context:
space:
mode:
authorOrestis Floros <orestisflo@gmail.com>2024-01-31 08:14:32 +0100
committerGitHub <noreply@github.com>2024-01-31 08:14:32 +0100
commitf8befe378ab3c9f8d035657ca0247c9b8c242b6b (patch)
tree01529a5c9ca721d5c253f20edd5e601239fd9e3a /testcases
parent230147c81547848c83ac7764a6c1691f26f10e05 (diff)
downloadi3-f8befe378ab3c9f8d035657ca0247c9b8c242b6b.tar.gz
i3-f8befe378ab3c9f8d035657ca0247c9b8c242b6b.zip
Avoid creating redundant containers when switching between tabbed/stacked and split layouts (#5469)
Fixes #3001
Diffstat (limited to 'testcases')
-rw-r--r--testcases/t/550-split-redundant-containers.t82
1 files changed, 82 insertions, 0 deletions
diff --git a/testcases/t/550-split-redundant-containers.t b/testcases/t/550-split-redundant-containers.t
new file mode 100644
index 00000000..3dfef399
--- /dev/null
+++ b/testcases/t/550-split-redundant-containers.t
@@ -0,0 +1,82 @@
+#!perl
+# vim:ts=4:sw=4:expandtab
+#
+# Please read the following documents before working on tests:
+# • https://build.i3wm.org/docs/testsuite.html
+# (or docs/testsuite)
+#
+# • https://build.i3wm.org/docs/lib-i3test.html
+# (alternatively: perldoc ./testcases/lib/i3test.pm)
+#
+# • https://build.i3wm.org/docs/ipc.html
+# (or docs/ipc)
+#
+# • http://onyxneon.com/books/modern_perl/modern_perl_a4.pdf
+# (unless you are already familiar with Perl)
+#
+# Test that splitting and stacked/tabbed layouts do not create redundant
+# containers.
+# Ticket: #3001
+# Bug still in: 4.22-24-ga5da4d54
+use i3test;
+
+cmp_tree(
+ msg => 'toggling between split h/v',
+ layout_before => 'H[a*]',
+ layout_after => 'V[a*]',
+ cb => sub {
+ cmd 'split v, split h, split v';
+ });
+cmp_tree(
+ msg => 'toggling between tabbed/stacked',
+ layout_before => 'H[a*]',
+ layout_after => 'S[a*]',
+ cb => sub {
+ cmd 'layout tabbed, layout stacked';
+ });
+cmp_tree(
+ msg => 'split h to v and then tabbed',
+ layout_before => 'H[a*]',
+ layout_after => 'T[a*]',
+ cb => sub {
+ cmd 'split v, layout tabbed';
+ });
+cmp_tree(
+ msg => 'repeat tabbed layout',
+ layout_before => 'H[a*]',
+ layout_after => 'T[a*]',
+ cb => sub {
+ cmd 'layout tabbed' for 1..5;
+ });
+cmp_tree(
+ msg => 'split v inside tabbed',
+ layout_before => 'H[a*]',
+ layout_after => 'T[V[a*]]',
+ cb => sub {
+ cmd 'layout tabbed, split v';
+ });
+cmp_tree(
+ msg => 'split v inside tabbed and back to just tabbed',
+ layout_before => 'H[a*]',
+ layout_after => 'T[a*]',
+ cb => sub {
+ cmd 'layout tabbed, split v, layout tabbed';
+ });
+cmp_tree(
+ msg => 'toggle split v inside tabbed',
+ layout_before => 'H[a*]',
+ layout_after => 'T[V[a*]]',
+ cb => sub {
+ cmd 'layout tabbed, split v, layout tabbed, split v';
+ });
+cmp_tree(
+ msg => 'tabbed with 2 nodes inside other tabbed',
+ layout_before => 'T[a*]',
+ layout_after => 'T[T[a b*]]',
+ cb => sub {
+ cmd 'split v';
+ open_window(wm_class => "b", name => "b");
+ cmd 'layout tabbed';
+ });
+
+done_testing;