@@ -107,6 +107,21 @@ def test_take_mbchar_range
107107 assert_equal [ "\e [41m \e [42mい\e [43m " , 1 , 4 ] , Reline ::Unicode . take_mbchar_range ( "\e [41mあ\e [42mい\e [43mう" , 1 , 4 , padding : true )
108108 end
109109
110+ def test_three_width_characters_take_mbchar_range
111+ halfwidth_dakuten = 0xFF9E . chr ( 'utf-8' )
112+ a = 'あ' + halfwidth_dakuten
113+ b = 'い' + halfwidth_dakuten
114+ c = 'う' + halfwidth_dakuten
115+ line = 'x' + a + b + c + 'x'
116+ assert_equal [ ' ' + b + ' ' , 2 , 6 ] , Reline ::Unicode . take_mbchar_range ( line , 2 , 6 , padding : true )
117+ assert_equal [ ' ' + b + ' ' , 3 , 6 ] , Reline ::Unicode . take_mbchar_range ( line , 3 , 6 , padding : true )
118+ assert_equal [ b + c , 4 , 6 ] , Reline ::Unicode . take_mbchar_range ( line , 4 , 6 , padding : true )
119+ assert_equal [ a + b , 1 , 6 ] , Reline ::Unicode . take_mbchar_range ( line , 2 , 6 , cover_begin : true )
120+ assert_equal [ a + b , 1 , 6 ] , Reline ::Unicode . take_mbchar_range ( line , 3 , 6 , cover_begin : true )
121+ assert_equal [ b + c , 4 , 6 ] , Reline ::Unicode . take_mbchar_range ( line , 2 , 6 , cover_end : true )
122+ assert_equal [ b + c , 4 , 6 ] , Reline ::Unicode . take_mbchar_range ( line , 3 , 6 , cover_end : true )
123+ end
124+
110125 def test_common_prefix
111126 assert_equal ( '' , Reline ::Unicode . common_prefix ( [ ] ) )
112127 assert_equal ( 'abc' , Reline ::Unicode . common_prefix ( [ 'abc' ] ) )
0 commit comments