diff options
author | John Hawthorn <john.hawthorn@gmail.com> | 2016-12-30 18:13:06 -0800 |
---|---|---|
committer | John Hawthorn <john.hawthorn@gmail.com> | 2016-12-30 18:13:18 -0800 |
commit | 30aa7ea94288ceaf4f2ef8a73bcfdcc5dae452b6 (patch) | |
tree | 97d78acc35adcdd969a3f952e32644838454cc47 /test/acceptance/acceptance_test.rb | |
parent | c373470cbb72af3f1432f01c255c7ce69eb04aee (diff) |
Rename acceptance test
Diffstat (limited to 'test/acceptance/acceptance_test.rb')
-rw-r--r-- | test/acceptance/acceptance_test.rb | 177 |
1 files changed, 177 insertions, 0 deletions
diff --git a/test/acceptance/acceptance_test.rb b/test/acceptance/acceptance_test.rb new file mode 100644 index 0000000..aed795d --- /dev/null +++ b/test/acceptance/acceptance_test.rb @@ -0,0 +1,177 @@ +require 'minitest' +require 'minitest/autorun' +require 'ttytest' + +class FzyTest < Minitest::Test + FZY_PATH = File.expand_path('../../../fzy', __FILE__) + + def setup + # fzy is fast. + # This is never hit in a (passing) test suite, but helps speed up development + TTYtest.default_max_wait_time = 0.2 + end + + def test_empty_list + @tty = TTYtest.new_terminal(%{echo placeholder;echo -n "" | #{FZY_PATH}}) + @tty.assert_cursor_position(y: 1, x: 2) + @tty.assert_matches <<~TTY + placeholder + > + TTY + + @tty.send_keys('t') + @tty.assert_cursor_position(y: 1, x: 3) + @tty.assert_matches <<~TTY + placeholder + > t + TTY + + @tty.send_keys('z') + @tty.assert_cursor_position(y: 1, x: 4) + @tty.assert_matches <<~TTY + placeholder + > tz + TTY + + @tty.send_keys("\r") + @tty.assert_cursor_position(y: 2, x: 0) + @tty.assert_matches <<~TTY + placeholder + tz + TTY + end + + def test_one_item + @tty = TTYtest.new_terminal(%{echo placeholder;echo -n "test" | #{FZY_PATH}}) + @tty.assert_matches <<~TTY + placeholder + > + test + TTY + @tty.assert_cursor_position(y: 1, x: 2) + + @tty.send_keys('t') + @tty.assert_cursor_position(y: 1, x: 3) + @tty.assert_matches <<~TTY + placeholder + > t + test + TTY + + @tty.send_keys('z') + @tty.assert_cursor_position(y: 1, x: 4) + @tty.assert_matches <<~TTY + placeholder + > tz + TTY + + @tty.send_keys("\r") + @tty.assert_cursor_position(y: 2, x: 0) + @tty.assert_matches <<~TTY + placeholder + tz + TTY + end + + def test_two_items + @tty = TTYtest.new_terminal(%{echo placeholder;echo -n "test\nfoo" | #{FZY_PATH}}) + @tty.assert_cursor_position(y: 1, x: 2) + @tty.assert_matches <<~TTY + placeholder + > + test + foo + TTY + + @tty.send_keys('t') + @tty.assert_cursor_position(y: 1, x: 3) + @tty.assert_matches <<~TTY + placeholder + > t + test + TTY + + @tty.send_keys('z') + @tty.assert_cursor_position(y: 1, x: 4) + @tty.assert_matches <<~TTY + placeholder + > tz + TTY + + @tty.send_keys("\r") + @tty.assert_matches <<~TTY + placeholder + tz + TTY + @tty.assert_cursor_position(y: 2, x: 0) + end + + def ctrl(key) + ((key.upcase.ord) - ('A'.ord) + 1).chr + end + + def test_editing + @tty = TTYtest.new_terminal(%{echo placeholder;echo -n "test\nfoo" | #{FZY_PATH}}) + @tty.assert_cursor_position(y: 1, x: 2) + @tty.assert_matches <<~TTY + placeholder + > + test + foo + TTY + + @tty.send_keys("foo bar baz") + @tty.assert_cursor_position(y: 1, x: 13) + @tty.assert_matches <<~TTY + placeholder + > foo bar baz + TTY + + @tty.send_keys(ctrl('H')) + @tty.assert_cursor_position(y: 1, x: 12) + @tty.assert_matches <<~TTY + placeholder + > foo bar ba + TTY + + @tty.send_keys(ctrl('W')) + @tty.assert_cursor_position(y: 1, x: 10) + @tty.assert_matches <<~TTY + placeholder + > foo bar + TTY + + @tty.send_keys(ctrl('U')) + @tty.assert_cursor_position(y: 1, x: 2) + @tty.assert_matches <<~TTY + placeholder + > + test + foo + TTY + end + + def test_ctrl_d + @tty = TTYtest.new_terminal(%{echo -n "foo\nbar" | #{FZY_PATH}}) + @tty.assert_matches ">\nfoo\nbar" + + @tty.send_keys('foo') + @tty.assert_matches "> foo\nfoo" + + @tty.send_keys(ctrl('D')) + @tty.assert_matches '' + @tty.assert_cursor_position(y: 0, x: 0) + end + + def test_ctrl_c + @tty = TTYtest.new_terminal(%{echo -n "foo\nbar" | #{FZY_PATH}}) + @tty.assert_matches ">\nfoo\nbar" + + @tty.send_keys('foo') + @tty.assert_matches "> foo\nfoo" + + @tty.send_keys(ctrl('C')) + @tty.assert_matches '' + @tty.assert_cursor_position(y: 0, x: 0) + end +end |