view src/testdir/test58.in @ 5899:60cdaa05a6ad v7.4.292

updated for version 7.4.292 Problem: Searching for "a" does not match accented "a" with new regexp engine, does match with old engine. (David B?rgin) "ca" does not match "ca" with accented "a" with either engine. Solution: Change the old engine, check for following composing character also for single-byte patterns.
author Bram Moolenaar <bram@vim.org>
date Tue, 13 May 2014 18:04:00 +0200
parents 7aca84c0cd37
children ad432f8f68fb
line wrap: on
line source

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!
:"
:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
iasdz=:"
:"
:" 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
:unlet str a
:"
:" 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')
:"
:" clean up for valgrind
:delfunc TestOne
:set spl= enc=latin1
:"
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: