@@ -92,13 +92,15 @@ def test_take_mbchar_range
9292
9393 def test_em_forward_word
9494 assert_equal ( 12 , Reline ::Unicode . em_forward_word ( 'abc---fooあbar-baz' , 3 ) )
95+ assert_equal ( 11 , Reline ::Unicode . em_forward_word ( 'abc---fooあbar-baz' . encode ( 'sjis' ) , 3 ) )
9596 assert_equal ( 3 , Reline ::Unicode . em_forward_word ( 'abcfoo' , 3 ) )
9697 assert_equal ( 3 , Reline ::Unicode . em_forward_word ( 'abc---' , 3 ) )
9798 assert_equal ( 0 , Reline ::Unicode . em_forward_word ( 'abc' , 3 ) )
9899 end
99100
100101 def test_em_forward_word_with_capitalization
101102 assert_equal ( [ 12 , '---Fooあbar' ] , Reline ::Unicode . em_forward_word_with_capitalization ( 'abc---foOあBar-baz' , 3 ) )
103+ assert_equal ( [ 11 , '---Fooあbar' . encode ( 'sjis' ) ] , Reline ::Unicode . em_forward_word_with_capitalization ( 'abc---foOあBar-baz' . encode ( 'sjis' ) , 3 ) )
102104 assert_equal ( [ 3 , 'Foo' ] , Reline ::Unicode . em_forward_word_with_capitalization ( 'abcfOo' , 3 ) )
103105 assert_equal ( [ 3 , '---' ] , Reline ::Unicode . em_forward_word_with_capitalization ( 'abc---' , 3 ) )
104106 assert_equal ( [ 0 , '' ] , Reline ::Unicode . em_forward_word_with_capitalization ( 'abc' , 3 ) )
@@ -107,13 +109,15 @@ def test_em_forward_word_with_capitalization
107109
108110 def test_em_backward_word
109111 assert_equal ( 12 , Reline ::Unicode . em_backward_word ( 'abc foo-barあbaz--- xyz' , 20 ) )
112+ assert_equal ( 11 , Reline ::Unicode . em_backward_word ( 'abc foo-barあbaz--- xyz' . encode ( 'sjis' ) , 19 ) )
110113 assert_equal ( 2 , Reline ::Unicode . em_backward_word ( ' ' , 2 ) )
111114 assert_equal ( 2 , Reline ::Unicode . em_backward_word ( 'ab' , 2 ) )
112115 assert_equal ( 0 , Reline ::Unicode . em_backward_word ( 'ab' , 0 ) )
113116 end
114117
115118 def test_em_big_backward_word
116119 assert_equal ( 16 , Reline ::Unicode . em_big_backward_word ( 'abc foo-barあbaz--- xyz' , 20 ) )
120+ assert_equal ( 15 , Reline ::Unicode . em_big_backward_word ( 'abc foo-barあbaz--- xyz' . encode ( 'sjis' ) , 19 ) )
117121 assert_equal ( 2 , Reline ::Unicode . em_big_backward_word ( ' ' , 2 ) )
118122 assert_equal ( 2 , Reline ::Unicode . em_big_backward_word ( 'ab' , 2 ) )
119123 assert_equal ( 0 , Reline ::Unicode . em_big_backward_word ( 'ab' , 0 ) )
@@ -129,20 +133,20 @@ def test_ed_transpose_words
129133 assert_equal ( [ 3 , 5 , 6 , 8 ] , Reline ::Unicode . ed_transpose_words ( 'aa bb cc ' , 7 ) )
130134 assert_equal ( [ 3 , 5 , 6 , 10 ] , Reline ::Unicode . ed_transpose_words ( 'aa bb cc ' , 8 ) )
131135 assert_equal ( [ 3 , 5 , 6 , 10 ] , Reline ::Unicode . ed_transpose_words ( 'aa bb cc ' , 9 ) )
132- word1 = 'fooあ'
133- word2 = 'barあbaz'
134- left = 'aaa -'
135- middle = '- -'
136- right = '- bbb'
137- expected = [ left . bytesize , ( left + word1 ) . bytesize , ( left + word1 + middle ) . bytesize , ( left + word1 + middle + word2 ) . bytesize ]
138- assert_equal ( expected , Reline ::Unicode . ed_transpose_words ( left + word1 + middle + word2 + right , left . bytesize + word1 . bytesize ) )
139- assert_equal ( expected , Reline ::Unicode . ed_transpose_words ( left + word1 + middle + word2 + right , left . bytesize + word1 . bytesize + middle . bytesize ) )
140- assert_equal ( expected , Reline ::Unicode . ed_transpose_words ( left + word1 + middle + word2 + right , left . bytesize + word1 . bytesize + middle . bytesize + word2 . bytesize - 1 ) )
136+ [ 'sjis' , 'utf-8' ] . each do |encoding |
137+ texts = [ 'fooあ' , 'barあbaz' , 'aaa -' , '- -' , '- bbb' ]
138+ word1 , word2 , left , middle , right = texts . map { |text | text . encode ( encoding ) }
139+ expected = [ left . bytesize , ( left + word1 ) . bytesize , ( left + word1 + middle ) . bytesize , ( left + word1 + middle + word2 ) . bytesize ]
140+ assert_equal ( expected , Reline ::Unicode . ed_transpose_words ( left + word1 + middle + word2 + right , left . bytesize + word1 . bytesize ) )
141+ assert_equal ( expected , Reline ::Unicode . ed_transpose_words ( left + word1 + middle + word2 + right , left . bytesize + word1 . bytesize + middle . bytesize ) )
142+ assert_equal ( expected , Reline ::Unicode . ed_transpose_words ( left + word1 + middle + word2 + right , left . bytesize + word1 . bytesize + middle . bytesize + word2 . bytesize - 1 ) )
143+ end
141144 end
142145
143146 def test_vi_big_forward_word
144147 assert_equal ( 18 , Reline ::Unicode . vi_big_forward_word ( 'abc---fooあbar-baz xyz' , 3 ) )
145148 assert_equal ( 8 , Reline ::Unicode . vi_big_forward_word ( 'abcfooあ --' , 3 ) )
149+ assert_equal ( 7 , Reline ::Unicode . vi_big_forward_word ( 'abcfooあ --' . encode ( 'sjis' ) , 3 ) )
146150 assert_equal ( 6 , Reline ::Unicode . vi_big_forward_word ( 'abcfooあ' , 3 ) )
147151 assert_equal ( 3 , Reline ::Unicode . vi_big_forward_word ( 'abc- ' , 3 ) )
148152 assert_equal ( 0 , Reline ::Unicode . vi_big_forward_word ( 'abc' , 3 ) )
@@ -156,6 +160,7 @@ def test_vi_big_forward_end_word
156160 assert_equal ( 1 , Reline ::Unicode . vi_big_forward_end_word ( 'aa b' , 0 ) )
157161 assert_equal ( 3 , Reline ::Unicode . vi_big_forward_end_word ( ' aa b' , 0 ) )
158162 assert_equal ( 15 , Reline ::Unicode . vi_big_forward_end_word ( 'abc---fooあbar-baz xyz' , 3 ) )
163+ assert_equal ( 14 , Reline ::Unicode . vi_big_forward_end_word ( 'abc---fooあbar-baz xyz' . encode ( 'sjis' ) , 3 ) )
159164 assert_equal ( 3 , Reline ::Unicode . vi_big_forward_end_word ( 'abcfooあ --' , 3 ) )
160165 assert_equal ( 3 , Reline ::Unicode . vi_big_forward_end_word ( 'abcfooあ' , 3 ) )
161166 assert_equal ( 2 , Reline ::Unicode . vi_big_forward_end_word ( 'abc- ' , 3 ) )
@@ -164,6 +169,7 @@ def test_vi_big_forward_end_word
164169
165170 def test_vi_big_backward_word
166171 assert_equal ( 16 , Reline ::Unicode . vi_big_backward_word ( 'abc foo-barあbaz--- xyz' , 20 ) )
172+ assert_equal ( 15 , Reline ::Unicode . vi_big_backward_word ( 'abc foo-barあbaz--- xyz' . encode ( 'sjis' ) , 19 ) )
167173 assert_equal ( 2 , Reline ::Unicode . vi_big_backward_word ( ' ' , 2 ) )
168174 assert_equal ( 2 , Reline ::Unicode . vi_big_backward_word ( 'ab' , 2 ) )
169175 assert_equal ( 0 , Reline ::Unicode . vi_big_backward_word ( 'ab' , 0 ) )
@@ -172,6 +178,7 @@ def test_vi_big_backward_word
172178 def test_vi_forward_word
173179 assert_equal ( 3 , Reline ::Unicode . vi_forward_word ( 'abc---fooあbar-baz' , 3 ) )
174180 assert_equal ( 9 , Reline ::Unicode . vi_forward_word ( 'abc---fooあbar-baz' , 6 ) )
181+ assert_equal ( 8 , Reline ::Unicode . vi_forward_word ( 'abc---fooあbar-baz' . encode ( 'sjis' ) , 6 ) )
175182 assert_equal ( 6 , Reline ::Unicode . vi_forward_word ( 'abcfooあ' , 3 ) )
176183 assert_equal ( 3 , Reline ::Unicode . vi_forward_word ( 'abc---' , 3 ) )
177184 assert_equal ( 0 , Reline ::Unicode . vi_forward_word ( 'abc' , 3 ) )
@@ -180,6 +187,7 @@ def test_vi_forward_word
180187 def test_vi_forward_end_word
181188 assert_equal ( 2 , Reline ::Unicode . vi_forward_end_word ( 'abc---fooあbar-baz' , 3 ) )
182189 assert_equal ( 8 , Reline ::Unicode . vi_forward_end_word ( 'abc---fooあbar-baz' , 6 ) )
190+ assert_equal ( 7 , Reline ::Unicode . vi_forward_end_word ( 'abc---fooあbar-baz' . encode ( 'sjis' ) , 6 ) )
183191 assert_equal ( 3 , Reline ::Unicode . vi_forward_end_word ( 'abcfooあ' , 3 ) )
184192 assert_equal ( 2 , Reline ::Unicode . vi_forward_end_word ( 'abc---' , 3 ) )
185193 assert_equal ( 0 , Reline ::Unicode . vi_forward_end_word ( 'abc' , 3 ) )
@@ -188,6 +196,7 @@ def test_vi_forward_end_word
188196 def test_vi_backward_word
189197 assert_equal ( 3 , Reline ::Unicode . vi_backward_word ( 'abc foo-barあbaz--- xyz' , 20 ) )
190198 assert_equal ( 9 , Reline ::Unicode . vi_backward_word ( 'abc foo-barあbaz--- xyz' , 17 ) )
199+ assert_equal ( 8 , Reline ::Unicode . vi_backward_word ( 'abc foo-barあbaz--- xyz' . encode ( 'sjis' ) , 16 ) )
191200 assert_equal ( 2 , Reline ::Unicode . vi_backward_word ( ' ' , 2 ) )
192201 assert_equal ( 2 , Reline ::Unicode . vi_backward_word ( 'ab' , 2 ) )
193202 assert_equal ( 0 , Reline ::Unicode . vi_backward_word ( 'ab' , 0 ) )
@@ -197,6 +206,24 @@ def test_vi_first_print
197206 assert_equal ( 3 , Reline ::Unicode . vi_first_print ( ' abcdefg' ) )
198207 assert_equal ( 3 , Reline ::Unicode . vi_first_print ( ' ' ) )
199208 assert_equal ( 0 , Reline ::Unicode . vi_first_print ( 'abc' ) )
209+ assert_equal ( 0 , Reline ::Unicode . vi_first_print ( 'あ' ) )
210+ assert_equal ( 0 , Reline ::Unicode . vi_first_print ( 'あ' . encode ( 'sjis' ) ) )
200211 assert_equal ( 0 , Reline ::Unicode . vi_first_print ( '' ) )
201212 end
213+
214+ def test_character_type
215+ assert ( Reline ::Unicode . word_character? ( 'a' ) )
216+ assert ( Reline ::Unicode . word_character? ( 'あ' ) )
217+ assert ( Reline ::Unicode . word_character? ( 'あ' . encode ( 'sjis' ) ) )
218+ refute ( Reline ::Unicode . word_character? ( 33345 . chr ( 'sjis' ) ) )
219+ refute ( Reline ::Unicode . word_character? ( '-' ) )
220+ refute ( Reline ::Unicode . word_character? ( nil ) )
221+
222+ assert ( Reline ::Unicode . space_character? ( ' ' ) )
223+ refute ( Reline ::Unicode . space_character? ( 'あ' ) )
224+ refute ( Reline ::Unicode . space_character? ( 'あ' . encode ( 'sjis' ) ) )
225+ refute ( Reline ::Unicode . space_character? ( 33345 . chr ( 'sjis' ) ) )
226+ refute ( Reline ::Unicode . space_character? ( '-' ) )
227+ refute ( Reline ::Unicode . space_character? ( nil ) )
228+ end
202229end
0 commit comments