aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authoraycabta <aycabta@gmail.com>2020-10-10 03:00:04 +0900
committeraycabta <aycabta@gmail.com>2020-12-05 02:58:58 +0900
commitda59f6517865189281986edf9ffbf4f356c1b021 (patch)
tree954b432b8b6539d0bcdb1ea1dbacd8c2ad3041ed /test
parentdd87d639e9ce71be474a9a5eb014875c88e2ae6b (diff)
downloadruby-da59f6517865189281986edf9ffbf4f356c1b021.tar.gz
[ruby/reline] Add tests about complicated rendering
https://github.com/ruby/reline/commit/f4683b72eb
Diffstat (limited to 'test')
-rw-r--r--test/reline/yamatanooroti/test_rendering.rb135
1 files changed, 135 insertions, 0 deletions
diff --git a/test/reline/yamatanooroti/test_rendering.rb b/test/reline/yamatanooroti/test_rendering.rb
index 87af9c5155..222871f2eb 100644
--- a/test/reline/yamatanooroti/test_rendering.rb
+++ b/test/reline/yamatanooroti/test_rendering.rb
@@ -225,6 +225,141 @@ begin
EOC
end
+ def test_multiline_and_autowrap
+ start_terminal(10, 15, %W{ruby -I#{@pwd}/lib #{@pwd}/bin/multiline_repl}, startup_message: 'Multiline REPL.')
+ write("def aaaaaa\n 33333333\n end\C-a\C-pputs\C-e\e\C-m88888888888")
+ close
+ assert_screen(<<~EOC)
+ Multiline REPL.
+ prompt> def aaa
+ aaa
+ prompt> puts 3
+ 3333333
+ prompt> 8888888
+ 8888
+ prompt>
+ end
+ EOC
+ end
+
+ def test_clear
+ start_terminal(10, 15, %W{ruby -I#{@pwd}/lib #{@pwd}/bin/multiline_repl}, startup_message: 'Multiline REPL.')
+ write("3\C-l")
+ close
+ assert_screen(<<~EOC)
+ prompt> 3
+ EOC
+ end
+
+ def test_clear_multiline_and_autowrap
+ omit # FIXME clear logic is buggy
+ start_terminal(10, 15, %W{ruby -I#{@pwd}/lib #{@pwd}/bin/multiline_repl}, startup_message: 'Multiline REPL.')
+ write("def aaaaaa\n 3\n\C-lend")
+ close
+ assert_screen(<<~EOC)
+ prompt> def aaa
+ aaa
+ prompt> 3
+ prompt> end
+ EOC
+ end
+
+ def test_nearest_cursor
+ start_terminal(10, 20, %W{ruby -I#{@pwd}/lib #{@pwd}/bin/multiline_repl}, startup_message: 'Multiline REPL.')
+ write("def ああ\n :いい\nend\C-pbb\C-pcc")
+ close
+ assert_screen(<<~EOC)
+ Multiline REPL.
+ prompt> def ccああ
+ prompt> :bbいい
+ prompt> end
+ EOC
+ end
+
+ def test_delete_line
+ start_terminal(10, 20, %W{ruby -I#{@pwd}/lib #{@pwd}/bin/multiline_repl}, startup_message: 'Multiline REPL.')
+ write("def a\n\nend\C-p\C-h")
+ close
+ assert_screen(<<~EOC)
+ Multiline REPL.
+ prompt> def a
+ prompt> end
+ EOC
+ end
+
+ def test_last_line_of_screen
+ start_terminal(5, 20, %W{ruby -I#{@pwd}/lib #{@pwd}/bin/multiline_repl}, startup_message: 'Multiline REPL.')
+ write("\n\n\n\n\ndef a\nend")
+ close
+ assert_screen(<<~EOC)
+ prompt>
+ prompt>
+ prompt>
+ prompt> def a
+ prompt> end
+ EOC
+ end
+
+ # c17a09b7454352e2aff5a7d8722e80afb73e454b
+ def test_autowrap_at_last_line_of_screen
+ start_terminal(5, 15, %W{ruby -I#{@pwd}/lib #{@pwd}/bin/multiline_repl}, startup_message: 'Multiline REPL.')
+ write("def a\nend\n\C-p")
+ close
+ assert_screen(<<~EOC)
+ prompt> def a
+ prompt> end
+ => :a
+ prompt> def a
+ prompt> end
+ EOC
+ end
+
+ # f002483b27cdb325c5edf9e0fe4fa4e1c71c4b0e
+ def test_insert_line_in_the_middle_of_line
+ start_terminal(5, 15, %W{ruby -I#{@pwd}/lib #{@pwd}/bin/multiline_repl}, startup_message: 'Multiline REPL.')
+ write("333\C-b\C-b\e\C-m8")
+ close
+ assert_screen(<<~EOC)
+ Multiline REPL.
+ prompt> 3
+ prompt> 833
+ EOC
+ end
+
+ # 9d8978961c5de5064f949d56d7e0286df9e18f43
+ def test_insert_line_in_the_middle_of_line_at_last_line_of_screen
+ start_terminal(3, 15, %W{ruby -I#{@pwd}/lib #{@pwd}/bin/multiline_repl}, startup_message: 'Multiline REPL.')
+ write("3333333333\C-a\C-f\e\C-m")
+ close
+ assert_screen(<<~EOC)
+ prompt> 3
+ prompt> 3333333
+ 33
+ EOC
+ end
+
+ def test_insert_after_clear
+ start_terminal(10, 20, %W{ruby -I#{@pwd}/lib #{@pwd}/bin/multiline_repl}, startup_message: 'Multiline REPL.')
+ write("def a\n 01234\nend\C-l\C-p5678")
+ close
+ assert_screen(<<~EOC)
+ prompt> def a
+ prompt> 056781234
+ prompt> end
+ EOC
+ end
+
+ def test_multiline_incremental_search
+ start_terminal(5, 20, %W{ruby -I#{@pwd}/lib #{@pwd}/bin/multiline_repl}, startup_message: 'Multiline REPL.')
+ write("def a\n 8\nend\ndef b\n 3\nend\C-s8")
+ close
+ assert_screen(<<~EOC)
+ (i-search)`8'def a
+ (i-search)`8' 8
+ (i-search)`8'end
+ EOC
+ end
+
private def write_inputrc(content)
File.open(@inputrc_file, 'w') do |f|
f.write content