]> git.sur5r.net Git - i3/i3/blobdiff - testcases/t/210-mark-unmark.t
Update ewmh focused only when new focus is different (#3496)
[i3/i3] / testcases / t / 210-mark-unmark.t
index 0083547fa2fde727e09a5285bcafa705fa9d5fd5..32f898e6d567d22d6437c030b24cbf9d7125b866 100644 (file)
@@ -2,13 +2,13 @@
 # vim:ts=4:sw=4:expandtab
 #
 # Please read the following documents before working on tests:
-# • http://build.i3wm.org/docs/testsuite.html
+# • https://build.i3wm.org/docs/testsuite.html
 #   (or docs/testsuite)
 #
-# • http://build.i3wm.org/docs/lib-i3test.html
+# • https://build.i3wm.org/docs/lib-i3test.html
 #   (alternatively: perldoc ./testcases/lib/i3test.pm)
 #
-# • http://build.i3wm.org/docs/ipc.html
+# • https://build.i3wm.org/docs/ipc.html
 #   (or docs/ipc)
 #
 # • http://onyxneon.com/books/modern_perl/modern_perl_a4.pdf
@@ -18,6 +18,8 @@
 use i3test;
 use List::Util qw(first);
 
+my ($con, $first, $second);
+
 sub get_marks {
     return i3(get_socket_path())->get_marks->recv;
 }
@@ -26,7 +28,7 @@ sub get_mark_for_window_on_workspace {
     my ($ws, $con) = @_;
 
     my $current = first { $_->{window} == $con->{id} } @{get_ws_content($ws)};
-    return $current->{mark};
+    return $current->{marks};
 }
 
 ##############################################################
@@ -39,7 +41,6 @@ cmd 'split h';
 
 is_deeply(get_marks(), [], 'no marks set yet');
 
-
 ##############################################################
 # 2: mark a con, check that it's marked, unmark it, check that
 ##############################################################
@@ -89,21 +90,21 @@ is_deeply(get_marks(), [], 'all marks removed');
 #    check that only the latter is marked
 ##############################################################
 
-my $first = open_window;
-my $second = open_window;
+$first = open_window;
+$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');
+is_deeply(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;
+$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');
@@ -112,33 +113,50 @@ ok(!get_mark_for_window_on_workspace($tmp, $con), 'container no longer has the m
 # 6: toggle a mark on an unmarked con, check it is marked
 ##############################################################
 
-my $con = open_window;
+$con = open_window;
 cmd 'mark --toggle important';
-is(get_mark_for_window_on_workspace($tmp, $con), 'important', 'container now has the mark');
+is_deeply(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;
+$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');
+cmd 'mark --replace --toggle important';
+is_deeply(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;
+$first = open_window;
+$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');
+is_deeply(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');
 
+##############################################################
+# 9: try to mark two cons with the same mark and check that
+#    it fails
+##############################################################
+
+$first = open_window(wm_class => 'iamnotunique');
+$second = open_window(wm_class => 'iamnotunique');
+
+my $result = cmd "[instance=iamnotunique] mark important";
+
+is($result->[0]->{success}, 0, 'command was unsuccessful');
+is($result->[0]->{error}, 'A mark must not be put onto more than one window', 'correct error is returned');
+ok(!get_mark_for_window_on_workspace($tmp, $first), 'first container is not marked');
+ok(!get_mark_for_window_on_workspace($tmp, $second), 'second containr is not marked');
+
+##############################################################
+
 done_testing;