@@ -147,13 +147,15 @@ def test_encoding_conversion
147147
148148 def test_em_forward_word
149149 assert_equal ( 12 , Reline ::Unicode . em_forward_word ( 'abc---fooあbar-baz' , 3 ) )
150+ assert_equal ( 11 , Reline ::Unicode . em_forward_word ( 'abc---fooあbar-baz' . encode ( 'sjis' ) , 3 ) )
150151 assert_equal ( 3 , Reline ::Unicode . em_forward_word ( 'abcfoo' , 3 ) )
151152 assert_equal ( 3 , Reline ::Unicode . em_forward_word ( 'abc---' , 3 ) )
152153 assert_equal ( 0 , Reline ::Unicode . em_forward_word ( 'abc' , 3 ) )
153154 end
154155
155156 def test_em_forward_word_with_capitalization
156157 assert_equal ( [ 12 , '---Fooあbar' ] , Reline ::Unicode . em_forward_word_with_capitalization ( 'abc---foOあBar-baz' , 3 ) )
158+ assert_equal ( [ 11 , '---Fooあbar' . encode ( 'sjis' ) ] , Reline ::Unicode . em_forward_word_with_capitalization ( 'abc---foOあBar-baz' . encode ( 'sjis' ) , 3 ) )
157159 assert_equal ( [ 3 , 'Foo' ] , Reline ::Unicode . em_forward_word_with_capitalization ( 'abcfOo' , 3 ) )
158160 assert_equal ( [ 3 , '---' ] , Reline ::Unicode . em_forward_word_with_capitalization ( 'abc---' , 3 ) )
159161 assert_equal ( [ 0 , '' ] , Reline ::Unicode . em_forward_word_with_capitalization ( 'abc' , 3 ) )
@@ -162,13 +164,15 @@ def test_em_forward_word_with_capitalization
162164
163165 def test_em_backward_word
164166 assert_equal ( 12 , Reline ::Unicode . em_backward_word ( 'abc foo-barあbaz--- xyz' , 20 ) )
167+ assert_equal ( 11 , Reline ::Unicode . em_backward_word ( 'abc foo-barあbaz--- xyz' . encode ( 'sjis' ) , 19 ) )
165168 assert_equal ( 2 , Reline ::Unicode . em_backward_word ( ' ' , 2 ) )
166169 assert_equal ( 2 , Reline ::Unicode . em_backward_word ( 'ab' , 2 ) )
167170 assert_equal ( 0 , Reline ::Unicode . em_backward_word ( 'ab' , 0 ) )
168171 end
169172
170173 def test_em_big_backward_word
171174 assert_equal ( 16 , Reline ::Unicode . em_big_backward_word ( 'abc foo-barあbaz--- xyz' , 20 ) )
175+ assert_equal ( 15 , Reline ::Unicode . em_big_backward_word ( 'abc foo-barあbaz--- xyz' . encode ( 'sjis' ) , 19 ) )
172176 assert_equal ( 2 , Reline ::Unicode . em_big_backward_word ( ' ' , 2 ) )
173177 assert_equal ( 2 , Reline ::Unicode . em_big_backward_word ( 'ab' , 2 ) )
174178 assert_equal ( 0 , Reline ::Unicode . em_big_backward_word ( 'ab' , 0 ) )
@@ -184,20 +188,20 @@ def test_ed_transpose_words
184188 assert_equal ( [ 3 , 5 , 6 , 8 ] , Reline ::Unicode . ed_transpose_words ( 'aa bb cc ' , 7 ) )
185189 assert_equal ( [ 3 , 5 , 6 , 10 ] , Reline ::Unicode . ed_transpose_words ( 'aa bb cc ' , 8 ) )
186190 assert_equal ( [ 3 , 5 , 6 , 10 ] , Reline ::Unicode . ed_transpose_words ( 'aa bb cc ' , 9 ) )
187- word1 = 'fooあ'
188- word2 = 'barあbaz'
189- left = 'aaa -'
190- middle = '- -'
191- right = '- bbb'
192- expected = [ left . bytesize , ( left + word1 ) . bytesize , ( left + word1 + middle ) . bytesize , ( left + word1 + middle + word2 ) . bytesize ]
193- assert_equal ( expected , Reline ::Unicode . ed_transpose_words ( left + word1 + middle + word2 + right , left . bytesize + word1 . bytesize ) )
194- assert_equal ( expected , Reline ::Unicode . ed_transpose_words ( left + word1 + middle + word2 + right , left . bytesize + word1 . bytesize + middle . bytesize ) )
195- assert_equal ( expected , Reline ::Unicode . ed_transpose_words ( left + word1 + middle + word2 + right , left . bytesize + word1 . bytesize + middle . bytesize + word2 . bytesize - 1 ) )
191+ [ 'sjis' , 'utf-8' ] . each do |encoding |
192+ texts = [ 'fooあ' , 'barあbaz' , 'aaa -' , '- -' , '- bbb' ]
193+ word1 , word2 , left , middle , right = texts . map { |text | text . encode ( encoding ) }
194+ expected = [ left . bytesize , ( left + word1 ) . bytesize , ( left + word1 + middle ) . bytesize , ( left + word1 + middle + word2 ) . bytesize ]
195+ assert_equal ( expected , Reline ::Unicode . ed_transpose_words ( left + word1 + middle + word2 + right , left . bytesize + word1 . bytesize ) )
196+ assert_equal ( expected , Reline ::Unicode . ed_transpose_words ( left + word1 + middle + word2 + right , left . bytesize + word1 . bytesize + middle . bytesize ) )
197+ assert_equal ( expected , Reline ::Unicode . ed_transpose_words ( left + word1 + middle + word2 + right , left . bytesize + word1 . bytesize + middle . bytesize + word2 . bytesize - 1 ) )
198+ end
196199 end
197200
198201 def test_vi_big_forward_word
199202 assert_equal ( 18 , Reline ::Unicode . vi_big_forward_word ( 'abc---fooあbar-baz xyz' , 3 ) )
200203 assert_equal ( 8 , Reline ::Unicode . vi_big_forward_word ( 'abcfooあ --' , 3 ) )
204+ assert_equal ( 7 , Reline ::Unicode . vi_big_forward_word ( 'abcfooあ --' . encode ( 'sjis' ) , 3 ) )
201205 assert_equal ( 6 , Reline ::Unicode . vi_big_forward_word ( 'abcfooあ' , 3 ) )
202206 assert_equal ( 3 , Reline ::Unicode . vi_big_forward_word ( 'abc- ' , 3 ) )
203207 assert_equal ( 0 , Reline ::Unicode . vi_big_forward_word ( 'abc' , 3 ) )
@@ -211,6 +215,7 @@ def test_vi_big_forward_end_word
211215 assert_equal ( 1 , Reline ::Unicode . vi_big_forward_end_word ( 'aa b' , 0 ) )
212216 assert_equal ( 3 , Reline ::Unicode . vi_big_forward_end_word ( ' aa b' , 0 ) )
213217 assert_equal ( 15 , Reline ::Unicode . vi_big_forward_end_word ( 'abc---fooあbar-baz xyz' , 3 ) )
218+ assert_equal ( 14 , Reline ::Unicode . vi_big_forward_end_word ( 'abc---fooあbar-baz xyz' . encode ( 'sjis' ) , 3 ) )
214219 assert_equal ( 3 , Reline ::Unicode . vi_big_forward_end_word ( 'abcfooあ --' , 3 ) )
215220 assert_equal ( 3 , Reline ::Unicode . vi_big_forward_end_word ( 'abcfooあ' , 3 ) )
216221 assert_equal ( 2 , Reline ::Unicode . vi_big_forward_end_word ( 'abc- ' , 3 ) )
@@ -219,6 +224,7 @@ def test_vi_big_forward_end_word
219224
220225 def test_vi_big_backward_word
221226 assert_equal ( 16 , Reline ::Unicode . vi_big_backward_word ( 'abc foo-barあbaz--- xyz' , 20 ) )
227+ assert_equal ( 15 , Reline ::Unicode . vi_big_backward_word ( 'abc foo-barあbaz--- xyz' . encode ( 'sjis' ) , 19 ) )
222228 assert_equal ( 2 , Reline ::Unicode . vi_big_backward_word ( ' ' , 2 ) )
223229 assert_equal ( 2 , Reline ::Unicode . vi_big_backward_word ( 'ab' , 2 ) )
224230 assert_equal ( 0 , Reline ::Unicode . vi_big_backward_word ( 'ab' , 0 ) )
@@ -227,6 +233,7 @@ def test_vi_big_backward_word
227233 def test_vi_forward_word
228234 assert_equal ( 3 , Reline ::Unicode . vi_forward_word ( 'abc---fooあbar-baz' , 3 ) )
229235 assert_equal ( 9 , Reline ::Unicode . vi_forward_word ( 'abc---fooあbar-baz' , 6 ) )
236+ assert_equal ( 8 , Reline ::Unicode . vi_forward_word ( 'abc---fooあbar-baz' . encode ( 'sjis' ) , 6 ) )
230237 assert_equal ( 6 , Reline ::Unicode . vi_forward_word ( 'abcfooあ' , 3 ) )
231238 assert_equal ( 3 , Reline ::Unicode . vi_forward_word ( 'abc---' , 3 ) )
232239 assert_equal ( 0 , Reline ::Unicode . vi_forward_word ( 'abc' , 3 ) )
@@ -235,6 +242,7 @@ def test_vi_forward_word
235242 def test_vi_forward_end_word
236243 assert_equal ( 2 , Reline ::Unicode . vi_forward_end_word ( 'abc---fooあbar-baz' , 3 ) )
237244 assert_equal ( 8 , Reline ::Unicode . vi_forward_end_word ( 'abc---fooあbar-baz' , 6 ) )
245+ assert_equal ( 7 , Reline ::Unicode . vi_forward_end_word ( 'abc---fooあbar-baz' . encode ( 'sjis' ) , 6 ) )
238246 assert_equal ( 3 , Reline ::Unicode . vi_forward_end_word ( 'abcfooあ' , 3 ) )
239247 assert_equal ( 2 , Reline ::Unicode . vi_forward_end_word ( 'abc---' , 3 ) )
240248 assert_equal ( 0 , Reline ::Unicode . vi_forward_end_word ( 'abc' , 3 ) )
@@ -243,6 +251,7 @@ def test_vi_forward_end_word
243251 def test_vi_backward_word
244252 assert_equal ( 3 , Reline ::Unicode . vi_backward_word ( 'abc foo-barあbaz--- xyz' , 20 ) )
245253 assert_equal ( 9 , Reline ::Unicode . vi_backward_word ( 'abc foo-barあbaz--- xyz' , 17 ) )
254+ assert_equal ( 8 , Reline ::Unicode . vi_backward_word ( 'abc foo-barあbaz--- xyz' . encode ( 'sjis' ) , 16 ) )
246255 assert_equal ( 2 , Reline ::Unicode . vi_backward_word ( ' ' , 2 ) )
247256 assert_equal ( 2 , Reline ::Unicode . vi_backward_word ( 'ab' , 2 ) )
248257 assert_equal ( 0 , Reline ::Unicode . vi_backward_word ( 'ab' , 0 ) )
@@ -252,6 +261,24 @@ def test_vi_first_print
252261 assert_equal ( 3 , Reline ::Unicode . vi_first_print ( ' abcdefg' ) )
253262 assert_equal ( 3 , Reline ::Unicode . vi_first_print ( ' ' ) )
254263 assert_equal ( 0 , Reline ::Unicode . vi_first_print ( 'abc' ) )
264+ assert_equal ( 0 , Reline ::Unicode . vi_first_print ( 'あ' ) )
265+ assert_equal ( 0 , Reline ::Unicode . vi_first_print ( 'あ' . encode ( 'sjis' ) ) )
255266 assert_equal ( 0 , Reline ::Unicode . vi_first_print ( '' ) )
256267 end
268+
269+ def test_character_type
270+ assert ( Reline ::Unicode . word_character? ( 'a' ) )
271+ assert ( Reline ::Unicode . word_character? ( 'あ' ) )
272+ assert ( Reline ::Unicode . word_character? ( 'あ' . encode ( 'sjis' ) ) )
273+ refute ( Reline ::Unicode . word_character? ( 33345 . chr ( 'sjis' ) ) )
274+ refute ( Reline ::Unicode . word_character? ( '-' ) )
275+ refute ( Reline ::Unicode . word_character? ( nil ) )
276+
277+ assert ( Reline ::Unicode . space_character? ( ' ' ) )
278+ refute ( Reline ::Unicode . space_character? ( 'あ' ) )
279+ refute ( Reline ::Unicode . space_character? ( 'あ' . encode ( 'sjis' ) ) )
280+ refute ( Reline ::Unicode . space_character? ( 33345 . chr ( 'sjis' ) ) )
281+ refute ( Reline ::Unicode . space_character? ( '-' ) )
282+ refute ( Reline ::Unicode . space_character? ( nil ) )
283+ end
257284end
0 commit comments