From af7953ff9313ad84029b30cda29b99493e3964bf Mon Sep 17 00:00:00 2001 From: aycabta Date: Mon, 6 Sep 2021 06:50:34 +0900 Subject: [PATCH 1/4] Add a test for Reline::Unicode#take_range --- test/reline/test_unicode.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/reline/test_unicode.rb b/test/reline/test_unicode.rb index 08f8197cef..1233e034e8 100644 --- a/test/reline/test_unicode.rb +++ b/test/reline/test_unicode.rb @@ -17,4 +17,9 @@ def test_get_mbchar_width def test_ambiguous_width assert_equal 2, Reline::Unicode.calculate_width('√', true) end + + def test_take_range + assert_equal 'cdef', Reline::Unicode.take_range('abcdefghi', 2, 4) + assert_equal 'いう', Reline::Unicode.take_range('あいうえお', 2, 4) + end end From 26ebecde5cca8356bf2289117a73a0f59435042d Mon Sep 17 00:00:00 2001 From: aycabta Date: Mon, 6 Sep 2021 06:53:36 +0900 Subject: [PATCH 2/4] Rename a temporary test name to appropriate one --- test/reline/test_key_stroke.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/reline/test_key_stroke.rb b/test/reline/test_key_stroke.rb index 15675a9b5a..642ff5478d 100644 --- a/test/reline/test_key_stroke.rb +++ b/test/reline/test_key_stroke.rb @@ -36,7 +36,7 @@ def test_match_status assert_equal(:matched, stroke.match_status("abzwabk".bytes)) end - def test_aaa + def test_expand config = Reline::Config.new { 'abc' => '123', From 42ebea82b71901e3a33227ff09be1ad392b1f93a Mon Sep 17 00:00:00 2001 From: aycabta Date: Mon, 6 Sep 2021 07:01:46 +0900 Subject: [PATCH 3/4] Add a test for oneshot key bindings --- test/reline/test_key_stroke.rb | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/test/reline/test_key_stroke.rb b/test/reline/test_key_stroke.rb index 642ff5478d..7971598162 100644 --- a/test/reline/test_key_stroke.rb +++ b/test/reline/test_key_stroke.rb @@ -46,4 +46,16 @@ def test_expand stroke = Reline::KeyStroke.new(config) assert_equal('123'.bytes, stroke.expand('abc'.bytes)) end + + def test_oneshot_key_bindings + config = Reline::Config.new + { + 'abc' => '123', + }.each_pair do |key, func| + config.add_default_key_binding(key.bytes, func.bytes) + end + stroke = Reline::KeyStroke.new(config) + assert_equal(:unmatched, stroke.match_status('zzz'.bytes)) + assert_equal(:matched, stroke.match_status('abc'.bytes)) + end end From cadbd576c73de38efc47f601c8dbdcd8c3039fb8 Mon Sep 17 00:00:00 2001 From: aycabta Date: Mon, 6 Sep 2021 07:03:48 +0900 Subject: [PATCH 4/4] Add a test for key bindings with Reline::Key --- test/reline/test_key_stroke.rb | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/test/reline/test_key_stroke.rb b/test/reline/test_key_stroke.rb index 7971598162..d377a1e972 100644 --- a/test/reline/test_key_stroke.rb +++ b/test/reline/test_key_stroke.rb @@ -58,4 +58,22 @@ def test_oneshot_key_bindings assert_equal(:unmatched, stroke.match_status('zzz'.bytes)) assert_equal(:matched, stroke.match_status('abc'.bytes)) end + + def test_with_reline_key + config = Reline::Config.new + { + [ + Reline::Key.new(100, 228, true), # Alt+d + Reline::Key.new(97, 97, false) # a + ] => 'abc', + [195, 164] => 'def' + }.each_pair do |key, func| + config.add_oneshot_key_binding(key, func.bytes) + end + stroke = Reline::KeyStroke.new(config) + assert_equal(:unmatched, stroke.match_status('da'.bytes)) + assert_equal(:matched, stroke.match_status("\M-da".bytes)) + assert_equal(:unmatched, stroke.match_status([32, 195, 164])) + assert_equal(:matched, stroke.match_status([195, 164])) + end end