@@ -41,8 +41,8 @@ def test_split_by_width
4141 def test_take_range
4242 assert_equal 'cdef' , Reline ::Unicode . take_range ( 'abcdefghi' , 2 , 4 )
4343 assert_equal 'あde' , Reline ::Unicode . take_range ( 'abあdef' , 2 , 4 )
44- assert_equal 'zerocdef' , Reline ::Unicode . take_range ( "ab\1 zero\2 cdef" , 2 , 4 )
45- assert_equal 'bzerocde' , Reline ::Unicode . take_range ( "ab\1 zero\2 cdef" , 1 , 4 )
44+ assert_equal " \1 zero \2 cdef" , Reline ::Unicode . take_range ( "ab\1 zero\2 cdef" , 2 , 4 )
45+ assert_equal "b \1 zero \2 cde" , Reline ::Unicode . take_range ( "ab\1 zero\2 cdef" , 1 , 4 )
4646 assert_equal "\e [31mcd\e [42mef" , Reline ::Unicode . take_range ( "\e [31mabcd\e [42mefg" , 2 , 4 )
4747 assert_equal "\e ]0;1\a cd" , Reline ::Unicode . take_range ( "ab\e ]0;1\a cd" , 2 , 3 )
4848 assert_equal 'いう' , Reline ::Unicode . take_range ( 'あいうえお' , 2 , 4 )
@@ -62,4 +62,24 @@ def test_calculate_width
6262 assert_equal 10 , Reline ::Unicode . calculate_width ( 'あいうえお' )
6363 assert_equal 10 , Reline ::Unicode . calculate_width ( 'あいうえお' , true )
6464 end
65+
66+ def test_take_mbchar_range
67+ assert_equal [ 'cdef' , 2 , 4 ] , Reline ::Unicode . take_mbchar_range ( 'abcdefghi' , 2 , 4 )
68+ assert_equal [ 'cdef' , 2 , 4 ] , Reline ::Unicode . take_mbchar_range ( 'abcdefghi' , 2 , 4 , padding : true )
69+ assert_equal [ 'cdef' , 2 , 4 ] , Reline ::Unicode . take_mbchar_range ( 'abcdefghi' , 2 , 4 , cover_begin : true )
70+ assert_equal [ 'cdef' , 2 , 4 ] , Reline ::Unicode . take_mbchar_range ( 'abcdefghi' , 2 , 4 , cover_end : true )
71+ assert_equal [ 'いう' , 2 , 4 ] , Reline ::Unicode . take_mbchar_range ( 'あいうえお' , 2 , 4 )
72+ assert_equal [ 'いう' , 2 , 4 ] , Reline ::Unicode . take_mbchar_range ( 'あいうえお' , 2 , 4 , padding : true )
73+ assert_equal [ 'いう' , 2 , 4 ] , Reline ::Unicode . take_mbchar_range ( 'あいうえお' , 2 , 4 , cover_begin : true )
74+ assert_equal [ 'いう' , 2 , 4 ] , Reline ::Unicode . take_mbchar_range ( 'あいうえお' , 2 , 4 , cover_end : true )
75+ assert_equal [ 'う' , 4 , 2 ] , Reline ::Unicode . take_mbchar_range ( 'あいうえお' , 3 , 4 )
76+ assert_equal [ ' う ' , 3 , 4 ] , Reline ::Unicode . take_mbchar_range ( 'あいうえお' , 3 , 4 , padding : true )
77+ assert_equal [ 'いう' , 2 , 4 ] , Reline ::Unicode . take_mbchar_range ( 'あいうえお' , 3 , 4 , cover_begin : true )
78+ assert_equal [ 'うえ' , 4 , 4 ] , Reline ::Unicode . take_mbchar_range ( 'あいうえお' , 3 , 4 , cover_end : true )
79+ assert_equal [ 'いう ' , 2 , 5 ] , Reline ::Unicode . take_mbchar_range ( 'あいうえお' , 3 , 4 , cover_begin : true , padding : true )
80+ assert_equal [ ' うえ' , 3 , 5 ] , Reline ::Unicode . take_mbchar_range ( 'あいうえお' , 3 , 4 , cover_end : true , padding : true )
81+ assert_equal [ ' うえお ' , 3 , 10 ] , Reline ::Unicode . take_mbchar_range ( 'あいうえお' , 3 , 10 , padding : true )
82+ assert_equal [ "\e [31mc\1 ABC\2 d\e [0mef" , 2 , 4 ] , Reline ::Unicode . take_mbchar_range ( "\e [31mabc\1 ABC\2 d\e [0mefghi" , 2 , 4 )
83+ assert_equal [ "\e [41m \e [42mい\e [43m " , 1 , 4 ] , Reline ::Unicode . take_mbchar_range ( "\e [41mあ\e [42mい\e [43mう\e [0m" , 1 , 4 , padding : true )
84+ end
6585end
0 commit comments