diff src/testdir/test_utf8.vim @ 10720:44a1661f4cfa v8.0.0250

patch 8.0.0250: virtcol() does not work well for multi-byte characters commit https://github.com/vim/vim/commit/0c0590d9827cb07a33c1552cb3558b94bddcb4dc Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jan 28 13:48:10 2017 +0100 patch 8.0.0250: virtcol() does not work well for multi-byte characters Problem: When virtcol() gets a column that is not the first byte of a multi-byte character the result is unpredictable. (Christian Ludwig) Solution: Correct the column to the first byte of a multi-byte character. Change the utf-8 test to new style.
author Christian Brabandt <cb@256bit.org>
date Sat, 28 Jan 2017 14:00:04 +0100
parents
children 63b02fcf1361
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/src/testdir/test_utf8.vim
@@ -0,0 +1,65 @@
+" Tests for Unicode manipulations
+if !has('multi_byte')
+  finish
+endif
+ 
+
+" Visual block Insert adjusts for multi-byte char
+func Test_visual_block_insert()
+  new
+  call setline(1, ["aaa", "あああ", "bbb"])
+  exe ":norm! gg0l\<C-V>jjIx\<Esc>"
+  call assert_equal(['axaa', 'xあああ', 'bxbb'], getline(1, '$'))
+  bwipeout!
+endfunc
+
+" Test for built-in function strchars()
+func Test_strchars()
+  let inp = ["a", "あいa", "A\u20dd", "A\u20dd\u20dd", "\u20dd"]
+  let exp = [[1, 1, 1], [3, 3, 3], [2, 2, 1], [3, 3, 1], [1, 1, 1]]
+  for i in range(len(inp))
+    call assert_equal(exp[i][0], strchars(inp[i]))
+    call assert_equal(exp[i][1], strchars(inp[i], 0))
+    call assert_equal(exp[i][2], strchars(inp[i], 1))
+  endfor
+endfunc
+
+" Test for customlist completion
+function! CustomComplete1(lead, line, pos)
+	return ['あ', 'い']
+endfunction
+
+function! CustomComplete2(lead, line, pos)
+	return ['あたし', 'あたま', 'あたりめ']
+endfunction
+
+function! CustomComplete3(lead, line, pos)
+	return ['Nこ', 'Nん', 'Nぶ']
+endfunction
+
+func Test_customlist_completion()
+  command -nargs=1 -complete=customlist,CustomComplete1 Test1 echo
+  call feedkeys(":Test1 \<C-L>\<C-B>\"\<CR>", 'itx')
+  call assert_equal('"Test1 ', getreg(':'))
+
+  command -nargs=1 -complete=customlist,CustomComplete2 Test2 echo
+  call feedkeys(":Test2 \<C-L>\<C-B>\"\<CR>", 'itx')
+  call assert_equal('"Test2 あた', getreg(':'))
+
+  command -nargs=1 -complete=customlist,CustomComplete3 Test3 echo
+  call feedkeys(":Test3 \<C-L>\<C-B>\"\<CR>", 'itx')
+  call assert_equal('"Test3 N', getreg(':'))
+
+  call garbagecollect(1)
+endfunc
+
+" Yank one 3 byte character and check the mark columns.
+func Test_getvcol()
+  new
+  call setline(1, "x\u2500x")
+  normal 0lvy
+  call assert_equal(2, col("'["))
+  call assert_equal(4, col("']"))
+  call assert_equal(2, virtcol("'["))
+  call assert_equal(2, virtcol("']"))
+endfunc