mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			1011 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			1011 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| -- Tests for spell checking with 'encoding' set to "utf-8".
 | |
| 
 | |
| local helpers = require('test.functional.helpers')(after_each)
 | |
| local feed, insert, source = helpers.feed, helpers.insert, helpers.source
 | |
| local clear, feed_command, expect = helpers.clear, helpers.feed_command, helpers.expect
 | |
| local write_file, call = helpers.write_file, helpers.call
 | |
| 
 | |
| local function write_latin1(name, text)
 | |
|   text = call('iconv', text, 'utf-8', 'latin-1')
 | |
|   write_file(name, text)
 | |
| end
 | |
| 
 | |
| describe("spell checking with 'encoding' set to utf-8", function()
 | |
|   setup(function()
 | |
|     clear()
 | |
|     feed_command("syntax off")
 | |
|     write_latin1('Xtest1.aff',[[
 | |
|       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ß
 | |
|       ]])
 | |
|     write_latin1('Xtest1.dic', [[
 | |
|       123456
 | |
|       test/NO
 | |
|       # comment
 | |
|       wrong
 | |
|       Comment
 | |
|       OK
 | |
|       uk
 | |
|       put/ISO
 | |
|       the end
 | |
|       deol
 | |
|       déôr
 | |
|       ]])
 | |
|     write_latin1('Xtest2.aff', [[
 | |
|       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ß
 | |
|       ]])
 | |
|     write_latin1('Xtest3.aff', [[
 | |
|       SET ISO8859-1
 | |
| 
 | |
|       COMPOUNDMIN 3
 | |
|       COMPOUNDRULE m*
 | |
|       NEEDCOMPOUND x
 | |
|       ]])
 | |
|     write_latin1('Xtest3.dic', [[
 | |
|       1234
 | |
|       foo/m
 | |
|       bar/mx
 | |
|       mï/m
 | |
|       la/mx
 | |
|       ]])
 | |
|     write_latin1('Xtest4.aff', [[
 | |
|       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 .
 | |
|       ]])
 | |
|     write_latin1('Xtest4.dic', [[
 | |
|       1234
 | |
|       word/mP
 | |
|       util/am
 | |
|       pro/xq
 | |
|       tomato/m
 | |
|       bork/mp
 | |
|       start/s
 | |
|       end/e
 | |
|       ]])
 | |
|     write_latin1('Xtest5.aff', [[
 | |
|       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 .
 | |
|       ]])
 | |
|     write_latin1('Xtest5.dic', [[
 | |
|       1234
 | |
|       foo/a1aé!!
 | |
|       bar/zz13ee
 | |
|       start/ss
 | |
|       end/eeyy
 | |
|       middle/mmxx
 | |
|       ]])
 | |
|     write_latin1('Xtest6.aff', [[
 | |
|       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 .
 | |
|       ]])
 | |
|     write_latin1('Xtest6.dic', [[
 | |
|       1234
 | |
|       mee/A1AéA!
 | |
|       bar/ZzN3Ee
 | |
|       lead/s
 | |
|       end/Ee
 | |
|       middle/MmXx
 | |
|       ]])
 | |
|     write_latin1('Xtest7.aff', [[
 | |
|       SET ISO8859-1
 | |
| 
 | |
|       FOL  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
 | |
|       LOW  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
 | |
|       UPP  ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
 | |
| 
 | |
|       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 .
 | |
|       ]])
 | |
|     write_latin1('Xtest7.dic', [[
 | |
|       1234
 | |
|       mee/391,111,9999
 | |
|       bar/17,61003,123
 | |
|       lead/2
 | |
|       tail/123
 | |
|       middle/77,1
 | |
|       ]])
 | |
|     write_latin1('Xtest8.aff', [[
 | |
|       SET ISO8859-1
 | |
| 
 | |
|       NOSPLITSUGS
 | |
|       ]])
 | |
|     write_latin1('Xtest8.dic', [[
 | |
|       1234
 | |
|       foo
 | |
|       bar
 | |
|       faabar
 | |
|       ]])
 | |
|     write_latin1('Xtest9.aff', [[
 | |
|       ]])
 | |
|     write_latin1('Xtest9.dic', [[
 | |
|       1234
 | |
|       foo
 | |
|       bar
 | |
|       ]])
 | |
|     write_latin1('Xtest-sal.aff', [[
 | |
|       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
 | |
|       ]])
 | |
|     write_file('Xtest.utf-8.add', [[
 | |
|       /regions=usgbnz
 | |
|       elequint/2
 | |
|       elekwint/3
 | |
|       ]])
 | |
|   end)
 | |
| 
 | |
|   teardown(function()
 | |
|     os.remove('Xtest-sal.aff')
 | |
|     os.remove('Xtest.aff')
 | |
|     os.remove('Xtest.dic')
 | |
|     os.remove('Xtest.utf-8.add')
 | |
|     os.remove('Xtest.utf-8.add.spl')
 | |
|     os.remove('Xtest.utf-8.spl')
 | |
|     os.remove('Xtest.utf-8.sug')
 | |
|     os.remove('Xtest1.aff')
 | |
|     os.remove('Xtest1.dic')
 | |
|     os.remove('Xtest2.aff')
 | |
|     os.remove('Xtest3.aff')
 | |
|     os.remove('Xtest3.dic')
 | |
|     os.remove('Xtest4.aff')
 | |
|     os.remove('Xtest4.dic')
 | |
|     os.remove('Xtest5.aff')
 | |
|     os.remove('Xtest5.dic')
 | |
|     os.remove('Xtest6.aff')
 | |
|     os.remove('Xtest6.dic')
 | |
|     os.remove('Xtest7.aff')
 | |
|     os.remove('Xtest7.dic')
 | |
|     os.remove('Xtest8.aff')
 | |
|     os.remove('Xtest8.dic')
 | |
|     os.remove('Xtest9.aff')
 | |
|     os.remove('Xtest9.dic')
 | |
|   end)
 | |
| 
 | |
|   -- Function to test .aff/.dic with list of good and bad words.  This was a
 | |
|   -- Vim function in the original legacy test.
 | |
|   local function test_one(aff, dic)
 | |
|     -- Generate a .spl file from a .dic and .aff file.
 | |
|     if helpers.iswin() then
 | |
|       os.execute('copy /y Xtest'..aff..'.aff Xtest.aff')
 | |
|       os.execute('copy /y Xtest'..dic..'.dic Xtest.dic')
 | |
|     else
 | |
|       os.execute('cp -f Xtest'..aff..'.aff Xtest.aff')
 | |
|       os.execute('cp -f Xtest'..dic..'.dic Xtest.dic')
 | |
|     end
 | |
|     source([[
 | |
|       set spellfile=
 | |
|       function! SpellDumpNoShow()
 | |
|         " spelling scores depend on what happens to be drawn on screen
 | |
|         spelldump
 | |
|         %yank
 | |
|         quit
 | |
|       endfunction
 | |
|       $put =''
 | |
|       $put ='test ]]..aff..'-'..dic..[['
 | |
|       mkspell! Xtest Xtest
 | |
|       "  Use that spell file.
 | |
|       set spl=Xtest.utf-8.spl spell
 | |
|       "  List all valid words.
 | |
|       call SpellDumpNoShow()
 | |
|       $put
 | |
|       $put ='-------'
 | |
|       "  Find all bad words and suggestions for them.
 | |
|       1;/^]]..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
 | |
|       ]])
 | |
