blob: e3de1d63056a66712189b103b045f3acf2bb5d37 [file] [log] [blame]
Bram Moolenaar53180ce2005-07-05 21:48:14 +00001Tests for spell checking with 'encoding' set to "utf-8". vim: set ft=vim :
2
3STARTTEST
4:so small.vim
5:so mbyte.vim
6:"
Bram Moolenaar8d343302005-07-12 22:46:17 +00007:" Don't want to depend on the locale from the environment. The .aff and .dic
8:" text is in latin1, the test text is utf-8.
9:set enc=latin1
10:e!
Bram Moolenaar53180ce2005-07-05 21:48:14 +000011:set enc=utf-8
Bram Moolenaarac6e65f2005-08-29 22:25:38 +000012:set fenc=
Bram Moolenaar53180ce2005-07-05 21:48:14 +000013:"
Bram Moolenaarac6e65f2005-08-29 22:25:38 +000014:" Function to test .aff/.dic with list of good and bad words.
15:func TestOne(aff, dic)
16 set spellfile=
17 $put =''
18 $put ='test '. a:aff . '-' . a:dic
19 " Generate a .spl file from a .dic and .aff file.
20 exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
21 exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
22 mkspell! Xtest Xtest
23 " use that spell file
24 set spl=Xtest.utf-8.spl spell
25 " list all valid words
26 spelldump
27 %yank
28 quit
29 $put
30 $put ='-------'
31 " find all bad words and suggestions for them
32 exe '1;/^' . a:aff . 'good:'
33 normal 0f:]s
34 let prevbad = ''
35 while 1
Bram Moolenaar1e015462005-09-25 22:16:38 +000036 let [bad, a] = spellbadword()
Bram Moolenaarac6e65f2005-08-29 22:25:38 +000037 if bad == '' || bad == prevbad || bad == 'badend'
38 break
39 endif
40 let prevbad = bad
41 let lst = spellsuggest(bad, 3)
42 normal mm
43 $put =bad
44 $put =string(lst)
45 normal `m]s
46 endwhile
Bram Moolenaar53180ce2005-07-05 21:48:14 +000047endfunc
Bram Moolenaarac6e65f2005-08-29 22:25:38 +000048:"
49:call TestOne('1', '1')
Bram Moolenaar53180ce2005-07-05 21:48:14 +000050:$put =soundfold('goobledygoook')
51:$put =soundfold('kóopërÿnôven')
52:$put =soundfold('oeverloos gezwets edale')
53:"
Bram Moolenaarac6e65f2005-08-29 22:25:38 +000054:"
Bram Moolenaar53180ce2005-07-05 21:48:14 +000055:" and now with SAL instead of SOFO items; test automatic reloading
Bram Moolenaarac6e65f2005-08-29 22:25:38 +000056gg:/^affstart_sal/+1,/^affend_sal/-1w! Xtest.aff
Bram Moolenaar53180ce2005-07-05 21:48:14 +000057:mkspell! Xtest Xtest
58:$put =soundfold('goobledygoook')
59:$put =soundfold('kóopërÿnôven')
60:$put =soundfold('oeverloos gezwets edale')
61:"
62:" also use an addition file
63gg:/^addstart/+1,/^addend/-1w! Xtest.utf-8.add
64:mkspell! Xtest.utf-8.add.spl Xtest.utf-8.add
Bram Moolenaar53180ce2005-07-05 21:48:14 +000065:set spellfile=Xtest.utf-8.add
66/^test2:
Bram Moolenaar1e015462005-09-25 22:16:38 +000067]s:let [str, a] = spellbadword()
Bram Moolenaar53180ce2005-07-05 21:48:14 +000068:$put =str
Bram Moolenaarbbebc852005-07-18 21:47:53 +000069:set spl=Xtest_us.utf-8.spl
Bram Moolenaar53180ce2005-07-05 21:48:14 +000070/^test2:
Bram Moolenaar1e015462005-09-25 22:16:38 +000071]smm:let [str, a] = spellbadword()
Bram Moolenaar53180ce2005-07-05 21:48:14 +000072:$put =str
Bram Moolenaar1e015462005-09-25 22:16:38 +000073`m]s:let [str, a] = spellbadword()
Bram Moolenaar53180ce2005-07-05 21:48:14 +000074:$put =str
Bram Moolenaarbbebc852005-07-18 21:47:53 +000075:set spl=Xtest_gb.utf-8.spl
Bram Moolenaar53180ce2005-07-05 21:48:14 +000076/^test2:
Bram Moolenaar1e015462005-09-25 22:16:38 +000077]smm:let [str, a] = spellbadword()
Bram Moolenaar53180ce2005-07-05 21:48:14 +000078:$put =str
Bram Moolenaar1e015462005-09-25 22:16:38 +000079`m]s:let [str, a] = spellbadword()
Bram Moolenaar53180ce2005-07-05 21:48:14 +000080:$put =str
Bram Moolenaarbbebc852005-07-18 21:47:53 +000081:set spl=Xtest_nz.utf-8.spl
Bram Moolenaar53180ce2005-07-05 21:48:14 +000082/^test2:
Bram Moolenaar1e015462005-09-25 22:16:38 +000083]smm:let [str, a] = spellbadword()
Bram Moolenaar53180ce2005-07-05 21:48:14 +000084:$put =str
Bram Moolenaar1e015462005-09-25 22:16:38 +000085`m]s:let [str, a] = spellbadword()
Bram Moolenaar53180ce2005-07-05 21:48:14 +000086:$put =str
Bram Moolenaarbbebc852005-07-18 21:47:53 +000087:set spl=Xtest_ca.utf-8.spl
Bram Moolenaar53180ce2005-07-05 21:48:14 +000088/^test2:
Bram Moolenaar1e015462005-09-25 22:16:38 +000089]smm:let [str, a] = spellbadword()
Bram Moolenaar53180ce2005-07-05 21:48:14 +000090:$put =str
Bram Moolenaar1e015462005-09-25 22:16:38 +000091`m]s:let [str, a] = spellbadword()
Bram Moolenaar53180ce2005-07-05 21:48:14 +000092:$put =str
93:"
94:" Postponed prefixes
Bram Moolenaarac6e65f2005-08-29 22:25:38 +000095:call TestOne('2', '1')
96:"
97:" Compound words
98:call TestOne('3', '3')
99:call TestOne('4', '4')
Bram Moolenaarda2303d2005-08-30 21:55:26 +0000100:call TestOne('5', '5')
101:call TestOne('6', '6')
102:call TestOne('7', '7')
Bram Moolenaar53180ce2005-07-05 21:48:14 +0000103:"
104gg:/^test output:/,$wq! test.out
105ENDTEST
106
Bram Moolenaarac6e65f2005-08-29 22:25:38 +00001071affstart
Bram Moolenaar53180ce2005-07-05 21:48:14 +0000108SET ISO8859-1
109TRY esianrtolcdugmphbyfvkwjkqxz-ëéèêïîäàâöüû'ESIANRTOLCDUGMPHBYFVKWJKQXZ
110
111FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
112LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
113UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
114
115SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
116SOFOTO ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
117
118MIDWORD '-
119
120KEP =
121RAR ?
122BAD !
123
124NOSPLITSUGS
125
126PFX I N 1
127PFX I 0 in .
128
129PFX O Y 1
130PFX O 0 out .
131
132SFX S Y 2
133SFX S 0 s [^s]
134SFX S 0 es s
135
136SFX N N 3
137SFX N 0 en [^n]
138SFX N 0 nen n
139SFX N 0 n .
140
141REP 3
142REP g ch
143REP ch g
144REP svp s.v.p.
145
146MAP 9
147MAP aàáâãäå
148MAP eèéêë
149MAP iìíîï
150MAP oòóôõö
151MAP uùúûü
152MAP nñ
153MAP cç
154MAP yÿý
155MAP sß
Bram Moolenaarac6e65f2005-08-29 22:25:38 +00001561affend
Bram Moolenaar53180ce2005-07-05 21:48:14 +0000157
Bram Moolenaarac6e65f2005-08-29 22:25:38 +0000158affstart_sal
Bram Moolenaar53180ce2005-07-05 21:48:14 +0000159SET ISO8859-1
160TRY esianrtolcdugmphbyfvkwjkqxz-ëéèêïîäàâöüû'ESIANRTOLCDUGMPHBYFVKWJKQXZ
161
162FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
163LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
164UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
165
166MIDWORD '-
167
168KEP =
169RAR ?
170BAD !
171
172NOSPLITSUGS
173
174PFX I N 1
175PFX I 0 in .
176
177PFX O Y 1
178PFX O 0 out .
179
180SFX S Y 2
181SFX S 0 s [^s]
182SFX S 0 es s
183
184SFX N N 3
185SFX N 0 en [^n]
186SFX N 0 nen n
187SFX N 0 n .
188
189REP 3
190REP g ch
191REP ch g
192REP svp s.v.p.
193
194MAP 9
195MAP aàáâãäå
196MAP eèéêë
197MAP iìíîï
198MAP oòóôõö
199MAP uùúûü
200MAP nñ
201MAP cç
202MAP yÿý
203MAP sß
204
205SAL AH(AEIOUY)-^ *H
206SAL AR(AEIOUY)-^ *R
207SAL A(HR)^ *
208SAL A^ *
209SAL AH(AEIOUY)- H
210SAL AR(AEIOUY)- R
211SAL A(HR) _
212SAL À^ *
213SAL Å^ *
214SAL BB- _
215SAL B B
216SAL CQ- _
217SAL CIA X
218SAL CH X
219SAL C(EIY)- S
220SAL CK K
221SAL COUGH^ KF
222SAL CC< C
223SAL C K
224SAL DG(EIY) K
225SAL DD- _
226SAL D T
227SAL É< E
228SAL EH(AEIOUY)-^ *H
229SAL ER(AEIOUY)-^ *R
230SAL E(HR)^ *
231SAL ENOUGH^$ *NF
232SAL E^ *
233SAL EH(AEIOUY)- H
234SAL ER(AEIOUY)- R
235SAL E(HR) _
236SAL FF- _
237SAL F F
238SAL GN^ N
239SAL GN$ N
240SAL GNS$ NS
241SAL GNED$ N
242SAL GH(AEIOUY)- K
243SAL GH _
244SAL GG9 K
245SAL G K
246SAL H H
247SAL IH(AEIOUY)-^ *H
248SAL IR(AEIOUY)-^ *R
249SAL I(HR)^ *
250SAL I^ *
251SAL ING6 N
252SAL IH(AEIOUY)- H
253SAL IR(AEIOUY)- R
254SAL I(HR) _
255SAL J K
256SAL KN^ N
257SAL KK- _
258SAL K K
259SAL LAUGH^ LF
260SAL LL- _
261SAL L L
262SAL MB$ M
263SAL MM M
264SAL M M
265SAL NN- _
266SAL N N
267SAL OH(AEIOUY)-^ *H
268SAL OR(AEIOUY)-^ *R
269SAL O(HR)^ *
270SAL O^ *
271SAL OH(AEIOUY)- H
272SAL OR(AEIOUY)- R
273SAL O(HR) _
274SAL PH F
275SAL PN^ N
276SAL PP- _
277SAL P P
278SAL Q K
279SAL RH^ R
280SAL ROUGH^ RF
281SAL RR- _
282SAL R R
283SAL SCH(EOU)- SK
284SAL SC(IEY)- S
285SAL SH X
286SAL SI(AO)- X
287SAL SS- _
288SAL S S
289SAL TI(AO)- X
290SAL TH @
291SAL TCH-- _
292SAL TOUGH^ TF
293SAL TT- _
294SAL T T
295SAL UH(AEIOUY)-^ *H
296SAL UR(AEIOUY)-^ *R
297SAL U(HR)^ *
298SAL U^ *
299SAL UH(AEIOUY)- H
300SAL UR(AEIOUY)- R
301SAL U(HR) _
302SAL V^ W
303SAL V F
304SAL WR^ R
305SAL WH^ W
306SAL W(AEIOU)- W
307SAL X^ S
308SAL X KS
309SAL Y(AEIOU)- Y
310SAL ZZ- _
311SAL Z S
Bram Moolenaarac6e65f2005-08-29 22:25:38 +0000312affend_sal
Bram Moolenaar53180ce2005-07-05 21:48:14 +0000313
Bram Moolenaarac6e65f2005-08-29 22:25:38 +00003142affstart
Bram Moolenaar53180ce2005-07-05 21:48:14 +0000315SET ISO8859-1
316
317FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
318LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
319UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
320
321PFXPOSTPONE
322
323MIDWORD '-
324
325KEP =
326RAR ?
327BAD !
328
329NOSPLITSUGS
330
331PFX I N 1
332PFX I 0 in .
333
334PFX O Y 1
Bram Moolenaar78984f52005-08-01 07:19:10 +0000335PFX O 0 out [a-z]
Bram Moolenaar53180ce2005-07-05 21:48:14 +0000336
337SFX S Y 2
338SFX S 0 s [^s]
339SFX S 0 es s
340
341SFX N N 3
342SFX N 0 en [^n]
343SFX N 0 nen n
344SFX N 0 n .
345
346REP 3
347REP g ch
348REP ch g
349REP svp s.v.p.
350
351MAP 9
352MAP aàáâãäå
353MAP eèéêë
354MAP iìíîï
355MAP oòóôõö
356MAP uùúûü
357MAP nñ
358MAP cç
359MAP yÿý
360MAP sß
Bram Moolenaarac6e65f2005-08-29 22:25:38 +00003612affend
Bram Moolenaar53180ce2005-07-05 21:48:14 +0000362
Bram Moolenaarac6e65f2005-08-29 22:25:38 +00003631dicstart
Bram Moolenaar53180ce2005-07-05 21:48:14 +0000364123456
365test/NO
366# comment
367wrong
368Comment
369OK
370uk
371put/ISO
372the end
373deol
374déôr
Bram Moolenaarac6e65f2005-08-29 22:25:38 +00003751dicend
Bram Moolenaar53180ce2005-07-05 21:48:14 +0000376
377addstart
378/regions=usgbnz
379elequint/2
380elekwint/3
381addend
382
Bram Moolenaarac6e65f2005-08-29 22:25:38 +00003831good: wrong OK puts. Test the end
384bad: inputs comment ok Ok. test déôl end the
385badend
386
3872good: puts
388bad: inputs comment ok Ok end the. test déôl
389badend
390
391Test rules for compounding.
392
3933affstart
394SET ISO8859-1
395
396COMPOUNDMIN 3
397COMPOUNDFLAGS m*
398NEEDCOMPOUND x
3993affend
400
4013dicstart
4021234
403foo/m
404bar/mx
405mï/m
406la/mx
4073dicend
408
4093good: foo mï foobar foofoobar barfoo barbarfoo
410bad: bar la foomï barmï mïfoo mïbar mïmï lala mïla lamï foola labar
411badend
412
413
414Tests for compounding.
415
4164affstart
417SET ISO8859-1
418
419FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
420LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
421UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
422
423COMPOUNDFLAGS m+
424COMPOUNDFLAGS sm*e
425COMPOUNDFLAGS sm+
426COMPOUNDMIN 3
427COMPOUNDMAX 3
428
429COMPOUNDSYLMAX 5
430SYLLABLE aáeéiíoóöõuúüûy/aa/au/ea/ee/ei/ie/oa/oe/oo/ou/uu/ui
431
432MAP 9
433MAP aàáâãäå
434MAP eèéêë
435MAP iìíîï
436MAP oòóôõö
437MAP uùúûü
438MAP nñ
439MAP cç
440MAP yÿý
441MAP sß
442
443NEEDAFFIX x
444
445PFXPOSTPONE
446
447MIDWORD '-
448
449SFX q N 1
450SFX q 0 -ok .
451
452SFX a Y 2
453SFX a 0 s .
454SFX a 0 ize . nocomp
455
456PFX p N 1
457PFX p 0 pre .
4584affend
459
4604dicstart
4611234
462word/m
463util/am
464pro/xq
465tomato/m
466bork/mp
467start/s
468end/e
4694dicend
470
4714good: word util bork prebork start end wordutil wordutils pro-ok
472 bork borkbork borkborkbork borkborkborkbork borkborkborkborkbork
473 tomato tomatotomato startend startword startwordword startwordend
474 startwordwordend startwordwordwordend prebork preborkprebork
475 preborkborkprebork preborkpreborkbork
476bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomato
477 endstart endend startstart wordend wordstart
478 startwordwordwordwordend borkpreborkpreborkbork
479badend
Bram Moolenaar53180ce2005-07-05 21:48:14 +0000480
481test2:
482elequint test elekwint test elekwent asdf
483
Bram Moolenaarda2303d2005-08-30 21:55:26 +0000484Test affix flags with two characters
485
4865affstart
487SET ISO8859-1
488
489FLAG long
490
491NEEDAFFIX !!
492
493COMPOUNDFLAGS ssmm*ee
494
495NEEDCOMPOUND xx
496
497SFX 13 Y 1
498SFX 13 0 bork .
499
500SFX a1 Y 1
501SFX a1 0 a1 .
502
503SFX aé Y 1
504SFX aé 0 aé .
505
506PFX zz Y 1
507PFX zz 0 pre .
5085affend
509
5105dicstart
5111234
512foo/a1aé!!
513bar/zz13ee
514start/ss
515end/ee
516middle/mmxx
5175dicend
518
5195good: fooa1 fooaé bar prebar barbork prebarbork startprebar
520 start end startend startmiddleend
521bad: foo fooa2 prabar probarbirk middle startmiddle middleend endstart
522 startprobar
523badend
524
5256affstart
526SET ISO8859-1
527
528FLAG caplong
529
530NEEDAFFIX A!
531
532COMPOUNDFLAGS sMm*Ee
533
534NEEDCOMPOUND Xx
535
536SFX N3 Y 1
537SFX N3 0 bork .
538
539SFX A1 Y 1
540SFX A1 0 a1 .
541
542SFX Aé Y 1
543SFX Aé 0 aé .
544
545PFX Zz Y 1
546PFX Zz 0 pre .
5476affend
548
5496dicstart
5501234
551mee/A1AéA!
552bar/ZzN3Ee
553lead/s
554end/Ee
555middle/MmXx
5566dicend
557
5586good: meea1 meeaé bar prebar barbork prebarbork leadprebar
559 lead end leadend leadmiddleend
560bad: mee meea2 prabar probarbirk middle leadmiddle middleend endlead
561 leadprobar
562badend
563
5647affstart
565SET ISO8859-1
566
567FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
568LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
569UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
570
571FLAG num
572
573NEEDAFFIX 9999
574
575COMPOUNDFLAGS 2,77*123
576
577NEEDCOMPOUND 1
578
579SFX 61003 Y 1
580SFX 61003 0 meat .
581
582SFX 391 Y 1
583SFX 391 0 a1 .
584
585SFX 111 Y 1
586SFX 111 0 aé .
587
588PFX 17 Y 1
589PFX 17 0 pre .
5907affend
591
5927dicstart
5931234
594mee/391,111,9999
595bar/17,61003,123
596lead/2
597tail/123
598middle/77,1
5997dicend
600
6017good: meea1 meeaé bar prebar barmeat prebarmeat leadprebar
602 lead tail leadtail leadmiddletail
603bad: mee meea2 prabar probarmaat middle leadmiddle middletail taillead
604 leadprobar
605badend
606
Bram Moolenaar53180ce2005-07-05 21:48:14 +0000607test output: