]> git.sur5r.net Git - i3/i3/blob - testcases/t/502-focus-output.t
tests: warp the pointer to in multi-monitor tests to avoid flaky tests
[i3/i3] / testcases / t / 502-focus-output.t
1 #!perl
2 # vim:ts=4:sw=4:expandtab
3 #
4 # Verifies the 'focus output' command works properly.
5
6 use i3test i3_autostart => 0;
7 use List::Util qw(first);
8
9 my $config = <<EOT;
10 # i3 config file (v4)
11 font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
12
13 fake-outputs 1024x768+0+0,1024x768+1024+0
14 EOT
15 my $pid = launch_with_config($config);
16
17 my $tmp = fresh_workspace;
18 my $i3 = i3(get_socket_path());
19
20 ################################################################################
21 # use 'focus output' and verify that focus gets changed appropriately
22 ################################################################################
23
24 sub focused_output {
25     my $tree = $i3->get_tree->recv;
26     my $focused = $tree->{focus}->[0];
27     my $output = first { $_->{id} == $focused } @{$tree->{nodes}};
28     return $output->{name};
29 }
30
31 $x->root->warp_pointer(0, 0);
32 sync_with_i3;
33
34 is(focused_output, 'fake-0', 'focus on first output');
35
36 cmd 'focus output right';
37 is(focused_output, 'fake-1', 'focus on second output');
38
39 # focus should wrap when we focus to the right again.
40 cmd 'focus output right';
41 is(focused_output, 'fake-0', 'focus on first output again');
42
43 cmd 'focus output left';
44 is(focused_output, 'fake-1', 'focus back on second output');
45
46 cmd 'focus output left';
47 is(focused_output, 'fake-0', 'focus on first output again');
48
49 cmd 'focus output up';
50 is(focused_output, 'fake-0', 'focus still on first output');
51
52 cmd 'focus output down';
53 is(focused_output, 'fake-0', 'focus still on first output');
54
55 cmd 'focus output fake-1';
56 is(focused_output, 'fake-1', 'focus on second output');
57
58 cmd 'focus output fake-0';
59 is(focused_output, 'fake-0', 'focus on first output');
60
61 exit_gracefully($pid);
62
63 done_testing;