summaryrefslogtreecommitdiffstats
path: root/src/testdir
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-01-28 13:48:10 +0100
committerBram Moolenaar <Bram@vim.org>2017-01-28 13:48:10 +0100
commit0c0590d9827cb07a33c1552cb3558b94bddcb4dc (patch)
tree9a4eb2d939907176500b19b938cba106d98bc676 /src/testdir
parent4bc2f2e9fd73da4ba79cef83e4720e918981c483 (diff)
patch 8.0.0250: virtcol() does not work well for multi-byte charactersv8.0.0250
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.
Diffstat (limited to 'src/testdir')
-rw-r--r--src/testdir/Make_all.mak1
-rw-r--r--src/testdir/test_alot_utf8.vim1
-rw-r--r--src/testdir/test_utf8.in46
-rw-r--r--src/testdir/test_utf8.ok22
-rw-r--r--src/testdir/test_utf8.vim65
5 files changed, 66 insertions, 69 deletions
diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak
index 613b86804e..c3db6fe303 100644
--- a/src/testdir/Make_all.mak
+++ b/src/testdir/Make_all.mak
@@ -84,7 +84,6 @@ SCRIPTS_ALL = \
test_listchars.out \
test_listlbr.out \
test_search_mbyte.out \
- test_utf8.out \
test_wordcount.out
diff --git a/src/testdir/test_alot_utf8.vim b/src/testdir/test_alot_utf8.vim
index 539e0e1e43..90b2aab467 100644
--- a/src/testdir/test_alot_utf8.vim
+++ b/src/testdir/test_alot_utf8.vim
@@ -9,3 +9,4 @@ source test_expr_utf8.vim
source test_matchadd_conceal_utf8.vim
source test_regexp_utf8.vim
source test_source_utf8.vim
+source test_utf8.vim
diff --git a/src/testdir/test_utf8.in b/src/testdir/test_utf8.in
deleted file mode 100644
index 1d6a7a44eb..0000000000
--- a/src/testdir/test_utf8.in
+++ /dev/null
@@ -1,46 +0,0 @@
-Tests for Unicode manipulations vim: set ft=vim :
-
-STARTTEST
-:so small.vim
-:set encoding=utf-8
-:"
-:" Visual block Insert adjusts for multi-byte char
-:new
-:call setline(1, ["aaa", "あああ", "bbb"])
-:exe ":norm! gg0l\<C-V>jjIx\<Esc>"
-:let r = getline(1, '$')
-:"
-:bwipeout!
-:$put=r
-:"
-:" Test for built-in function strchars()
-:for str in ["a", "あいa", "A\u20dd", "A\u20dd\u20dd", "\u20dd"]
-: $put=strchars(str)
-: $put=strchars(str, 0)
-: $put=strchars(str, 1)
-:endfor
-:"
-:" Test for customlist completion
-:function! CustomComplete1(lead, line, pos)
-: return ['あ', 'い']
-:endfunction
-:command -nargs=1 -complete=customlist,CustomComplete1 Test1 echo
-:call feedkeys(":Test1 \<C-L>'\<C-B>$put='\<CR>", 'it')
-:"
-:function! CustomComplete2(lead, line, pos)
-: return ['あたし', 'あたま', 'あたりめ']
-:endfunction
-:command -nargs=1 -complete=customlist,CustomComplete2 Test2 echo
-:call feedkeys(":Test2 \<C-L>'\<C-B>$put='\<CR>", 'it')
-:"
-:function! CustomComplete3(lead, line, pos)
-: return ['Nこ', 'Nん', 'Nぶ']
-:endfunction
-:command -nargs=1 -complete=customlist,CustomComplete3 Test3 echo
-:call feedkeys(":Test3 \<C-L>'\<C-B>$put='\<CR>", 'it')
-:"
-:call garbagecollect(1)
-:/^start:/,$wq! test.out
-ENDTEST
-
-start:
diff --git a/src/testdir/test_utf8.ok b/src/testdir/test_utf8.ok
deleted file mode 100644
index c6559226a5..0000000000
--- a/src/testdir/test_utf8.ok
+++ /dev/null
@@ -1,22 +0,0 @@
-start:
-axaa
-xあああ
-bxbb
-1
-1
-1
-3
-3
-3
-2
-2
-1
-3
-3
-1
-1
-1
-1
-Test1
-Test2 あた
-Test3 N
diff --git a/src/testdir/test_utf8.vim b/src/testdir/test_utf8.vim
new file mode 100644
index 0000000000..24e3db86fb
--- /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