|   end
 | |
| 
 | |
|   it('part 1-1', function()
 | |
|     insert([[
 | |
|       1good: wrong OK puts. Test the end
 | |
|       bad:  inputs comment ok Ok. test déôl end the
 | |
|       badend
 | |
| 
 | |
|       test2:
 | |
|       elequint test elekwint test elekwent asdf
 | |
|       ]])
 | |
|     test_one(1, 1)
 | |
|     feed_command([[$put =soundfold('goobledygoook')]])
 | |
|     feed_command([[$put =soundfold('kóopërÿnôven')]])
 | |
|     feed_command([[$put =soundfold('oeverloos gezwets edale')]])
 | |
|     -- And now with SAL instead of SOFO items; test automatic reloading.
 | |
|     if helpers.iswin() then
 | |
|       os.execute('copy /y Xtest-sal.aff Xtest.aff')
 | |
|     else
 | |
|       os.execute('cp -f Xtest-sal.aff Xtest.aff')
 | |
|     end
 | |
|     feed_command('mkspell! Xtest Xtest')
 | |
|     feed_command([[$put =soundfold('goobledygoook')]])
 | |
|     feed_command([[$put =soundfold('kóopërÿnôven')]])
 | |
|     feed_command([[$put =soundfold('oeverloos gezwets edale')]])
 | |
|     -- Also use an addition file.
 | |
|     feed_command('mkspell! Xtest.utf-8.add.spl Xtest.utf-8.add')
 | |
|     feed_command('set spellfile=Xtest.utf-8.add')
 | |
|     feed_command('/^test2:')
 | |
|     feed(']s')
 | |
|     feed_command('let [str, a] = spellbadword()')
 | |
|     feed_command('$put =str')
 | |
|     feed_command('set spl=Xtest_us.utf-8.spl')
 | |
|     feed_command('/^test2:')
 | |
|     feed(']smm')
 | |
|     feed_command('let [str, a] = spellbadword()')
 | |
|     feed_command('$put =str')
 | |
|     feed('`m]s')
 | |
|     feed_command('let [str, a] = spellbadword()')
 | |
|     feed_command('$put =str')
 | |
|     feed_command('set spl=Xtest_gb.utf-8.spl')
 | |
|     feed_command('/^test2:')
 | |
|     feed(']smm')
 | |
|     feed_command('let [str, a] = spellbadword()')
 | |
|     feed_command('$put =str')
 | |
|     feed('`m]s')
 | |
|     feed_command('let [str, a] = spellbadword()')
 | |
|     feed_command('$put =str')
 | |
|     feed_command('set spl=Xtest_nz.utf-8.spl')
 | |
|     feed_command('/^test2:')
 | |
|     feed(']smm')
 | |
|     feed_command('let [str, a] = spellbadword()')
 | |
|     feed_command('$put =str')
 | |
|     feed('`m]s')
 | |
|     feed_command('let [str, a] = spellbadword()')
 | |
|     feed_command('$put =str')
 | |
|     feed_command('set spl=Xtest_ca.utf-8.spl')
 | |
|     feed_command('/^test2:')
 | |
|     feed(']smm')
 | |
|     feed_command('let [str, a] = spellbadword()')
 | |
|     feed_command('$put =str')
 | |
|     feed('`m]s')
 | |
|     feed_command('let [str, a] = spellbadword()')
 | |
|     feed_command('$put =str')
 | |
|     feed_command('1,/^test 1-1/-1d')
 | |
|     expect([[
 | |
|       test 1-1
 | |
|       # file: Xtest.utf-8.spl
 | |
|       Comment
 | |
|       deol
 | |
|       déôr
 | |
|       input
 | |
|       OK
 | |
|       output
 | |
|       outputs
 | |
|       outtest
 | |
|       put
 | |
|       puts
 | |
|       test
 | |
|       testen
 | |
|       testn
 | |
|       the end
 | |
|       uk
 | |
|       wrong
 | |
|       -------
 | |
|       bad
 | |
|       ['put', 'uk', 'OK']
 | |
|       inputs
 | |
|       ['input', 'puts', 'outputs']
 | |
|       comment
 | |
|       ['Comment', 'outtest', 'the end']
 | |
|       ok
 | |
|       ['OK', 'uk', 'put']
 | |
|       Ok
 | |
|       ['OK', 'Uk', 'Put']
 | |
|       test
 | |
|       ['Test', 'testn', 'testen']
 | |
|       déôl
 | |
|       ['deol', 'déôr', 'test']
 | |
|       end
 | |
|       ['put', 'uk', 'test']
 | |
|       the
 | |
|       ['put', 'uk', 'test']
 | |
|       gebletegek
 | |
|       kepereneven
 | |
|       everles gesvets etele
 | |
|       kbltykk
 | |
|       kprnfn
 | |
|       *fls kswts tl
 | |
|       elekwent
 | |
|       elequint
 | |
|       elekwint
 | |
|       elekwint
 | |
|       elekwent
 | |
|       elequint
 | |
|       elekwent
 | |
|       elequint
 | |
|       elekwint]])
 | |
|   end)
 | |
