view src/testdir/test_wordcount.vim @ 33924:ccdb948c7273 v9.0.2160

patch 9.0.2160: instanceof() should use varargs as second arg Commit: https://github.com/vim/vim/commit/2025af165ec68d831f0f0f668a3ceac3f39142ef Author: Ernie Rael <errael@raelity.com> Date: Tue Dec 12 16:58:00 2023 +0100 patch 9.0.2160: instanceof() should use varargs as second arg Problem: instanceof() should use varargs as second arg Solution: Modify `instanceof()` to use varargs instead of list Modify `instanceof()` to use varargs instead of list Valid `instanceof()` arguments are `type`s. A `type` is not a value; it cannot be added to a list. This change is non-compatible with the current usage of instanceof; but instanceof is relatively new and it's a trivial change. fixes: #13421 closes: #13644 Signed-off-by: Ernie Rael <errael@raelity.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Tue, 12 Dec 2023 17:15:03 +0100
parents 08940efa6b4e
children
line wrap: on
line source

" Test for wordcount() function

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

" vim: shiftwidth=2 sts=2 expandtab