summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authoraycabta <aycabta@gmail.com>2021-09-10 04:58:35 +0900
committergit <svn-admin@ruby-lang.org>2021-09-10 09:04:47 +0900
commitc25511ef46c047e970e45e363288e8c005284c31 (patch)
tree927e02297b30d0085241a8afafc6199aa90b3a84 /test
parentc94735fa240eae853265900876bbe67d9b9655d6 (diff)
[ruby/reline] Add a test for dialog with scroll key
https://github.com/ruby/reline/commit/99640abf75
Diffstat (limited to 'test')
-rwxr-xr-xtest/reline/yamatanooroti/multiline_repl51
-rw-r--r--test/reline/yamatanooroti/test_rendering.rb17
2 files changed, 56 insertions, 12 deletions
diff --git a/test/reline/yamatanooroti/multiline_repl b/test/reline/yamatanooroti/multiline_repl
index f3a1097dd8..1346a83adb 100755
--- a/test/reline/yamatanooroti/multiline_repl
+++ b/test/reline/yamatanooroti/multiline_repl
@@ -30,18 +30,47 @@ opt.on('--dynamic-prompt-returns-empty') {
opt.on('--auto-indent') {
AutoIndent.new
}
-opt.on('--simple-dialog') {
+opt.on('--dialog VAL') { |v|
Reline.add_dialog_proc(:simple_dialog, lambda {
- contents = <<~RUBY.split("\n")
- Ruby is...
- A dynamic, open source programming
- language with a focus on simplicity
- and productivity. It has an elegant
- syntax that is natural to read and
- easy to write.
- RUBY
- Reline::DialogRenderInfo.new(pos: cursor_pos, contents: contents)
- })
+ if v.include?('simple')
+ contents = <<~RUBY.split("\n")
+ Ruby is...
+ A dynamic, open source programming
+ language with a focus on simplicity
+ and productivity. It has an elegant
+ syntax that is natural to read and
+ easy to write.
+ RUBY
+ elsif v.include?('long')
+ contents = <<~RUBY.split("\n")
+ Ruby is...
+ A dynamic, open
+ source programming
+ language with a
+ focus on simplicity
+ and productivity.
+ It has an elegant
+ syntax that is
+ natural to read
+ and easy to write.
+ RUBY
+ end
+ if v.include?('scrollkey')
+ dialog.trap_key = nil
+ if key and key.match?(dialog.name)
+ if context.pointer.nil?
+ context.pointer = 0
+ elsif context.first > dialog.contents.size
+ context.pointer = 0
+ else
+ context.pointer += 1
+ end
+ end
+ dialog.trap_key = [?j.ord]
+ height = 4
+ end
+ Reline::DialogRenderInfo.new(pos: cursor_pos, contents: contents, height: height, pointer: context.pointer)
+ }, Struct.new(:pointer).new)
}
opt.on('--complete') {
Reline.completion_proc = lambda { |target, preposing = nil, postposing = nil|
diff --git a/test/reline/yamatanooroti/test_rendering.rb b/test/reline/yamatanooroti/test_rendering.rb
index cd401e2f73..278850a7c5 100644
--- a/test/reline/yamatanooroti/test_rendering.rb
+++ b/test/reline/yamatanooroti/test_rendering.rb
@@ -836,7 +836,7 @@ begin
end
def test_simple_dialog
- start_terminal(20, 50, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --simple-dialog}, startup_message: 'Multiline REPL.')
+ start_terminal(20, 50, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --dialog simple}, startup_message: 'Multiline REPL.')
write('a')
write('b')
write('c')
@@ -854,6 +854,21 @@ begin
EOC
end
+ def test_simple_dialog_with_scroll_key
+ start_terminal(20, 50, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --dialog long,scrollkey}, startup_message: 'Multiline REPL.')
+ write('a')
+ 5.times{ write('j') }
+ close
+ assert_screen(<<~'EOC')
+ Multiline REPL.
+ prompt> a
+ A dynamic, open
+ source programming
+ language with a
+ focus on simplicity
+ EOC
+ end
+
def test_autocomplete
start_terminal(20, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl --autocomplete}, startup_message: 'Multiline REPL.')
write("Stri")