| 
 | |
|   it('part 2-1', function()
 | |
|     insert([[
 | |
|       2good: puts
 | |
|       bad: inputs comment ok Ok end the. test déôl
 | |
|       badend
 | |
|       ]])
 | |
|     -- Postponed prefixes.
 | |
|     test_one(2, 1)
 | |
|     feed_command('1,/^test 2-1/-1d')
 | |
|     expect([=[
 | |
|       test 2-1
 | |
|       # file: Xtest.utf-8.spl
 | |
|       Comment
 | |
|       deol
 | |
|       déôr
 | |
|       OK
 | |
|       put
 | |
|       input
 | |
|       output
 | |
|       puts
 | |
|       outputs
 | |
|       test
 | |
|       outtest
 | |
|       testen
 | |
|       testn
 | |
|       the end
 | |
|       uk
 | |
|       wrong
 | |
|       -------
 | |
|       bad
 | |
|       ['put', 'uk', 'OK']
 | |
|       inputs
 | |
|       ['input', 'puts', 'outputs']
 | |
|       comment
 | |
|       ['Comment']
 | |
|       ok
 | |
|       ['OK', 'uk', 'put']
 | |
|       Ok
 | |
|       ['OK', 'Uk', 'Put']
 | |
|       end
 | |
|       ['put', 'uk', 'deol']
 | |
|       the
 | |
|       ['put', 'uk', 'test']
 | |
|       test
 | |
|       ['Test', 'testn', 'testen']
 | |
|       déôl
 | |
|       ['deol', 'déôr', 'test']]=])
 | |
|   end)
 | |
