blob: b3902f13c2680661657804d335d068b469837dee [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 Moolenaarda2303d2005-08-30 21:55:26 +000096:call TestOne('5', '5')
97:call TestOne('6', '6')
98:call TestOne('7', '7')
Bram Moolenaard52d9742005-08-21 22:20:28 +000099:"
Bram Moolenaar0dc065e2005-07-04 22:49:24 +0000100gg:/^test output:/,$wq! test.out
101ENDTEST
102
Bram Moolenaarac6e65f2005-08-29 22:25:38 +00001031affstart
Bram Moolenaar0dc065e2005-07-04 22:49:24 +0000104SET ISO8859-1
105TRY esianrtolcdugmphbyfvkwjkqxz-ëéèêïîäàâöüû'ESIANRTOLCDUGMPHBYFVKWJKQXZ
106
107FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
108LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
109UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
110
111SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
112SOFOTO ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
113
114MIDWORD '-
115
116KEP =
117RAR ?
118BAD !
119
120NOSPLITSUGS
121
122PFX I N 1
123PFX I 0 in .
124
125PFX O Y 1
126PFX O 0 out .
127
128SFX S Y 2
129SFX S 0 s [^s]
130SFX S 0 es s
131
Bram Moolenaar53180ce2005-07-05 21:48:14 +0000132SFX N N 3
133SFX N 0 en [^n]
134SFX N 0 nen n
135SFX N 0 n .
136
Bram Moolenaar0dc065e2005-07-04 22:49:24 +0000137REP 3
138REP g ch
139REP ch g
140REP svp s.v.p.
141
142MAP 9
143MAP aàáâãäå
144MAP eèéêë
145MAP iìíîï
146MAP oòóôõö
147MAP uùúûü
148MAP nñ
149MAP cç
150MAP yÿý
151MAP sß
Bram Moolenaarac6e65f2005-08-29 22:25:38 +00001521affend
Bram Moolenaar0dc065e2005-07-04 22:49:24 +0000153
Bram Moolenaarac6e65f2005-08-29 22:25:38 +00001541good: wrong OK puts. Test the end
155bad: inputs comment ok Ok. test déôl end the
156badend
157
1581dicstart
159123456
160test/NO
161# comment
162wrong
163Comment
164OK
165uk
166put/ISO
167the end
168deol
169déôr
1701dicend
171
172affstart_sal
Bram Moolenaar0dc065e2005-07-04 22:49:24 +0000173SET ISO8859-1
174TRY esianrtolcdugmphbyfvkwjkqxz-ëéèêïîäàâöüû'ESIANRTOLCDUGMPHBYFVKWJKQXZ
175
176FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
177LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
178UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
179
180MIDWORD '-
181
182KEP =
183RAR ?
184BAD !
185
186NOSPLITSUGS
187
188PFX I N 1
189PFX I 0 in .
190
191PFX O Y 1
192PFX O 0 out .
193
194SFX S Y 2
195SFX S 0 s [^s]
196SFX S 0 es s
197
Bram Moolenaar53180ce2005-07-05 21:48:14 +0000198SFX N N 3
199SFX N 0 en [^n]
200SFX N 0 nen n
201SFX N 0 n .
202
Bram Moolenaar0dc065e2005-07-04 22:49:24 +0000203REP 3
204REP g ch
205REP ch g
206REP svp s.v.p.
207
208MAP 9
209MAP aàáâãäå
210MAP eèéêë
211MAP iìíîï
212MAP oòóôõö
213MAP uùúûü
214MAP nñ
215MAP cç
216MAP yÿý
217MAP sß
218
219SAL AH(AEIOUY)-^ *H
220SAL AR(AEIOUY)-^ *R
221SAL A(HR)^ *
222SAL A^ *
223SAL AH(AEIOUY)- H
224SAL AR(AEIOUY)- R
225SAL A(HR) _
226SAL À^ *
227SAL Å^ *
228SAL BB- _
229SAL B B
230SAL CQ- _
231SAL CIA X
232SAL CH X
233SAL C(EIY)- S
234SAL CK K
235SAL COUGH^ KF
236SAL CC< C
237SAL C K
238SAL DG(EIY) K
239SAL DD- _
240SAL D T
241SAL É< E
242SAL EH(AEIOUY)-^ *H
243SAL ER(AEIOUY)-^ *R
244SAL E(HR)^ *
245SAL ENOUGH^$ *NF
246SAL E^ *
247SAL EH(AEIOUY)- H
248SAL ER(AEIOUY)- R
249SAL E(HR) _
250SAL FF- _
251SAL F F
252SAL GN^ N
253SAL GN$ N
254SAL GNS$ NS
255SAL GNED$ N
256SAL GH(AEIOUY)- K
257SAL GH _
258SAL GG9 K
259SAL G K
260SAL H H
261SAL IH(AEIOUY)-^ *H
262SAL IR(AEIOUY)-^ *R
263SAL I(HR)^ *
264SAL I^ *
265SAL ING6 N
266SAL IH(AEIOUY)- H
267SAL IR(AEIOUY)- R
268SAL I(HR) _
269SAL J K
270SAL KN^ N
271SAL KK- _
272SAL K K
273SAL LAUGH^ LF
274SAL LL- _
275SAL L L
276SAL MB$ M
277SAL MM M
278SAL M M
279SAL NN- _
280SAL N N
281SAL OH(AEIOUY)-^ *H
282SAL OR(AEIOUY)-^ *R
283SAL O(HR)^ *
284SAL O^ *
285SAL OH(AEIOUY)- H
286SAL OR(AEIOUY)- R
287SAL O(HR) _
288SAL PH F
289SAL PN^ N
290SAL PP- _
291SAL P P
292SAL Q K
293SAL RH^ R
294SAL ROUGH^ RF
295SAL RR- _
296SAL R R
297SAL SCH(EOU)- SK
298SAL SC(IEY)- S
299SAL SH X
300SAL SI(AO)- X
301SAL SS- _
302SAL S S
303SAL TI(AO)- X
304SAL TH @
305SAL TCH-- _
306SAL TOUGH^ TF
307SAL TT- _
308SAL T T
309SAL UH(AEIOUY)-^ *H
310SAL UR(AEIOUY)-^ *R
311SAL U(HR)^ *
312SAL U^ *
313SAL UH(AEIOUY)- H
314SAL UR(AEIOUY)- R
315SAL U(HR) _
316SAL V^ W
317SAL V F
318SAL WR^ R
319SAL WH^ W
320SAL W(AEIOU)- W
321SAL X^ S
322SAL X KS
323SAL Y(AEIOU)- Y
324SAL ZZ- _
325SAL Z S
Bram Moolenaarac6e65f2005-08-29 22:25:38 +0000326affend_sal
Bram Moolenaar0dc065e2005-07-04 22:49:24 +0000327
Bram Moolenaarac6e65f2005-08-29 22:25:38 +00003282affstart
Bram Moolenaar53180ce2005-07-05 21:48:14 +0000329SET ISO8859-1
330
331FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
332LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
333UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
334
335PFXPOSTPONE
336
337MIDWORD '-
338
339KEP =
340RAR ?
341BAD !
342
343NOSPLITSUGS
344
345PFX I N 1
346PFX I 0 in .
347
348PFX O Y 1
Bram Moolenaar78984f52005-08-01 07:19:10 +0000349PFX O 0 out [a-z]
Bram Moolenaar53180ce2005-07-05 21:48:14 +0000350
351SFX S Y 2
352SFX S 0 s [^s]
353SFX S 0 es s
354
355SFX N N 3
356SFX N 0 en [^n]
357SFX N 0 nen n
358SFX N 0 n .
359
360REP 3
361REP g ch
362REP ch g
363REP svp s.v.p.
364
365MAP 9
366MAP aàáâãäå
367MAP eèéêë
368MAP iìíîï
369MAP oòóôõö
370MAP uùúûü
371MAP nñ
372MAP cç
373MAP yÿý
374MAP sß
Bram Moolenaarac6e65f2005-08-29 22:25:38 +00003752affend
Bram Moolenaar53180ce2005-07-05 21:48:14 +0000376
Bram Moolenaarac6e65f2005-08-29 22:25:38 +00003772good: puts
378bad: inputs comment ok Ok end the. test déôl
379badend
Bram Moolenaar0dc065e2005-07-04 22:49:24 +0000380
Bram Moolenaarac6e65f2005-08-29 22:25:38 +0000381addstart
382/regions=usgbnz
383elequint/2
384elekwint/3
385addend
386
387test2:
388elequint test elekwint test elekwent asdf
389
390Test rules for compounding.
391
3923affstart
393SET ISO8859-1
394
395COMPOUNDMIN 3
396COMPOUNDFLAGS m*
397NEEDCOMPOUND x
3983affend
399
4003dicstart
4011234
402foo/m
403bar/mx
404mï/m
405la/mx
4063dicend
407
4083good: foo mï foobar foofoobar barfoo barbarfoo
409bad: bar la foomï barmï mïfoo mïbar mïmï lala mïla lamï foola labar
410badend
411
412
413Tests for compounding.
414
4154affstart
Bram Moolenaard52d9742005-08-21 22:20:28 +0000416SET ISO8859-1
417
418FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
419LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
420UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
421
422COMPOUNDFLAGS m+
423COMPOUNDFLAGS sm*e
424COMPOUNDFLAGS sm+
425COMPOUNDMIN 3
426COMPOUNDMAX 3
427
428COMPOUNDSYLMAX 5
429SYLLABLE aáeéiíoóöõuúüûy/aa/au/ea/ee/ei/ie/oa/oe/oo/ou/uu/ui
430
431MAP 9
432MAP aàáâãäå
433MAP eèéêë
434MAP iìíîï
435MAP oòóôõö
436MAP uùúûü
437MAP nñ
438MAP cç
439MAP yÿý
440MAP sß
441
442NEEDAFFIX x
443
444PFXPOSTPONE
445
446MIDWORD '-
447
448SFX q N 1
449SFX q 0 -ok .
450
451SFX a Y 2
452SFX a 0 s .
453SFX a 0 ize . nocomp
454
455PFX p N 1
456PFX p 0 pre .
Bram Moolenaarac6e65f2005-08-29 22:25:38 +00004574affend
Bram Moolenaard52d9742005-08-21 22:20:28 +0000458
Bram Moolenaarac6e65f2005-08-29 22:25:38 +00004594dicstart
Bram Moolenaard52d9742005-08-21 22:20:28 +00004601234
461word/m
462util/am
463pro/xq
464tomato/m
465bork/mp
466start/s
467end/e
Bram Moolenaarac6e65f2005-08-29 22:25:38 +00004684dicend
Bram Moolenaard52d9742005-08-21 22:20:28 +0000469
Bram Moolenaarac6e65f2005-08-29 22:25:38 +00004704good: word util bork prebork start end wordutil wordutils pro-ok
471 bork borkbork borkborkbork borkborkborkbork borkborkborkborkbork
472 tomato tomatotomato startend startword startwordword startwordend
473 startwordwordend startwordwordwordend prebork preborkprebork
474 preborkborkprebork preborkpreborkbork
475bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomato
476 endstart endend startstart wordend wordstart
477 startwordwordwordwordend borkpreborkpreborkbork
478badend
Bram Moolenaar0dc065e2005-07-04 22:49:24 +0000479
Bram Moolenaarda2303d2005-08-30 21:55:26 +0000480Test affix flags with two characters
481
4825affstart
483SET ISO8859-1
484
485FLAG long
486
487NEEDAFFIX !!
488
489COMPOUNDFLAGS ssmm*ee
490
491NEEDCOMPOUND xx
492
493SFX 13 Y 1
494SFX 13 0 bork .
495
496SFX a1 Y 1
497SFX a1 0 a1 .
498
499SFX aé Y 1
500SFX aé 0 aé .
501
502PFX zz Y 1
503PFX zz 0 pre .
5045affend
505
5065dicstart
5071234
508foo/a1aé!!
509bar/zz13ee
510start/ss
511end/ee
512middle/mmxx
5135dicend
514
5155good: fooa1 fooaé bar prebar barbork prebarbork startprebar
516 start end startend startmiddleend
517bad: foo fooa2 prabar probarbirk middle startmiddle middleend endstart
518 startprobar
519badend
520
5216affstart
522SET ISO8859-1
523
524FLAG caplong
525
526NEEDAFFIX A!
527
528COMPOUNDFLAGS sMm*Ee
529
530NEEDCOMPOUND Xx
531
532SFX N3 Y 1
533SFX N3 0 bork .
534
535SFX A1 Y 1
536SFX A1 0 a1 .
537
538SFX Aé Y 1
539SFX Aé 0 aé .
540
541PFX Zz Y 1
542PFX Zz 0 pre .
5436affend
544
5456dicstart
5461234
547mee/A1AéA!
548bar/ZzN3Ee
549lead/s
550end/Ee
551middle/MmXx
5526dicend
553
5546good: meea1 meeaé bar prebar barbork prebarbork leadprebar
555 lead end leadend leadmiddleend
556bad: mee meea2 prabar probarbirk middle leadmiddle middleend endlead
557 leadprobar
558badend
559
5607affstart
561SET ISO8859-1
562
563FLAG num
564
565NEEDAFFIX 9999
566
567COMPOUNDFLAGS 2,77*123
568
569NEEDCOMPOUND 1
570
571SFX 61003 Y 1
572SFX 61003 0 meat .
573
574SFX 391 Y 1
575SFX 391 0 a1 .
576
577SFX 111 Y 1
578SFX 111 0 aé .
579
580PFX 17 Y 1
581PFX 17 0 pre .
5827affend
583
5847dicstart
5851234
586mee/391,111,9999
587bar/17,61003,123
588lead/2
589tail/123
590middle/77,1
5917dicend
592
5937good: meea1 meeaé bar prebar barmeat prebarmeat leadprebar
594 lead tail leadtail leadmiddletail
595bad: mee meea2 prabar probarmaat middle leadmiddle middletail taillead
596 leadprobar
597badend
598
Bram Moolenaar0dc065e2005-07-04 22:49:24 +0000599test output: