Added test cases for 'mark --toggle' (#1463)
This commit is contained in:
parent
47222ab261
commit
7a75cb7e0b
|
@ -1061,10 +1061,11 @@ void cmd_mark(I3_CMD, char *mark, char *toggle) {
|
|||
TAILQ_FOREACH(con, &all_cons, all_cons) {
|
||||
/* Skip matched windows, we took care of them already. */
|
||||
bool matched = false;
|
||||
TAILQ_FOREACH(current, &owindows, owindows)
|
||||
if (current->con == con) {
|
||||
matched = true;
|
||||
break;
|
||||
TAILQ_FOREACH(current, &owindows, owindows) {
|
||||
if (current->con == con) {
|
||||
matched = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (matched)
|
||||
continue;
|
||||
|
|
|
@ -16,11 +16,19 @@
|
|||
#
|
||||
# checks if mark and unmark work correctly
|
||||
use i3test;
|
||||
use List::Util qw(first);
|
||||
|
||||
sub get_marks {
|
||||
return i3(get_socket_path())->get_marks->recv;
|
||||
}
|
||||
|
||||
sub get_mark_for_window_on_workspace {
|
||||
my ($ws, $con) = @_;
|
||||
|
||||
my $current = first { $_->{window} == $con->{id} } @{get_ws_content($ws)};
|
||||
return $current->{mark};
|
||||
}
|
||||
|
||||
##############################################################
|
||||
# 1: check that there are no marks set yet
|
||||
##############################################################
|
||||
|
@ -76,4 +84,61 @@ cmd 'unmark';
|
|||
|
||||
is_deeply(get_marks(), [], 'all marks removed');
|
||||
|
||||
##############################################################
|
||||
# 4: mark a con, use same mark to mark another con,
|
||||
# check that only the latter is marked
|
||||
##############################################################
|
||||
|
||||
my $first = open_window;
|
||||
my $second = open_window;
|
||||
|
||||
cmd 'mark important';
|
||||
cmd 'focus left';
|
||||
cmd 'mark important';
|
||||
|
||||
is(get_mark_for_window_on_workspace($tmp, $first), 'important', 'first container now has the mark');
|
||||
ok(!get_mark_for_window_on_workspace($tmp, $second), 'second container lost the mark');
|
||||
|
||||
##############################################################
|
||||
# 5: mark a con, toggle the mark, check that the mark is gone
|
||||
##############################################################
|
||||
|
||||
my $con = open_window;
|
||||
cmd 'mark important';
|
||||
cmd 'mark --toggle important';
|
||||
ok(!get_mark_for_window_on_workspace($tmp, $con), 'container no longer has the mark');
|
||||
|
||||
##############################################################
|
||||
# 6: toggle a mark on an unmarked con, check it is marked
|
||||
##############################################################
|
||||
|
||||
my $con = open_window;
|
||||
cmd 'mark --toggle important';
|
||||
is(get_mark_for_window_on_workspace($tmp, $con), 'important', 'container now has the mark');
|
||||
|
||||
##############################################################
|
||||
# 7: mark a con, toggle a different mark, check it is marked
|
||||
# with the new mark
|
||||
##############################################################
|
||||
|
||||
my $con = open_window;
|
||||
cmd 'mark boring';
|
||||
cmd 'mark --toggle important';
|
||||
is(get_mark_for_window_on_workspace($tmp, $con), 'important', 'container has the most recent mark');
|
||||
|
||||
##############################################################
|
||||
# 8: mark a con, toggle the mark on another con,
|
||||
# check only the latter has the mark
|
||||
##############################################################
|
||||
|
||||
my $first = open_window;
|
||||
my $second = open_window;
|
||||
|
||||
cmd 'mark important';
|
||||
cmd 'focus left';
|
||||
cmd 'mark --toggle important';
|
||||
|
||||
is(get_mark_for_window_on_workspace($tmp, $first), 'important', 'left container has the mark now');
|
||||
ok(!get_mark_for_window_on_workspace($tmp, $second), 'second containr no longer has the mark');
|
||||
|
||||
done_testing;
|
||||
|
|
Loading…
Reference in New Issue