shithub: vim

ref: c40d57b389033a42ad526308884e49b39746ecf5
dir: /testdir/test58.in/

View raw version
Tests for spell checking.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:" Don't want to depend on the locale from the environment
:set enc=latin1
:e!
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=
  $put =''
  $put ='test '. a:aff . '-' . a:dic
  " Generate a .spl file from a .dic and .aff file.
  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
  mkspell! Xtest Xtest
  " use that spell file
  set spl=Xtest.latin1.spl spell
  " list all valid words
  spelldump
  %yank
  quit
  $put
  $put ='-------'
  " find all bad words and suggestions for them
  exe '1;/^' . a:aff . 'good:'
  normal 0f:]s
  let prevbad = ''
  while 1
    let [bad, a] = spellbadword()
    if bad == '' || bad == prevbad || bad == 'badend'
      break
    endif
    let prevbad = bad
    let lst = spellsuggest(bad, 3)
    normal mm
    $put =bad
    $put =string(lst)
    normal `m]s
  endwhile
endfunc
:"
:call TestOne('1', '1')
:$put =soundfold('goobledygoook')
:$put =soundfold('k�op�r�n�ven')
:$put =soundfold('oeverloos gezwets edale')
:"
:"
:" and now with SAL instead of SOFO items; test automatic reloading
gg:/^affstart_sal/+1,/^affend_sal/-1w! Xtest.aff
:mkspell! Xtest Xtest
:$put =soundfold('goobledygoook')
:$put =soundfold('k�op�r�n�ven')
:$put =soundfold('oeverloos gezwets edale')
:"
:" also use an addition file
gg:/^addstart/+1,/^addend/-1w! Xtest.latin1.add
:mkspell! Xtest.latin1.add.spl Xtest.latin1.add
:set spellfile=Xtest.latin1.add
/^test2:
]s:let [str, a] = spellbadword()
:$put =str
:set spl=Xtest_us.latin1.spl
/^test2:
]smm:let [str, a] = spellbadword()
:$put =str
`m]s:let [str, a] = spellbadword()
:$put =str
:set spl=Xtest_gb.latin1.spl
/^test2:
]smm:let [str, a] = spellbadword()
:$put =str
`m]s:let [str, a] = spellbadword()
:$put =str
:set spl=Xtest_nz.latin1.spl
/^test2:
]smm:let [str, a] = spellbadword()
:$put =str
`m]s:let [str, a] = spellbadword()
:$put =str
:set spl=Xtest_ca.latin1.spl
/^test2:
]smm:let [str, a] = spellbadword()
:$put =str
`m]s:let [str, a] = spellbadword()
:$put =str
:"
:" Postponed prefixes
:call TestOne('2', '1')
:"
:" Compound words
:call TestOne('3', '3')
:call TestOne('4', '4')
:call TestOne('5', '5')
:call TestOne('6', '6')
:call TestOne('7', '7')
:"
:" NOSLITSUGS
:call TestOne('8', '8')
:"
gg:/^test output:/,$wq! test.out
ENDTEST

1affstart
SET ISO8859-1
TRY esianrtolcdugmphbyfvkwjkqxz-������������'ESIANRTOLCDUGMPHBYFVKWJKQXZ

FOL  ��������������������������������
LOW  ��������������������������������
UPP  ��������������������������������

SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ�������������������������������������������������������������޿
SOFOTO   ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?

MIDWORD	'-

KEP =
RAR ?
BAD !

PFX I N 1
PFX I 0 in .

PFX O Y 1
PFX O 0 out .

SFX S Y 2
SFX S 0 s [^s]
SFX S 0 es s

SFX N N 3
SFX N 0 en [^n]
SFX N 0 nen n
SFX N 0 n .

REP 3
REP g ch
REP ch g
REP svp s.v.p.

MAP 9
MAP a������
MAP e����
MAP i����
MAP o�����
MAP u����
MAP n�
MAP c�
MAP y��
MAP s�
1affend

1good: wrong OK puts. Test the end
bad:  inputs comment ok Ok. test d��l end the
badend

1dicstart
123456
test/NO
# comment
wrong
Comment
OK
uk
put/ISO
the end
deol
d��r
1dicend

affstart_sal
SET ISO8859-1
TRY esianrtolcdugmphbyfvkwjkqxz-������������'ESIANRTOLCDUGMPHBYFVKWJKQXZ

FOL  ��������������������������������
LOW  ��������������������������������
UPP  ��������������������������������

MIDWORD	'-

KEP =
RAR ?
BAD !

PFX I N 1
PFX I 0 in .

PFX O Y 1
PFX O 0 out .

SFX S Y 2
SFX S 0 s [^s]
SFX S 0 es s

SFX N N 3
SFX N 0 en [^n]
SFX N 0 nen n
SFX N 0 n .

REP 3
REP g ch
REP ch g
REP svp s.v.p.

MAP 9
MAP a������
MAP e����
MAP i����
MAP o�����
MAP u����
MAP n�
MAP c�
MAP y��
MAP s�

SAL AH(AEIOUY)-^         *H
SAL AR(AEIOUY)-^         *R
SAL A(HR)^               *
SAL A^                   *
SAL AH(AEIOUY)-          H
SAL AR(AEIOUY)-          R
SAL A(HR)                _
SAL �^                   *
SAL �^                   *
SAL BB-                  _
SAL B                    B
SAL CQ-                  _
SAL CIA                  X
SAL CH                   X
SAL C(EIY)-              S
SAL CK                   K
SAL COUGH^               KF
SAL CC<                  C
SAL C                    K
SAL DG(EIY)              K
SAL DD-                  _
SAL D                    T
SAL �<                   E
SAL EH(AEIOUY)-^         *H
SAL ER(AEIOUY)-^         *R
SAL E(HR)^               *
SAL ENOUGH^$             *NF
SAL E^                   *
SAL EH(AEIOUY)-          H
SAL ER(AEIOUY)-          R
SAL E(HR)                _
SAL FF-                  _
SAL F                    F
SAL GN^                  N
SAL GN$                  N
SAL GNS$                 NS
SAL GNED$                N
SAL GH(AEIOUY)-          K
SAL GH                   _
SAL GG9                  K
SAL G                    K
SAL H                    H
SAL IH(AEIOUY)-^         *H
SAL IR(AEIOUY)-^         *R
SAL I(HR)^               *
SAL I^                   *
SAL ING6                 N
SAL IH(AEIOUY)-          H
SAL IR(AEIOUY)-          R
SAL I(HR)                _
SAL J                    K
SAL KN^                  N
SAL KK-                  _
SAL K                    K
SAL LAUGH^               LF
SAL LL-                  _
SAL L                    L
SAL MB$                  M
SAL MM                   M
SAL M                    M
SAL NN-                  _
SAL N                    N
SAL OH(AEIOUY)-^         *H
SAL OR(AEIOUY)-^         *R
SAL O(HR)^               *
SAL O^                   *
SAL OH(AEIOUY)-          H
SAL OR(AEIOUY)-          R
SAL O(HR)                _
SAL PH                   F
SAL PN^                  N
SAL PP-                  _
SAL P                    P
SAL Q                    K
SAL RH^                  R
SAL ROUGH^               RF
SAL RR-                  _
SAL R                    R
SAL SCH(EOU)-            SK
SAL SC(IEY)-             S
SAL SH                   X
SAL SI(AO)-              X
SAL SS-                  _
SAL S                    S
SAL TI(AO)-              X
SAL TH                   @
SAL TCH--                _
SAL TOUGH^               TF
SAL TT-                  _
SAL T                    T
SAL UH(AEIOUY)-^         *H
SAL UR(AEIOUY)-^         *R
SAL U(HR)^               *
SAL U^                   *
SAL UH(AEIOUY)-          H
SAL UR(AEIOUY)-          R
SAL U(HR)                _
SAL V^                   W
SAL V                    F
SAL WR^                  R
SAL WH^                  W
SAL W(AEIOU)-            W
SAL X^                   S
SAL X                    KS
SAL Y(AEIOU)-            Y
SAL ZZ-                  _
SAL Z                    S
affend_sal

2affstart
SET ISO8859-1

FOL  ��������������������������������
LOW  ��������������������������������
UPP  ��������������������������������

PFXPOSTPONE

MIDWORD	'-

KEP =
RAR ?
BAD !

PFX I N 1
PFX I 0 in .

PFX O Y 1
PFX O 0 out [a-z]

SFX S Y 2
SFX S 0 s [^s]
SFX S 0 es s

SFX N N 3
SFX N 0 en [^n]
SFX N 0 nen n
SFX N 0 n .

REP 3
REP g ch
REP ch g
REP svp s.v.p.

MAP 9
MAP a������
MAP e����
MAP i����
MAP o�����
MAP u����
MAP n�
MAP c�
MAP y��
MAP s�
2affend

2good: puts
bad: inputs comment ok Ok end the. test d��l
badend

addstart
/regions=usgbnz
elequint/2
elekwint/3
addend

test2:
elequint test elekwint test elekwent asdf

Test rules for compounding.

3affstart
SET ISO8859-1

COMPOUNDMIN 3
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend

3dicstart
1234
foo/m
bar/mx
m�/m
la/mx
3dicend

3good: foo m� foobar foofoobar barfoo barbarfoo
bad: bar la foom� barm� m�foo m�bar m�m� lala m�la lam� foola labar
badend


Tests for compounding.

4affstart
SET ISO8859-1

FOL  ��������������������������������
LOW  ��������������������������������
UPP  ��������������������������������

COMPOUNDRULE m+
COMPOUNDRULE sm*e
COMPOUNDRULE sm+
COMPOUNDMIN 3
COMPOUNDWORDMAX 3
COMPOUNDFORBIDFLAG t

COMPOUNDSYLMAX 5
SYLLABLE a�e�i�o���u���y/aa/au/ea/ee/ei/ie/oa/oe/oo/ou/uu/ui

MAP 9
MAP a������
MAP e����
MAP i����
MAP o�����
MAP u����
MAP n�
MAP c�
MAP y��
MAP s�

NEEDAFFIX x

PFXPOSTPONE

MIDWORD '-

SFX q N 1
SFX q   0    -ok .

SFX a Y 2
SFX a 0 s .
SFX a 0 ize/t .

PFX p N 1
PFX p 0 pre .

PFX P N 1
PFX P 0 nou .
4affend

4dicstart
1234
word/mP
util/am
pro/xq
tomato/m
bork/mp
start/s
end/e
4dicend

4good: word util bork prebork start end wordutil wordutils pro-ok
	bork borkbork borkborkbork borkborkborkbork borkborkborkborkbork
	tomato tomatotomato startend startword startwordword startwordend
	startwordwordend startwordwordwordend prebork preborkbork
	preborkborkbork
	nouword
bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomato
	endstart endend startstart wordend wordstart
	preborkprebork  preborkpreborkbork
 	startwordwordwordwordend borkpreborkpreborkbork
	utilsbork  startnouword
badend

Test affix flags with two characters

5affstart
SET ISO8859-1

FLAG long

NEEDAFFIX !!

COMPOUNDRULE ssmm*ee

NEEDCOMPOUND xx
COMPOUNDPERMITFLAG pp

SFX 13 Y 1
SFX 13 0 bork .

SFX a1 Y 1
SFX a1 0 a1 .

SFX a� Y 1
SFX a� 0 a� .

PFX zz Y 1
PFX zz 0 pre/pp .

PFX yy Y 1
PFX yy 0 nou .
5affend

5dicstart
1234
foo/a1a�!!
bar/zz13ee
start/ss
end/eeyy
middle/mmxx
5dicend

5good: fooa1 fooa� bar prebar barbork prebarbork  startprebar
      start end startend  startmiddleend nouend
bad: foo fooa2 prabar probarbirk middle startmiddle middleend endstart
	startprobar startnouend
badend

6affstart
SET ISO8859-1

FLAG caplong

NEEDAFFIX A!

COMPOUNDRULE sMm*Ee

NEEDCOMPOUND Xx

COMPOUNDPERMITFLAG p

SFX N3 Y 1
SFX N3 0 bork .

SFX A1 Y 1
SFX A1 0 a1 .

SFX A� Y 1
SFX A� 0 a� .

PFX Zz Y 1
PFX Zz 0 pre/p .
6affend

6dicstart
1234
mee/A1A�A!
bar/ZzN3Ee
lead/s
end/Ee
middle/MmXx
6dicend

6good: meea1 meea� bar prebar barbork prebarbork  leadprebar
      lead end leadend  leadmiddleend
bad: mee meea2 prabar probarbirk middle leadmiddle middleend endlead
	leadprobar
badend

7affstart
SET ISO8859-1

FLAG num

NEEDAFFIX 9999

COMPOUNDRULE 2,77*123

NEEDCOMPOUND 1
COMPOUNDPERMITFLAG 432

SFX 61003 Y 1
SFX 61003 0 meat .

SFX 391 Y 1
SFX 391 0 a1 .

SFX 111 Y 1
SFX 111 0 a� .

PFX 17 Y 1
PFX 17 0 pre/432 .
7affend

7dicstart
1234
mee/391,111,9999
bar/17,61003,123
lead/2
tail/123
middle/77,1
7dicend

7good: meea1 meea� bar prebar barmeat prebarmeat  leadprebar
      lead tail leadtail  leadmiddletail
bad: mee meea2 prabar probarmaat middle leadmiddle middletail taillead
	leadprobar
badend

Test NOSLITSUGS

8affstart
SET ISO8859-1

NOSPLITSUGS
8affend

8dicstart
1234
foo
bar
faabar
8dicend

8good: foo bar faabar
bad: foobar barfoo
badend


test output: