2019-06-02 07:10:03 +03:00
|
|
|
require_relative 'helper'
|
|
|
|
|
|
|
|
class Reline::MacroTest < Reline::TestCase
|
|
|
|
def setup
|
2021-06-21 16:06:33 +03:00
|
|
|
Reline.send(:test_mode)
|
2019-06-02 07:10:03 +03:00
|
|
|
@config = Reline::Config.new
|
2023-07-07 20:27:14 +03:00
|
|
|
@encoding = Reline.core.encoding
|
2024-10-22 17:43:12 +03:00
|
|
|
@line_editor = Reline::LineEditor.new(@config)
|
2019-06-02 21:38:39 +03:00
|
|
|
@output = @line_editor.output = File.open(IO::NULL, "w")
|
|
|
|
end
|
|
|
|
|
|
|
|
def teardown
|
|
|
|
@output.close
|
2021-06-21 16:06:33 +03:00
|
|
|
Reline.test_reset
|
2019-06-02 07:10:03 +03:00
|
|
|
end
|
|
|
|
|
|
|
|
def input_key(char, combined_char = char, with_meta = false)
|
|
|
|
@line_editor.input_key(Reline::Key.new(char, combined_char, with_meta))
|
|
|
|
end
|
|
|
|
|
|
|
|
def input(str)
|
|
|
|
str.each_byte {|c| input_key(c)}
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_simple_input
|
|
|
|
input('abc')
|
|
|
|
assert_equal 'abc', @line_editor.line
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_alias
|
|
|
|
class << @line_editor
|
|
|
|
alias delete_char ed_delete_prev_char
|
|
|
|
end
|
|
|
|
input('abc')
|
|
|
|
assert_nothing_raised(ArgumentError) {
|
|
|
|
input_key(:delete_char)
|
|
|
|
}
|
|
|
|
assert_equal 'ab', @line_editor.line
|
|
|
|
end
|
|
|
|
end
|