diff options
-rwxr-xr-x | test/feh.i | 61 |
1 files changed, 59 insertions, 2 deletions
@@ -3,24 +3,43 @@ use strict; use warnings; use 5.010; -use Test::More tests => 3; +use Test::More tests => 12; use X11::GUITest qw/ FindWindowLike + GetWindowName StartApp SendKeys WaitWindowViewable /; +my $win; + sub feh_start { my ($opts, $files) = @_; + my $id; $opts //= q{}; $files //= 'test/ok.png'; StartApp("feh ${opts} ${files}"); - if (WaitWindowViewable(qr{^feh}) == 0) { + ($id) = WaitWindowViewable(qr{^feh}); + + if (not $id) { BAIL_OUT("Unable to start feh ${opts} ${files}"); } + + return $id; +} + +sub feh_stop { + SendKeys('{ESC}'); + for (1 .. 10) { + sleep(0.1); + if (FindWindowLike(qr{^feh}) == 0) { + return; + } + } + BAIL_OUT("Unclosed feh window still open, cannot continue"); } sub test_no_win { @@ -37,6 +56,23 @@ sub test_no_win { BAIL_OUT("unclosed window still open, cannot continue"); } +sub test_win_title { + my ($win, $wtitle) = @_; + my $rtitle; + + for (1 .. 10) { + sleep(0.1); + $rtitle = GetWindowName($win); + if ($rtitle eq $wtitle) { + pass("Window has title: $wtitle"); + return; + } + } + fail("Window has title: $wtitle"); + diag("expected: $wtitle"); + diag(" got: $rtitle"); +} + if (FindWindowLike(qr{^feh})) { BAIL_OUT('It appears you have an open feh window. Please close it.'); } @@ -46,3 +82,24 @@ for my $key (qw/q x {ESC}/) { SendKeys($key); test_no_win("$key pressed"); } + +$win = feh_start(q{}, 'test/ok.png'); +test_win_title($win, 'feh [1 of 1] - test/ok.png'); +feh_stop(); + +$win = feh_start(q{}, 'test/ok.png test/ok.jpg test/ok.gif'); +test_win_title($win, 'feh [1 of 3] - test/ok.png'); +SendKeys('{RIG}'); +test_win_title($win, 'feh [2 of 3] - test/ok.jpg'); +SendKeys('{RIG}'); +test_win_title($win, 'feh [3 of 3] - test/ok.gif'); +SendKeys('{RIG}'); +test_win_title($win, 'feh [1 of 3] - test/ok.png'); +SendKeys('{LEF}'); +test_win_title($win, 'feh [3 of 3] - test/ok.gif'); +SendKeys('{DEL}'); +test_win_title($win, 'feh [1 of 2] - test/ok.png'); +SendKeys('{DEL}'); +test_win_title($win, 'feh [1 of 1] - test/ok.jpg'); +SendKeys('{DEL}'); +test_no_win("Removed all images from slideshow"); |