From 13dfbcf7bf988922ed33e68456749b7179ab14bb Mon Sep 17 00:00:00 2001 From: tomoya ishida Date: Mon, 1 May 2023 21:20:09 +0900 Subject: [ruby/reline] Rewrite dialog rendering (https://github.com/ruby/reline/pull/492) * Rewrite dialog rendering * Fix failing test of dialog with small screen * Add multiple-dialog rendering test * Add description comments for each part of render_dialog_changes --- test/reline/test_line_editor.rb | 13 +++++++++++++ test/reline/yamatanooroti/test_rendering.rb | 23 ++++++++++++++++++++--- 2 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 test/reline/test_line_editor.rb (limited to 'test') diff --git a/test/reline/test_line_editor.rb b/test/reline/test_line_editor.rb new file mode 100644 index 0000000000..8399e76e92 --- /dev/null +++ b/test/reline/test_line_editor.rb @@ -0,0 +1,13 @@ +require_relative 'helper' +require 'reline/line_editor' + +class Reline::LineEditor::Test < Reline::TestCase + def test_range_subtract + dummy_config = nil + editor = Reline::LineEditor.new(dummy_config, 'ascii-8bit') + base_ranges = [3...5, 4...10, 6...8, 12...15, 15...20] + subtract_ranges = [5...7, 8...9, 11...13, 17...18, 18...19] + expected_result = [3...5, 7...8, 9...10, 13...17, 19...20] + assert_equal expected_result, editor.send(:range_subtract, base_ranges, subtract_ranges) + end +end diff --git a/test/reline/yamatanooroti/test_rendering.rb b/test/reline/yamatanooroti/test_rendering.rb index d34db1c14e..49d8ed406e 100644 --- a/test/reline/yamatanooroti/test_rendering.rb +++ b/test/reline/yamatanooroti/test_rendering.rb @@ -1138,6 +1138,23 @@ begin EOC end + def test_rerender_multiple_dialog + start_terminal(20, 60, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --autocomplete --dialog simple}, startup_message: 'Multiline REPL.') + write("if\n abcdef\n 123456\n 456789\nend\C-p\C-p\C-p\C-p Str") + write("\t") + close + assert_screen(<<~'EOC') + Multiline REPL. + prompt> if String + prompt> aStringRuby is... + prompt> 1StructA dynamic, open source programming + prompt> 456789 language with a focus on simplicity + prompt> end and productivity. It has an elegant + syntax that is natural to read and + easy to write. + EOC + end + def test_autocomplete_long_with_scrollbar start_terminal(20, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --autocomplete-long}, startup_message: 'Multiline REPL.') write('S') @@ -1343,11 +1360,11 @@ begin prompt> prompt> prompt> - prompt> S prompt> String prompt> Struct - prompt> enSymbol - ScriptError + prompt> Symbol + prompt> enScriptError + SyntaxError Signal EOC end -- cgit v1.2.1