| 
 | |
|   it('part 3-3', function()
 | |
|     insert([[
 | |
|       Test rules for compounding.
 | |
| 
 | |
|       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
 | |
|       ]])
 | |
|     test_one(3, 3)
 | |
|     feed_command('1,/^test 3-3/-1d')
 | |
|     expect([=[
 | |
|       test 3-3
 | |
|       # file: Xtest.utf-8.spl
 | |
|       foo
 | |
|       mï
 | |
|       -------
 | |
|       bad
 | |
|       ['foo', 'mï']
 | |
|       bar
 | |
|       ['barfoo', 'foobar', 'foo']
 | |
|       la
 | |
|       ['mï', 'foo']
 | |
|       foomï
 | |
|       ['foo mï', 'foo', 'foofoo']
 | |
|       barmï
 | |
|       ['barfoo', 'mï', 'barbar']
 | |
|       mïfoo
 | |
|       ['mï foo', 'foo', 'foofoo']
 | |
|       mïbar
 | |
|       ['foobar', 'barbar', 'mï']
 | |
|       mïmï
 | |
|       ['mï mï', 'mï']
 | |
|       lala
 | |
|       []
 | |
|       mïla
 | |
|       ['mï', 'mï mï']
 | |
|       lamï
 | |
|       ['mï', 'mï mï']
 | |
|       foola
 | |
|       ['foo', 'foobar', 'foofoo']
 | |
|       labar
 | |
|       ['barbar', 'foobar']]=])
 | |
|   end)
 | |
| 
 | |
