1a703aaeeSBram Moolenaar" Test for wordcount() function 2a703aaeeSBram Moolenaar 3a703aaeeSBram Moolenaarfunc Test_wordcount() 4a703aaeeSBram Moolenaar let save_enc = &enc 5a703aaeeSBram Moolenaar set encoding=utf-8 6a703aaeeSBram Moolenaar set selection=inclusive fileformat=unix fileformats=unix 7a703aaeeSBram Moolenaar 8a703aaeeSBram Moolenaar new 9a703aaeeSBram Moolenaar 10a703aaeeSBram Moolenaar " Test 1: empty window 11a703aaeeSBram Moolenaar call assert_equal({'chars': 0, 'cursor_chars': 0, 'words': 0, 'cursor_words': 0, 12a703aaeeSBram Moolenaar \ 'bytes': 0, 'cursor_bytes': 0}, wordcount()) 13a703aaeeSBram Moolenaar 14a703aaeeSBram Moolenaar " Test 2: some words, cursor at start 15a703aaeeSBram Moolenaar call append(1, 'one two three') 16a703aaeeSBram Moolenaar call cursor([1, 1, 0]) 17a703aaeeSBram Moolenaar call assert_equal({'chars': 15, 'cursor_chars': 1, 'words': 3, 'cursor_words': 0, 18a703aaeeSBram Moolenaar \ 'bytes': 15, 'cursor_bytes': 1}, wordcount()) 19a703aaeeSBram Moolenaar 20a703aaeeSBram Moolenaar " Test 3: some words, cursor at end 21a703aaeeSBram Moolenaar %d _ 22a703aaeeSBram Moolenaar call append(1, 'one two three') 23a703aaeeSBram Moolenaar call cursor([2, 99, 0]) 24a703aaeeSBram Moolenaar call assert_equal({'chars': 15, 'cursor_chars': 14, 'words': 3, 'cursor_words': 3, 25a703aaeeSBram Moolenaar \ 'bytes': 15, 'cursor_bytes': 14}, wordcount()) 26a703aaeeSBram Moolenaar 27a703aaeeSBram Moolenaar " Test 4: some words, cursor at end, ve=all 28a703aaeeSBram Moolenaar set ve=all 29a703aaeeSBram Moolenaar %d _ 30a703aaeeSBram Moolenaar call append(1, 'one two three') 31a703aaeeSBram Moolenaar call cursor([2, 99, 0]) 32a703aaeeSBram Moolenaar call assert_equal({'chars': 15, 'cursor_chars': 15, 'words': 3, 'cursor_words': 3, 33a703aaeeSBram Moolenaar \ 'bytes': 15, 'cursor_bytes': 15}, wordcount()) 34a703aaeeSBram Moolenaar set ve= 35a703aaeeSBram Moolenaar 36a703aaeeSBram Moolenaar " Test 5: several lines with words 37a703aaeeSBram Moolenaar %d _ 38a703aaeeSBram Moolenaar call append(1, ['one two three', 'one two three', 'one two three']) 39a703aaeeSBram Moolenaar call cursor([4, 99, 0]) 40a703aaeeSBram Moolenaar call assert_equal({'chars': 43, 'cursor_chars': 42, 'words': 9, 'cursor_words': 9, 41a703aaeeSBram Moolenaar \ 'bytes': 43, 'cursor_bytes': 42}, wordcount()) 42a703aaeeSBram Moolenaar 43a703aaeeSBram Moolenaar " Test 6: one line with BOM set 44a703aaeeSBram Moolenaar %d _ 45a703aaeeSBram Moolenaar call append(1, 'one two three') 46a703aaeeSBram Moolenaar set bomb 47a703aaeeSBram Moolenaar w! Xtest 48a703aaeeSBram Moolenaar call cursor([2, 99, 0]) 49a703aaeeSBram Moolenaar call assert_equal({'chars': 15, 'cursor_chars': 14, 'words': 3, 'cursor_words': 3, 50a703aaeeSBram Moolenaar \ 'bytes': 18, 'cursor_bytes': 14}, wordcount()) 51a703aaeeSBram Moolenaar set nobomb 52a703aaeeSBram Moolenaar w! 53a703aaeeSBram Moolenaar call delete('Xtest') 54a703aaeeSBram Moolenaar 55a703aaeeSBram Moolenaar " Test 7: one line with multibyte words 56a703aaeeSBram Moolenaar %d _ 57a703aaeeSBram Moolenaar call append(1, ['Äne M¤ne Müh']) 58a703aaeeSBram Moolenaar call cursor([2, 99, 0]) 59a703aaeeSBram Moolenaar call assert_equal({'chars': 14, 'cursor_chars': 13, 'words': 3, 'cursor_words': 3, 60a703aaeeSBram Moolenaar \ 'bytes': 17, 'cursor_bytes': 16}, wordcount()) 61a703aaeeSBram Moolenaar 62a703aaeeSBram Moolenaar " Test 8: several lines with multibyte words 63a703aaeeSBram Moolenaar %d _ 64a703aaeeSBram Moolenaar call append(1, ['Äne M¤ne Müh', 'und raus bist dü!']) 65a703aaeeSBram Moolenaar call cursor([3, 99, 0]) 66a703aaeeSBram Moolenaar call assert_equal({'chars': 32, 'cursor_chars': 31, 'words': 7, 'cursor_words': 7, 67a703aaeeSBram Moolenaar \ 'bytes': 36, 'cursor_bytes': 35}, wordcount()) 68a703aaeeSBram Moolenaar 69a703aaeeSBram Moolenaar " Visual map to capture wordcount() in visual mode 70a703aaeeSBram Moolenaar vnoremap <expr> <F2> execute("let g:visual_stat = wordcount()") 71a703aaeeSBram Moolenaar 72a703aaeeSBram Moolenaar " Test 9: visual mode, complete buffer 73a703aaeeSBram Moolenaar let g:visual_stat = {} 74a703aaeeSBram Moolenaar %d _ 75a703aaeeSBram Moolenaar call append(1, ['Äne M¤ne Müh', 'und raus bist dü!']) 76a703aaeeSBram Moolenaar " start visual mode and select the complete buffer 77a703aaeeSBram Moolenaar 0 78a703aaeeSBram Moolenaar exe "normal V2j\<F2>y" 79a703aaeeSBram Moolenaar call assert_equal({'chars': 32, 'words': 7, 'bytes': 36, 'visual_chars': 32, 80a703aaeeSBram Moolenaar \ 'visual_words': 7, 'visual_bytes': 36}, g:visual_stat) 81a703aaeeSBram Moolenaar 82a703aaeeSBram Moolenaar " Test 10: visual mode (empty) 83a703aaeeSBram Moolenaar %d _ 84a703aaeeSBram Moolenaar call append(1, ['Äne M¤ne Müh', 'und raus bist dü!']) 85a703aaeeSBram Moolenaar " start visual mode and select the complete buffer 86a703aaeeSBram Moolenaar 0 87a703aaeeSBram Moolenaar exe "normal v$\<F2>y" 88a703aaeeSBram Moolenaar call assert_equal({'chars': 32, 'words': 7, 'bytes': 36, 'visual_chars': 1, 89a703aaeeSBram Moolenaar \ 'visual_words': 0, 'visual_bytes': 1}, g:visual_stat) 90a703aaeeSBram Moolenaar 91a703aaeeSBram Moolenaar " Test 11: visual mode, single line 92a703aaeeSBram Moolenaar %d _ 93a703aaeeSBram Moolenaar call append(1, ['Äne M¤ne Müh', 'und raus bist dü!']) 94a703aaeeSBram Moolenaar " start visual mode and select the complete buffer 95a703aaeeSBram Moolenaar 2 96a703aaeeSBram Moolenaar exe "normal 0v$\<F2>y" 97a703aaeeSBram Moolenaar call assert_equal({'chars': 32, 'words': 7, 'bytes': 36, 'visual_chars': 13, 98a703aaeeSBram Moolenaar \ 'visual_words': 3, 'visual_bytes': 16}, g:visual_stat) 99a703aaeeSBram Moolenaar 100a703aaeeSBram Moolenaar set selection& fileformat& fileformats& 101a703aaeeSBram Moolenaar let &enc = save_enc 102a703aaeeSBram Moolenaar enew! 103a703aaeeSBram Moolenaar close 104a703aaeeSBram Moolenaarendfunc 105*6d91bcb4SBram Moolenaar 106*6d91bcb4SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab 107