]> granicus.if.org Git - vim/commitdiff
patch 8.2.2896: spellfile functionality not fully tested v8.2.2896
authorDominique Pelle <dominique.pelle@gmail.com>
Fri, 28 May 2021 16:32:12 +0000 (18:32 +0200)
committerBram Moolenaar <Bram@vim.org>
Fri, 28 May 2021 16:32:12 +0000 (18:32 +0200)
Problem:    Spellfile functionality not fully tested.
Solution:   Add tests for CHECKCOMPOUNDPATTERN and COMMON. (Dominique PellĂ©,
            closes #8270)

src/testdir/test_spellfile.vim
src/version.c

index 410553daf4fc199c622268e60541b49d463abb5d..2497fd2ccd4dc8f09bc35b8144eb5c9180d6386c 100644 (file)
@@ -842,6 +842,72 @@ func Test_spell_add_word()
   %bw!
 endfunc
 
+" Test CHECKCOMPOUNDPATTERN (see :help spell-CHECKCOMPOUNDPATTERN)
+func Test_spellfile_CHECKCOMPOUNDPATTERN()
+  call writefile(['4',
+        \         'one/c',
+        \         'two/c',
+        \         'three/c',
+        \         'four'], 'XtestCHECKCOMPOUNDPATTERN.dic')
+  " Forbid compound words where first word ends with 'wo' and second starts with 'on'.
+  call writefile(['CHECKCOMPOUNDPATTERN 1',
+        \         'CHECKCOMPOUNDPATTERN wo on',
+        \         'COMPOUNDFLAG c'], 'XtestCHECKCOMPOUNDPATTERN.aff')
+
+  let output = execute('mkspell! XtestCHECKCOMPOUNDPATTERN-utf8.spl XtestCHECKCOMPOUNDPATTERN')
+  set spell spelllang=XtestCHECKCOMPOUNDPATTERN-utf8.spl
+
+  " Check valid words with and without valid compounds.
+  for goodword in ['one', 'two', 'three', 'four',
+        \          'oneone', 'onetwo',  'onethree',
+        \          'twotwo', 'twothree',
+        \          'threeone', 'threetwo', 'threethree',
+        \          'onetwothree', 'onethreetwo', 'twothreeone', 'oneoneone']
+    call assert_equal(['', ''], spellbadword(goodword), goodword)
+  endfor
+
+  " Compounds 'twoone' or 'threetwoone' should be forbidden by CHECKCOMPOUNPATTERN.
+  " 'four' does not have the 'c' flag in *.aff file so no compound.
+  " 'five' is not in the *.dic file.
+  for badword in ['five', 'onetwox',
+        \         'twoone', 'threetwoone',
+        \         'fourone', 'onefour']
+    call assert_equal([badword, 'bad'], spellbadword(badword))
+  endfor
+
+  set spell& spelllang&
+  call delete('XtestCHECKCOMPOUNDPATTERN.dic')
+  call delete('XtestCHECKCOMPOUNDPATTERN.aff')
+  call delete('XtestCHECKCOMPOUNDPATTERN-utf8.spl')
+endfunc
+
+" Test COMMON (better suggestions with common words, see :help spell-COMMON)
+func Test_spellfile_COMMON()
+  call writefile(['7',
+        \         'and',
+        \         'ant',
+        \         'end',
+        \         'any',
+        \         'tee',
+        \         'the',
+        \         'ted'], 'XtestCOMMON.dic')
+  call writefile(['COMMON the and'], 'XtestCOMMON.aff')
+
+  let output = execute('mkspell! XtestCOMMON-utf8.spl XtestCOMMON')
+  set spell spelllang=XtestCOMMON-utf8.spl
+
+  " COMMON words 'and' and 'the' should be the top suggestions.
+  call assert_equal(['and', 'ant'], spellsuggest('anr', 2))
+  call assert_equal(['and', 'end'], spellsuggest('ond', 2))
+  call assert_equal(['the', 'ted'], spellsuggest('tha', 2))
+  call assert_equal(['the', 'tee'], spellsuggest('dhe', 2))
+
+  set spell& spelllang&
+  call delete('XtestCOMMON.dic')
+  call delete('XtestCOMMON.aff')
+  call delete('XtestCOMMON-utf8.spl')
+endfunc
+
 " When 'spellfile' is not set, adding a new good word will automatically set
 " the 'spellfile'
 func Test_init_spellfile()
index 7c7e1136fedf6af3f3de51137297fce0fb993354..b20a149fa7964fa1c17f4c1fc3971db74252d61d 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2896,
 /**/
     2895,
 /**/