2019-07-16 08:26:30 -04:00
|
|
|
require_relative 'helper'
|
|
|
|
require "reline"
|
|
|
|
|
|
|
|
class Reline::Test < Reline::TestCase
|
|
|
|
def setup
|
|
|
|
end
|
|
|
|
|
|
|
|
def teardown
|
|
|
|
Reline.test_reset
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_completion_append_character
|
|
|
|
assert_equal(Reline.completion_append_character, nil)
|
|
|
|
|
|
|
|
Reline.completion_append_character = ""
|
|
|
|
assert_equal(Reline.completion_append_character, nil)
|
|
|
|
|
2019-08-18 03:07:20 -04:00
|
|
|
Reline.completion_append_character = "a".encode(Encoding::ASCII)
|
2019-07-16 08:26:30 -04:00
|
|
|
assert_equal(Reline.completion_append_character, "a")
|
|
|
|
assert_equal(Reline.completion_append_character.encoding, Encoding::default_external)
|
|
|
|
|
2019-08-18 03:07:20 -04:00
|
|
|
Reline.completion_append_character = "ba".encode(Encoding::ASCII)
|
2019-07-16 08:26:30 -04:00
|
|
|
assert_equal(Reline.completion_append_character, "b")
|
|
|
|
assert_equal(Reline.completion_append_character.encoding, Encoding::default_external)
|
|
|
|
|
2019-08-18 03:07:20 -04:00
|
|
|
Reline.completion_append_character = "cba".encode(Encoding::ASCII)
|
2019-07-16 08:26:30 -04:00
|
|
|
assert_equal(Reline.completion_append_character, "c")
|
|
|
|
assert_equal(Reline.completion_append_character.encoding, Encoding::default_external)
|
|
|
|
|
|
|
|
Reline.completion_append_character = nil
|
|
|
|
assert_equal(Reline.completion_append_character, nil)
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_basic_word_break_characters
|
|
|
|
assert_equal(Reline.basic_word_break_characters, " \t\n`><=;|&{(")
|
|
|
|
|
2019-08-18 03:07:20 -04:00
|
|
|
Reline.basic_word_break_characters = "[".encode(Encoding::ASCII)
|
2019-08-18 02:51:18 -04:00
|
|
|
assert_equal(Reline.basic_word_break_characters, "[")
|
2019-07-16 08:26:30 -04:00
|
|
|
assert_equal(Reline.basic_word_break_characters.encoding, Encoding::default_external)
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_completer_word_break_characters
|
|
|
|
assert_equal(Reline.completer_word_break_characters, " \t\n`><=;|&{(")
|
|
|
|
|
2019-08-18 03:07:20 -04:00
|
|
|
Reline.completer_word_break_characters = "[".encode(Encoding::ASCII)
|
2019-08-18 02:51:18 -04:00
|
|
|
assert_equal(Reline.completer_word_break_characters, "[")
|
2019-07-16 08:26:30 -04:00
|
|
|
assert_equal(Reline.completer_word_break_characters.encoding, Encoding::default_external)
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_basic_quote_characters
|
|
|
|
assert_equal(Reline.basic_quote_characters, '"\'')
|
|
|
|
|
2019-08-18 03:07:20 -04:00
|
|
|
Reline.basic_quote_characters = "`".encode(Encoding::ASCII)
|
2019-08-18 02:51:18 -04:00
|
|
|
assert_equal(Reline.basic_quote_characters, "`")
|
2019-07-16 08:26:30 -04:00
|
|
|
assert_equal(Reline.basic_quote_characters.encoding, Encoding::default_external)
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_completer_quote_characters
|
|
|
|
assert_equal(Reline.completer_quote_characters, '"\'')
|
|
|
|
|
2019-08-18 03:07:20 -04:00
|
|
|
Reline.completer_quote_characters = "`".encode(Encoding::ASCII)
|
2019-08-18 02:51:18 -04:00
|
|
|
assert_equal(Reline.completer_quote_characters, "`")
|
2019-07-16 08:26:30 -04:00
|
|
|
assert_equal(Reline.completer_quote_characters.encoding, Encoding::default_external)
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_filename_quote_characters
|
|
|
|
assert_equal(Reline.filename_quote_characters, '')
|
|
|
|
|
2019-08-18 03:07:20 -04:00
|
|
|
Reline.filename_quote_characters = "\'".encode(Encoding::ASCII)
|
2019-07-16 08:26:30 -04:00
|
|
|
assert_equal(Reline.filename_quote_characters, "\'")
|
|
|
|
assert_equal(Reline.filename_quote_characters.encoding, Encoding::default_external)
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_special_prefixes
|
|
|
|
assert_equal(Reline.special_prefixes, '')
|
|
|
|
|
2019-08-18 03:07:20 -04:00
|
|
|
Reline.special_prefixes = "\'".encode(Encoding::ASCII)
|
2019-07-16 08:26:30 -04:00
|
|
|
assert_equal(Reline.special_prefixes, "\'")
|
|
|
|
assert_equal(Reline.special_prefixes.encoding, Encoding::default_external)
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_completion_case_fold
|
|
|
|
assert_equal(Reline.completion_case_fold, nil)
|
|
|
|
|
|
|
|
Reline.completion_case_fold = true
|
|
|
|
assert_equal(Reline.completion_case_fold, true)
|
|
|
|
|
2019-08-18 03:07:20 -04:00
|
|
|
Reline.completion_case_fold = "hoge".encode(Encoding::ASCII)
|
2019-07-16 08:26:30 -04:00
|
|
|
assert_equal(Reline.completion_case_fold, "hoge")
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_completion_proc
|
|
|
|
assert_equal(Reline.completion_proc, nil)
|
|
|
|
|
|
|
|
p = proc {}
|
|
|
|
Reline.completion_proc = p
|
|
|
|
assert_equal(Reline.completion_proc, p)
|
|
|
|
|
|
|
|
l = lambda {}
|
|
|
|
Reline.completion_proc = l
|
|
|
|
assert_equal(Reline.completion_proc, l)
|
|
|
|
|
|
|
|
assert_raise(ArgumentError) { Reline.completion_proc = 42 }
|
|
|
|
assert_raise(ArgumentError) { Reline.completion_proc = "hoge" }
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_output_modifier_proc
|
|
|
|
assert_equal(Reline.output_modifier_proc, nil)
|
|
|
|
|
|
|
|
p = proc {}
|
|
|
|
Reline.output_modifier_proc = p
|
|
|
|
assert_equal(Reline.output_modifier_proc, p)
|
|
|
|
|
|
|
|
l = lambda {}
|
|
|
|
Reline.output_modifier_proc = l
|
|
|
|
assert_equal(Reline.output_modifier_proc, l)
|
|
|
|
|
|
|
|
assert_raise(ArgumentError) { Reline.output_modifier_proc = 42 }
|
|
|
|
assert_raise(ArgumentError) { Reline.output_modifier_proc = "hoge" }
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_prompt_proc
|
|
|
|
assert_equal(Reline.prompt_proc, nil)
|
|
|
|
|
|
|
|
p = proc {}
|
|
|
|
Reline.prompt_proc = p
|
|
|
|
assert_equal(Reline.prompt_proc, p)
|
|
|
|
|
|
|
|
l = lambda {}
|
|
|
|
Reline.prompt_proc = l
|
|
|
|
assert_equal(Reline.prompt_proc, l)
|
|
|
|
|
|
|
|
assert_raise(ArgumentError) { Reline.prompt_proc = 42 }
|
|
|
|
assert_raise(ArgumentError) { Reline.prompt_proc = "hoge" }
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_auto_indent_proc
|
|
|
|
assert_equal(Reline.auto_indent_proc, nil)
|
|
|
|
|
|
|
|
p = proc {}
|
|
|
|
Reline.auto_indent_proc = p
|
|
|
|
assert_equal(Reline.auto_indent_proc, p)
|
|
|
|
|
|
|
|
l = lambda {}
|
|
|
|
Reline.auto_indent_proc = l
|
|
|
|
assert_equal(Reline.auto_indent_proc, l)
|
|
|
|
|
|
|
|
assert_raise(ArgumentError) { Reline.auto_indent_proc = 42 }
|
|
|
|
assert_raise(ArgumentError) { Reline.auto_indent_proc = "hoge" }
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_pre_input_hook
|
|
|
|
assert_equal(Reline.pre_input_hook, nil)
|
|
|
|
|
|
|
|
p = proc {}
|
|
|
|
Reline.pre_input_hook = p
|
|
|
|
assert_equal(Reline.pre_input_hook, p)
|
|
|
|
|
|
|
|
l = lambda {}
|
|
|
|
Reline.pre_input_hook = l
|
|
|
|
assert_equal(Reline.pre_input_hook, l)
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_dig_perfect_match_proc
|
|
|
|
assert_equal(Reline.dig_perfect_match_proc, nil)
|
|
|
|
|
|
|
|
p = proc {}
|
|
|
|
Reline.dig_perfect_match_proc = p
|
|
|
|
assert_equal(Reline.dig_perfect_match_proc, p)
|
|
|
|
|
|
|
|
l = lambda {}
|
|
|
|
Reline.dig_perfect_match_proc = l
|
|
|
|
assert_equal(Reline.dig_perfect_match_proc, l)
|
|
|
|
|
|
|
|
assert_raise(ArgumentError) { Reline.dig_perfect_match_proc = 42 }
|
|
|
|
assert_raise(ArgumentError) { Reline.dig_perfect_match_proc = "hoge" }
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_insert_text
|
|
|
|
# TODO
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_line_buffer
|
|
|
|
# TODO
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_point
|
|
|
|
# TODO
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_input=
|
|
|
|
# TODO
|
|
|
|
assert_raise(TypeError) do
|
|
|
|
Reline.input = "This is not a file."
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_output=
|
|
|
|
# TODO
|
|
|
|
assert_raise(TypeError) do
|
|
|
|
Reline.output = "This is not a file."
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_vi_editing_mode
|
|
|
|
Reline.vi_editing_mode
|
|
|
|
assert_equal(Reline.send(:core).config.editing_mode.class, Reline::KeyActor::ViInsert)
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_emacs_editing_mode
|
|
|
|
Reline.emacs_editing_mode
|
|
|
|
assert_equal(Reline.send(:core).config.editing_mode.class, Reline::KeyActor::Emacs)
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_editing_mode
|
|
|
|
# TODO
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_readmultiline
|
|
|
|
# TODO
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_readline
|
|
|
|
# TODO
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_inner_readline
|
|
|
|
# TODO in Reline::Core
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_read_io
|
|
|
|
# TODO in Reline::Core
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_read_escaped_key
|
|
|
|
# TODO in Reline::Core
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_may_req_ambiguous_char_width
|
|
|
|
# TODO in Reline::Core
|
|
|
|
end
|
|
|
|
end
|