123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- " 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
|