diff src/testdir/test_wordcount.vim @ 13022:71109531c516 v8.0.1387

patch 8.0.1387: wordcount test is old style commit https://github.com/vim/vim/commit/a703aaee4d6230ed81469ef0cb37f331bf255136 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Dec 11 22:55:26 2017 +0100 patch 8.0.1387: wordcount test is old style Problem: Wordcount test is old style. Solution: Change into a new style test. (Yegappan Lakshmanan, closes https://github.com/vim/vim/issues/2434)
author Christian Brabandt <cb@256bit.org>
date Mon, 11 Dec 2017 23:00:04 +0100
parents
children 2dcaa860e3fc
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/src/testdir/test_wordcount.vim
@@ -0,0 +1,108 @@
+" Test for wordcount() function
+
+if !has('multi_byte')
+  finish
+endif
+
+func Test_wordcount()
+  let save_enc = &enc
+  set encoding=utf-8
+  set selection=inclusive fileformat=unix fileformats=unix
+
+  new
+
+  " Test 1: empty window
+  call assert_equal({'chars': 0, 'cursor_chars': 0, 'words': 0, 'cursor_words': 0,
+				\ 'bytes': 0, 'cursor_bytes': 0}, wordcount())
+
+  " Test 2: some words, cursor at start
+  call append(1, 'one two three')
+  call cursor([1, 1, 0])
+  call assert_equal({'chars': 15, 'cursor_chars': 1, 'words': 3, 'cursor_words': 0,
+				\ 'bytes': 15, 'cursor_bytes': 1}, wordcount())
+
+  " Test 3: some words, cursor at end
+  %d _
+  call append(1, 'one two three')
+  call cursor([2, 99, 0])
+  call assert_equal({'chars': 15, 'cursor_chars': 14, 'words': 3, 'cursor_words': 3,
+				\ 'bytes': 15, 'cursor_bytes': 14}, wordcount())
+
+  " Test 4: some words, cursor at end, ve=all
+  set ve=all
+  %d _
+  call append(1, 'one two three')
+  call cursor([2, 99, 0])
+  call assert_equal({'chars': 15, 'cursor_chars': 15, 'words': 3, 'cursor_words': 3,
+				\ 'bytes': 15, 'cursor_bytes': 15}, wordcount())
+  set ve=
+
+  " Test 5: several lines with words
+  %d _
+  call append(1, ['one two three', 'one two three', 'one two three'])
+  call cursor([4, 99, 0])
+  call assert_equal({'chars': 43, 'cursor_chars': 42, 'words': 9, 'cursor_words': 9,
+				\ 'bytes': 43, 'cursor_bytes': 42}, wordcount())
+
+  " Test 6: one line with BOM set
+  %d _
+  call append(1, 'one two three')
+  set bomb
+  w! Xtest
+  call cursor([2, 99, 0])
+  call assert_equal({'chars': 15, 'cursor_chars': 14, 'words': 3, 'cursor_words': 3,
+				\ 'bytes': 18, 'cursor_bytes': 14}, wordcount())
+  set nobomb
+  w!
+  call delete('Xtest')
+
+  " Test 7: one line with multibyte words
+  %d _
+  call append(1, ['Äne M¤ne Müh'])
+  call cursor([2, 99, 0])
+  call assert_equal({'chars': 14, 'cursor_chars': 13, 'words': 3, 'cursor_words': 3,
+				\ 'bytes': 17, 'cursor_bytes': 16}, wordcount())
+
+  " Test 8: several lines with multibyte words
+  %d _
+  call append(1, ['Äne M¤ne Müh', 'und raus bist dü!'])
+  call cursor([3, 99, 0])
+  call assert_equal({'chars': 32, 'cursor_chars': 31, 'words': 7, 'cursor_words': 7,
+				\ 'bytes': 36, 'cursor_bytes': 35}, wordcount())
+
+  " Visual map to capture wordcount() in visual mode
+  vnoremap <expr> <F2> execute("let g:visual_stat = wordcount()")
+
+  " Test 9: visual mode, complete buffer
+  let g:visual_stat = {}
+  %d _
+  call append(1, ['Äne M¤ne Müh', 'und raus bist dü!'])
+  " start visual mode and select the complete buffer
+  0
+  exe "normal V2j\<F2>y"
+  call assert_equal({'chars': 32, 'words': 7, 'bytes': 36, 'visual_chars': 32,
+				\ 'visual_words': 7, 'visual_bytes': 36}, g:visual_stat)
+
+  " Test 10: visual mode (empty)
+  %d _
+  call append(1, ['Äne M¤ne Müh', 'und raus bist dü!'])
+  " start visual mode and select the complete buffer
+  0
+  exe "normal v$\<F2>y"
+  call assert_equal({'chars': 32, 'words': 7, 'bytes': 36, 'visual_chars': 1,
+				\ 'visual_words': 0, 'visual_bytes': 1}, g:visual_stat)
+
+  " Test 11: visual mode, single line
+  %d _
+  call append(1, ['Äne M¤ne Müh', 'und raus bist dü!'])
+  " start visual mode and select the complete buffer
+  2
+  exe "normal 0v$\<F2>y"
+  call assert_equal({'chars': 32, 'words': 7, 'bytes': 36, 'visual_chars': 13,
+				\ 'visual_words': 3, 'visual_bytes': 16}, g:visual_stat)
+
+  set selection& fileformat& fileformats&
+  let &enc = save_enc
+  enew!
+  close
+endfunc