blob: 8bb58bfeefc27cc951155f87a72a2c4ad645d55d [file] [log] [blame]
Bram Moolenaar0dc065e2005-07-04 22:49:24 +00001Tests for spell checking. vim: set ft=vim :
2
3STARTTEST
4:so small.vim
5:"
Bram Moolenaare759a7a2005-07-12 22:50:18 +00006:" Don't want to depend on the locale from the environment
Bram Moolenaar0dc065e2005-07-04 22:49:24 +00007:set enc=latin1
Bram Moolenaare759a7a2005-07-12 22:50:18 +00008:e!
Bram Moolenaar0dc065e2005-07-04 22:49:24 +00009:"
Bram Moolenaarac6e65f2005-08-29 22:25:38 +000010:" Function to test .aff/.dic with list of good and bad words.
11:func TestOne(aff, dic)
12 set spellfile=
13 $put =''
14 $put ='test '. a:aff . '-' . a:dic
15 " Generate a .spl file from a .dic and .aff file.
16 exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
17 exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
18 mkspell! Xtest Xtest
19 " use that spell file
20 set spl=Xtest.latin1.spl spell
21 " list all valid words
22 spelldump
23 %yank
24 quit
25 $put
26 $put ='-------'
27 " find all bad words and suggestions for them
28 exe '1;/^' . a:aff . 'good:'
29 normal 0f:]s
30 let prevbad = ''
31 while 1
32 let bad = spellbadword()
33 if bad == '' || bad == prevbad || bad == 'badend'
34 break
35 endif
36 let prevbad = bad
37 let lst = spellsuggest(bad, 3)
38 normal mm
39 $put =bad
40 $put =string(lst)
41 normal `m]s
42 endwhile
Bram Moolenaar53180ce2005-07-05 21:48:14 +000043endfunc
Bram Moolenaarac6e65f2005-08-29 22:25:38 +000044:"
45:call TestOne('1', '1')
Bram Moolenaar0dc065e2005-07-04 22:49:24 +000046:$put =soundfold('goobledygoook')
47:$put =soundfold('kóopërÿnôven')
48:$put =soundfold('oeverloos gezwets edale')
49:"
Bram Moolenaarac6e65f2005-08-29 22:25:38 +000050:"
Bram Moolenaar0dc065e2005-07-04 22:49:24 +000051:" and now with SAL instead of SOFO items; test automatic reloading
Bram Moolenaarac6e65f2005-08-29 22:25:38 +000052gg:/^affstart_sal/+1,/^affend_sal/-1w! Xtest.aff
Bram Moolenaar0dc065e2005-07-04 22:49:24 +000053:mkspell! Xtest Xtest
54:$put =soundfold('goobledygoook')
55:$put =soundfold('kóopërÿnôven')
56:$put =soundfold('oeverloos gezwets edale')
57:"
58:" also use an addition file
59gg:/^addstart/+1,/^addend/-1w! Xtest.latin1.add
60:mkspell! Xtest.latin1.add.spl Xtest.latin1.add
Bram Moolenaar0dc065e2005-07-04 22:49:24 +000061:set spellfile=Xtest.latin1.add
62/^test2:
63]s:let str = spellbadword()
64:$put =str
Bram Moolenaarce0842a2005-07-18 21:58:11 +000065:set spl=Xtest_us.latin1.spl
Bram Moolenaar0dc065e2005-07-04 22:49:24 +000066/^test2:
67]smm:let str = spellbadword()
68:$put =str
69`m]s:let str = spellbadword()
70:$put =str
Bram Moolenaarce0842a2005-07-18 21:58:11 +000071:set spl=Xtest_gb.latin1.spl
Bram Moolenaar0dc065e2005-07-04 22:49:24 +000072/^test2:
73]smm:let str = spellbadword()
74:$put =str
75`m]s:let str = spellbadword()
76:$put =str
Bram Moolenaarce0842a2005-07-18 21:58:11 +000077:set spl=Xtest_nz.latin1.spl
Bram Moolenaar0dc065e2005-07-04 22:49:24 +000078/^test2:
79]smm:let str = spellbadword()
80:$put =str
81`m]s:let str = spellbadword()
82:$put =str
Bram Moolenaarce0842a2005-07-18 21:58:11 +000083:set spl=Xtest_ca.latin1.spl
Bram Moolenaar0dc065e2005-07-04 22:49:24 +000084/^test2:
85]smm:let str = spellbadword()
86:$put =str
87`m]s:let str = spellbadword()
88:$put =str
89:"
Bram Moolenaar53180ce2005-07-05 21:48:14 +000090:" Postponed prefixes
Bram Moolenaarac6e65f2005-08-29 22:25:38 +000091:call TestOne('2', '1')
Bram Moolenaar53180ce2005-07-05 21:48:14 +000092:"
Bram Moolenaarac6e65f2005-08-29 22:25:38 +000093:" Compound words
94:call TestOne('3', '3')
95:call TestOne('4', '4')
Bram Moolenaard52d9742005-08-21 22:20:28 +000096:"
Bram Moolenaar0dc065e2005-07-04 22:49:24 +000097gg:/^test output:/,$wq! test.out
98ENDTEST
99
Bram Moolenaarac6e65f2005-08-29 22:25:38 +00001001affstart
Bram Moolenaar0dc065e2005-07-04 22:49:24 +0000101SET ISO8859-1
102TRY esianrtolcdugmphbyfvkwjkqxz-ëéèêïîäàâöüû'ESIANRTOLCDUGMPHBYFVKWJKQXZ
103
104FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
105LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
106UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
107
108SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
109SOFOTO ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
110
111MIDWORD '-
112
113KEP =
114RAR ?
115BAD !
116
117NOSPLITSUGS
118
119PFX I N 1
120PFX I 0 in .
121
122PFX O Y 1
123PFX O 0 out .
124
125SFX S Y 2
126SFX S 0 s [^s]
127SFX S 0 es s
128
Bram Moolenaar53180ce2005-07-05 21:48:14 +0000129SFX N N 3
130SFX N 0 en [^n]
131SFX N 0 nen n
132SFX N 0 n .
133
Bram Moolenaar0dc065e2005-07-04 22:49:24 +0000134REP 3
135REP g ch
136REP ch g
137REP svp s.v.p.
138
139MAP 9
140MAP aàáâãäå
141MAP eèéêë
142MAP iìíîï
143MAP oòóôõö
144MAP uùúûü
145MAP nñ
146MAP cç
147MAP yÿý
148MAP sß
Bram Moolenaarac6e65f2005-08-29 22:25:38 +00001491affend
Bram Moolenaar0dc065e2005-07-04 22:49:24 +0000150
Bram Moolenaarac6e65f2005-08-29 22:25:38 +00001511good: wrong OK puts. Test the end
152bad: inputs comment ok Ok. test déôl end the
153badend
154
1551dicstart
156123456
157test/NO
158# comment
159wrong
160Comment
161OK
162uk
163put/ISO
164the end
165deol
166déôr
1671dicend
168
169affstart_sal
Bram Moolenaar0dc065e2005-07-04 22:49:24 +0000170SET ISO8859-1
171TRY esianrtolcdugmphbyfvkwjkqxz-ëéèêïîäàâöüû'ESIANRTOLCDUGMPHBYFVKWJKQXZ
172
173FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
174LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
175UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
176
177MIDWORD '-
178
179KEP =
180RAR ?
181BAD !
182
183NOSPLITSUGS
184
185PFX I N 1
186PFX I 0 in .
187
188PFX O Y 1
189PFX O 0 out .
190
191SFX S Y 2
192SFX S 0 s [^s]
193SFX S 0 es s
194
Bram Moolenaar53180ce2005-07-05 21:48:14 +0000195SFX N N 3
196SFX N 0 en [^n]
197SFX N 0 nen n
198SFX N 0 n .
199
Bram Moolenaar0dc065e2005-07-04 22:49:24 +0000200REP 3
201REP g ch
202REP ch g
203REP svp s.v.p.
204
205MAP 9
206MAP aàáâãäå
207MAP eèéêë
208MAP iìíîï
209MAP oòóôõö
210MAP uùúûü
211MAP nñ
212MAP cç
213MAP yÿý
214MAP sß
215
216SAL AH(AEIOUY)-^ *H
217SAL AR(AEIOUY)-^ *R
218SAL A(HR)^ *
219SAL A^ *
220SAL AH(AEIOUY)- H
221SAL AR(AEIOUY)- R
222SAL A(HR) _
223SAL À^ *
224SAL Å^ *
225SAL BB- _
226SAL B B
227SAL CQ- _
228SAL CIA X
229SAL CH X
230SAL C(EIY)- S
231SAL CK K
232SAL COUGH^ KF
233SAL CC< C
234SAL C K
235SAL DG(EIY) K
236SAL DD- _
237SAL D T
238SAL É< E
239SAL EH(AEIOUY)-^ *H
240SAL ER(AEIOUY)-^ *R
241SAL E(HR)^ *
242SAL ENOUGH^$ *NF
243SAL E^ *
244SAL EH(AEIOUY)- H
245SAL ER(AEIOUY)- R
246SAL E(HR) _
247SAL FF- _
248SAL F F
249SAL GN^ N
250SAL GN$ N
251SAL GNS$ NS
252SAL GNED$ N
253SAL GH(AEIOUY)- K
254SAL GH _
255SAL GG9 K
256SAL G K
257SAL H H
258SAL IH(AEIOUY)-^ *H
259SAL IR(AEIOUY)-^ *R
260SAL I(HR)^ *
261SAL I^ *
262SAL ING6 N
263SAL IH(AEIOUY)- H
264SAL IR(AEIOUY)- R
265SAL I(HR) _
266SAL J K
267SAL KN^ N
268SAL KK- _
269SAL K K
270SAL LAUGH^ LF
271SAL LL- _
272SAL L L
273SAL MB$ M
274SAL MM M
275SAL M M
276SAL NN- _
277SAL N N
278SAL OH(AEIOUY)-^ *H
279SAL OR(AEIOUY)-^ *R
280SAL O(HR)^ *
281SAL O^ *
282SAL OH(AEIOUY)- H
283SAL OR(AEIOUY)- R
284SAL O(HR) _
285SAL PH F
286SAL PN^ N
287SAL PP- _
288SAL P P
289SAL Q K
290SAL RH^ R
291SAL ROUGH^ RF
292SAL RR- _
293SAL R R
294SAL SCH(EOU)- SK
295SAL SC(IEY)- S
296SAL SH X
297SAL SI(AO)- X
298SAL SS- _
299SAL S S
300SAL TI(AO)- X
301SAL TH @
302SAL TCH-- _
303SAL TOUGH^ TF
304SAL TT- _
305SAL T T
306SAL UH(AEIOUY)-^ *H
307SAL UR(AEIOUY)-^ *R
308SAL U(HR)^ *
309SAL U^ *
310SAL UH(AEIOUY)- H
311SAL UR(AEIOUY)- R
312SAL U(HR) _
313SAL V^ W
314SAL V F
315SAL WR^ R
316SAL WH^ W
317SAL W(AEIOU)- W
318SAL X^ S
319SAL X KS
320SAL Y(AEIOU)- Y
321SAL ZZ- _
322SAL Z S
Bram Moolenaarac6e65f2005-08-29 22:25:38 +0000323affend_sal
Bram Moolenaar0dc065e2005-07-04 22:49:24 +0000324
Bram Moolenaarac6e65f2005-08-29 22:25:38 +00003252affstart
Bram Moolenaar53180ce2005-07-05 21:48:14 +0000326SET ISO8859-1
327
328FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
329LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
330UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
331
332PFXPOSTPONE
333
334MIDWORD '-
335
336KEP =
337RAR ?
338BAD !
339
340NOSPLITSUGS
341
342PFX I N 1
343PFX I 0 in .
344
345PFX O Y 1
Bram Moolenaar78984f52005-08-01 07:19:10 +0000346PFX O 0 out [a-z]
Bram Moolenaar53180ce2005-07-05 21:48:14 +0000347
348SFX S Y 2
349SFX S 0 s [^s]
350SFX S 0 es s
351
352SFX N N 3
353SFX N 0 en [^n]
354SFX N 0 nen n
355SFX N 0 n .
356
357REP 3
358REP g ch
359REP ch g
360REP svp s.v.p.
361
362MAP 9
363MAP aàáâãäå
364MAP eèéêë
365MAP iìíîï
366MAP oòóôõö
367MAP uùúûü
368MAP nñ
369MAP cç
370MAP yÿý
371MAP sß
Bram Moolenaarac6e65f2005-08-29 22:25:38 +00003722affend
Bram Moolenaar53180ce2005-07-05 21:48:14 +0000373
Bram Moolenaarac6e65f2005-08-29 22:25:38 +00003742good: puts
375bad: inputs comment ok Ok end the. test déôl
376badend
Bram Moolenaar0dc065e2005-07-04 22:49:24 +0000377
Bram Moolenaarac6e65f2005-08-29 22:25:38 +0000378addstart
379/regions=usgbnz
380elequint/2
381elekwint/3
382addend
383
384test2:
385elequint test elekwint test elekwent asdf
386
387Test rules for compounding.
388
3893affstart
390SET ISO8859-1
391
392COMPOUNDMIN 3
393COMPOUNDFLAGS m*
394NEEDCOMPOUND x
3953affend
396
3973dicstart
3981234
399foo/m
400bar/mx
401mï/m
402la/mx
4033dicend
404
4053good: foo mï foobar foofoobar barfoo barbarfoo
406bad: bar la foomï barmï mïfoo mïbar mïmï lala mïla lamï foola labar
407badend
408
409
410Tests for compounding.
411
4124affstart
Bram Moolenaard52d9742005-08-21 22:20:28 +0000413SET ISO8859-1
414
415FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
416LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
417UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
418
419COMPOUNDFLAGS m+
420COMPOUNDFLAGS sm*e
421COMPOUNDFLAGS sm+
422COMPOUNDMIN 3
423COMPOUNDMAX 3
424
425COMPOUNDSYLMAX 5
426SYLLABLE aáeéiíoóöõuúüûy/aa/au/ea/ee/ei/ie/oa/oe/oo/ou/uu/ui
427
428MAP 9
429MAP aàáâãäå
430MAP eèéêë
431MAP iìíîï
432MAP oòóôõö
433MAP uùúûü
434MAP nñ
435MAP cç
436MAP yÿý
437MAP sß
438
439NEEDAFFIX x
440
441PFXPOSTPONE
442
443MIDWORD '-
444
445SFX q N 1
446SFX q 0 -ok .
447
448SFX a Y 2
449SFX a 0 s .
450SFX a 0 ize . nocomp
451
452PFX p N 1
453PFX p 0 pre .
Bram Moolenaarac6e65f2005-08-29 22:25:38 +00004544affend
Bram Moolenaard52d9742005-08-21 22:20:28 +0000455
Bram Moolenaarac6e65f2005-08-29 22:25:38 +00004564dicstart
Bram Moolenaard52d9742005-08-21 22:20:28 +00004571234
458word/m
459util/am
460pro/xq
461tomato/m
462bork/mp
463start/s
464end/e
Bram Moolenaarac6e65f2005-08-29 22:25:38 +00004654dicend
Bram Moolenaard52d9742005-08-21 22:20:28 +0000466
Bram Moolenaarac6e65f2005-08-29 22:25:38 +00004674good: word util bork prebork start end wordutil wordutils pro-ok
468 bork borkbork borkborkbork borkborkborkbork borkborkborkborkbork
469 tomato tomatotomato startend startword startwordword startwordend
470 startwordwordend startwordwordwordend prebork preborkprebork
471 preborkborkprebork preborkpreborkbork
472bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomato
473 endstart endend startstart wordend wordstart
474 startwordwordwordwordend borkpreborkpreborkbork
475badend
Bram Moolenaar0dc065e2005-07-04 22:49:24 +0000476
477test output: