Skip to content
This repository has been archived by the owner on Apr 18, 2023. It is now read-only.

Commit

Permalink
parser: reorder v/h/vertical/horizontal
Browse files Browse the repository at this point in the history
This eliminates an error message upon split horizontal which did not
occur in older i3 versions. The command itself worked just fine.
  • Loading branch information
stapelberg committed Jun 10, 2012
1 parent 807d228 commit f0b56c5
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 30 deletions.
2 changes: 1 addition & 1 deletion parser-specs/commands.spec
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ state FULLSCREEN:

# split v|h|vertical|horizontal
state SPLIT:
direction = 'v', 'h', 'vertical', 'horizontal'
direction = 'horizontal', 'vertical', 'v', 'h'
-> call cmd_split($direction)

# floating enable|disable|toggle
Expand Down
68 changes: 39 additions & 29 deletions testcases/t/122-split.t
Original file line number Diff line number Diff line change
Expand Up @@ -5,45 +5,55 @@
#
use i3test;

my $tmp = fresh_workspace;
my $tmp;
my $ws;

my $ws = get_ws($tmp);
is($ws->{orientation}, 'horizontal', 'orientation horizontal by default');
cmd 'split v';
$ws = get_ws($tmp);
is($ws->{orientation}, 'vertical', 'split v changes workspace orientation');

######################################################################
################################################################################
# Open two containers, split, open another container. Then verify
# the layout is like we expect it to be
######################################################################
cmd 'open';
cmd 'open';
my $content = get_ws_content($tmp);
################################################################################

is(@{$content}, 2, 'two containers on workspace level');
my $first = $content->[0];
my $second = $content->[1];
sub verify_split_layout {
my (%args) = @_;

is(@{$first->{nodes}}, 0, 'first container has no children');
is(@{$second->{nodes}}, 0, 'second container has no children (yet)');
my $old_name = $second->{name};
$tmp = fresh_workspace;

$ws = get_ws($tmp);
is($ws->{orientation}, 'horizontal', 'orientation horizontal by default');
cmd 'split v';
$ws = get_ws($tmp);
is($ws->{orientation}, 'vertical', 'split v changes workspace orientation');

cmd 'split h';
cmd 'open';
cmd 'open';
cmd 'open';
my $content = get_ws_content($tmp);

is(@{$content}, 2, 'two containers on workspace level');
my $first = $content->[0];
my $second = $content->[1];

$content = get_ws_content($tmp);
is(@{$first->{nodes}}, 0, 'first container has no children');
is(@{$second->{nodes}}, 0, 'second container has no children (yet)');
my $old_name = $second->{name};

is(@{$content}, 2, 'two containers on workspace level');
$first = $content->[0];
$second = $content->[1];
cmd $args{split_command};
cmd 'open';

$content = get_ws_content($tmp);

is(@{$content}, 2, 'two containers on workspace level');
$first = $content->[0];
$second = $content->[1];

is(@{$first->{nodes}}, 0, 'first container has no children');
isnt($second->{name}, $old_name, 'second container was replaced');
is($second->{orientation}, 'horizontal', 'orientation is horizontal');
is(@{$second->{nodes}}, 2, 'second container has 2 children');
is($second->{nodes}->[0]->{name}, $old_name, 'found old second container');
}

is(@{$first->{nodes}}, 0, 'first container has no children');
isnt($second->{name}, $old_name, 'second container was replaced');
is($second->{orientation}, 'horizontal', 'orientation is horizontal');
is(@{$second->{nodes}}, 2, 'second container has 2 children');
is($second->{nodes}->[0]->{name}, $old_name, 'found old second container');
verify_split_layout(split_command => 'split h');
verify_split_layout(split_command => 'split horizontal');

# TODO: extend this test-case (test next/prev)
# - wrapping (no horizontal switch possible, goes level-up)
Expand Down

0 comments on commit f0b56c5

Please sign in to comment.