|   it('part 4-4', function()
 | |
|     insert([[
 | |
|       Tests for compounding.
 | |
| 
 | |
|       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_one(4, 4)
 | |
|     feed_command('1,/^test 4-4/-1d')
 | |
|     expect([=[
 | |
|       test 4-4
 | |
|       # file: Xtest.utf-8.spl
 | |
|       bork
 | |
|       prebork
 | |
|       end
 | |
|       pro-ok
 | |
|       start
 | |
|       tomato
 | |
|       util
 | |
|       utilize
 | |
|       utils
 | |
|       word
 | |
|       nouword
 | |
|       -------
 | |
|       bad
 | |
|       ['end', 'bork', 'word']
 | |
|       wordutilize
 | |
|       ['word utilize', 'wordutils', 'wordutil']
 | |
|       pro
 | |
|       ['bork', 'word', 'end']
 | |
|       borkborkborkborkborkbork
 | |
|       ['bork borkborkborkborkbork', 'borkbork borkborkborkbork', 'borkborkbork borkborkbork']
 | |
|       tomatotomatotomato
 | |
|       ['tomato tomatotomato', 'tomatotomato tomato', 'tomato tomato tomato']
 | |
|       endstart
 | |
|       ['end start', 'start']
 | |
|       endend
 | |
|       ['end end', 'end']
 | |
|       startstart
 | |
|       ['start start']
 | |
|       wordend
 | |
|       ['word end', 'word', 'wordword']
 | |
|       wordstart
 | |
|       ['word start', 'bork start']
 | |
|       preborkprebork
 | |
|       ['prebork prebork', 'preborkbork', 'preborkborkbork']
 | |
|       preborkpreborkbork
 | |
|       ['prebork preborkbork', 'preborkborkbork', 'preborkborkborkbork']
 | |
|       startwordwordwordwordend
 | |
|       ['startwordwordwordword end', 'startwordwordwordword', 'start wordwordwordword end']
 | |
|       borkpreborkpreborkbork
 | |
|       ['bork preborkpreborkbork', 'bork prebork preborkbork', 'bork preborkprebork bork']
 | |
|       utilsbork
 | |
|       ['utilbork', 'utils bork', 'util bork']
 | |
|       startnouword
 | |
|       ['start nouword', 'startword', 'startborkword']]=])
 | |
|   end)
 | |
| 
 | |
|   it('part 5-5', function()
 | |
|     insert([[
 | |
|       Test affix flags with two characters
 | |
| 
 | |
|       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
 | |
|       ]])
 | |
|     test_one(5, 5)
 | |
|     feed_command('1,/^test 5-5/-1d')
 | |
|     expect([=[
 | |
|       test 5-5
 | |
|       # file: Xtest.utf-8.spl
 | |
|       bar
 | |
|       barbork
 | |
|       end
 | |
|       fooa1
 | |
|       fooaé
 | |
|       nouend
 | |
|       prebar
 | |
|       prebarbork
 | |
|       start
 | |
|       -------
 | |
|       bad
 | |
|       ['bar', 'end', 'fooa1']
 | |
|       foo
 | |
|       ['fooa1', 'fooaé', 'bar']
 | |
|       fooa2
 | |
|       ['fooa1', 'fooaé', 'bar']
 | |
|       prabar
 | |
|       ['prebar', 'bar', 'bar bar']
 | |
|       probarbirk
 | |
|       ['prebarbork']
 | |
|       middle
 | |
|       []
 | |
|       startmiddle
 | |
|       ['startmiddleend', 'startmiddlebar']
 | |
|       middleend
 | |
|       []
 | |
|       endstart
 | |
|       ['end start', 'start']
 | |
|       startprobar
 | |
|       ['startprebar', 'start prebar', 'startbar']
 | |
|       startnouend
 | |
|       ['start nouend', 'startend']]=])
 | |
|   end)
 | |
| 
 | |
|   it('part 6-6', function()
 | |
|     insert([[
 | |
|       6good: meea1 meeaé bar prebar barbork prebarbork  leadprebar
 | |
|             lead end leadend  leadmiddleend
 | |
|       bad: mee meea2 prabar probarbirk middle leadmiddle middleend endlead
 | |
|             leadprobar
 | |
|       badend
 | |
|       ]])
 | |
|     test_one(6, 6)
 | |
|     feed_command('1,/^test 6-6/-1d')
 | |
|     expect([=[
 | |
|       test 6-6
 | |
|       # file: Xtest.utf-8.spl
 | |
|       bar
 | |
|       barbork
 | |
|       end
 | |
|       lead
 | |
|       meea1
 | |
|       meeaé
 | |
|       prebar
 | |
|       prebarbork
 | |
|       -------
 | |
|       bad
 | |
|       ['bar', 'end', 'lead']
 | |
|       mee
 | |
|       ['meea1', 'meeaé', 'bar']
 | |
|       meea2
 | |
|       ['meea1', 'meeaé', 'lead']
 | |
|       prabar
 | |
|       ['prebar', 'bar', 'leadbar']
 | |
|       probarbirk
 | |
|       ['prebarbork']
 | |
|       middle
 | |
|       []
 | |
|       leadmiddle
 | |
|       ['leadmiddleend', 'leadmiddlebar']
 | |
|       middleend
 | |
|       []
 | |
|       endlead
 | |
|       ['end lead', 'lead', 'end end']
 | |
|       leadprobar
 | |
|       ['leadprebar', 'lead prebar', 'leadbar']]=])
 | |
|   end)
 | |
| 
 | |
|   it('part 7-7', function()
 | |
|     insert([[
 | |
|       7good: meea1 meeaé bar prebar barmeat prebarmeat  leadprebar
 | |
|             lead tail leadtail  leadmiddletail
 | |
|       bad: mee meea2 prabar probarmaat middle leadmiddle middletail taillead
 | |
|             leadprobar
 | |
|       badend
 | |
|       ]])
 | |
|     -- Compound words.
 | |
|     test_one(7, 7)
 | |
|     -- Assert buffer contents.
 | |
|     feed_command('1,/^test 7-7/-1d')
 | |
|     expect([=[
 | |
|       test 7-7
 | |
|       # file: Xtest.utf-8.spl
 | |
|       bar
 | |
|       barmeat
 | |
|       lead
 | |
|       meea1
 | |
|       meeaé
 | |
|       prebar
 | |
|       prebarmeat
 | |
|       tail
 | |
|       -------
 | |
|       bad
 | |
|       ['bar', 'lead', 'tail']
 | |
|       mee
 | |
|       ['meea1', 'meeaé', 'bar']
 | |
|       meea2
 | |
|       ['meea1', 'meeaé', 'lead']
 | |
|       prabar
 | |
|       ['prebar', 'bar', 'leadbar']
 | |
|       probarmaat
 | |
|       ['prebarmeat']
 | |
|       middle
 | |
|       []
 | |
|       leadmiddle
 | |
|       ['leadmiddlebar']
 | |
|       middletail
 | |
|       []
 | |
|       taillead
 | |
|       ['tail lead', 'tail']
 | |
|       leadprobar
 | |
|       ['leadprebar', 'lead prebar', 'leadbar']]=])
 | |
|   end)
 | |
| 
 | |
|   it('part 8-8', function()
 | |
|     insert([[
 | |
|       8good: foo bar faabar
 | |
|       bad: foobar barfoo
 | |
|       badend
 | |
|       ]])
 | |
|     -- NOSPLITSUGS
 | |
|     test_one(8, 8)
 | |
|     -- Assert buffer contents.
 | |
|     feed_command('1,/^test 8-8/-1d')
 | |
|     expect([=[
 | |
|       test 8-8
 | |
|       # file: Xtest.utf-8.spl
 | |
|       bar
 | |
|       faabar
 | |
|       foo
 | |
|       -------
 | |
|       bad
 | |
|       ['bar', 'foo']
 | |
|       foobar
 | |
|       ['faabar', 'foo bar', 'bar']
 | |
|       barfoo
 | |
|       ['bar foo', 'bar', 'foo']]=])
 | |
|   end)
 | |
| 
 | |
|   it('part 9-9', function()
 | |
|     insert([[
 | |
|       9good: 0b1011 0777 1234 0x01ff
 | |
|       badend
 | |
|       ]])
 | |
|     -- NOSPLITSUGS
 | |
|     test_one(9, 9)
 | |
|     -- Assert buffer contents.
 | |
|     feed_command('1,/^test 9-9/-1d')
 | |
|     expect([=[
 | |
|       test 9-9
 | |
|       # file: Xtest.utf-8.spl
 | |
|       bar
 | |
|       foo
 | |
|       -------]=])
 | |
|   end)
 | |
| end)
 | 
