summaryrefslogtreecommitdiff
path: root/test/acceptance/acceptance_test.rb
diff options
context:
space:
mode:
authorJohn Hawthorn <john.hawthorn@gmail.com>2016-12-30 18:13:06 -0800
committerJohn Hawthorn <john.hawthorn@gmail.com>2016-12-30 18:13:18 -0800
commit30aa7ea94288ceaf4f2ef8a73bcfdcc5dae452b6 (patch)
tree97d78acc35adcdd969a3f952e32644838454cc47 /test/acceptance/acceptance_test.rb
parentc373470cbb72af3f1432f01c255c7ce69eb04aee (diff)
Rename acceptance test
Diffstat (limited to 'test/acceptance/acceptance_test.rb')
-rw-r--r--test/acceptance/acceptance_test.rb177
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