test59: Store all text as utf-8 and convert when needed

This commit is contained in:
Björn Linse 2015-08-23 14:16:46 +02:00
parent df9d7489ca
commit 2b6d1546ec
2 changed files with 430 additions and 435 deletions

View File

@ -129,6 +129,10 @@ local function nvim_eval(expr)
return request('vim_eval', expr) return request('vim_eval', expr)
end end
local function nvim_call(name, ...)
return request('vim_call_function', name, {...})
end
local function nvim_feed(input) local function nvim_feed(input)
while #input > 0 do while #input > 0 do
local written = request('vim_input', input) local written = request('vim_input', input)
@ -321,6 +325,7 @@ return {
feed = feed, feed = feed,
execute = execute, execute = execute,
eval = nvim_eval, eval = nvim_eval,
call = nvim_call,
command = nvim_command, command = nvim_command,
request = request, request = request,
next_message = next_message, next_message = next_message,

View File

@ -3,202 +3,190 @@
local helpers = require('test.functional.helpers') local helpers = require('test.functional.helpers')
local feed, insert, source = helpers.feed, helpers.insert, helpers.source local feed, insert, source = helpers.feed, helpers.insert, helpers.source
local clear, execute, expect = helpers.clear, helpers.execute, helpers.expect local clear, execute, expect = helpers.clear, helpers.execute, helpers.expect
local write_file = helpers.write_file 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() describe("spell checking with 'encoding' set to utf-8", function()
setup(function() setup(function()
clear() clear()
execute("syntax off") execute("syntax off")
-- This file should be encoded in ISO8859-1. write_latin1('Xtest1.aff',[[
write_file('Xtest1.aff', SET ISO8859-1
'SET ISO8859-1\n' .. TRY esianrtolcdugmphbyfvkwjkqxz-ëéèêïîäàâöüû'ESIANRTOLCDUGMPHBYFVKWJKQXZ
'TRY esianrtolcdugmphbyfvkwjkqxz-\xeb\xe9\xe8\xea\xef\xee\xe4\xe0' ..
'\xe2\xf6\xfc\xfb\'ESIANRTOLCDUGMPHBYFVKWJKQXZ\n' .. FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
'\n' .. LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
'FOL \xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee' .. UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
'\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xdf' ..
'\xff\n' .. SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
'LOW \xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee' .. SOFOTO ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
'\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xdf' ..
'\xff\n' .. MIDWORD '-
'UPP \xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce' ..
'\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf' .. KEP =
'\xff\n' .. RAR ?
'\n' .. BAD !
'SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\xe0' ..
'\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0' .. #NOSPLITSUGS
'\xf1\xf2\xf3\xf4\xf5\xf6\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xdf\xff\xc0' ..
'\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0' .. PFX I N 1
'\xd1\xd2\xd3\xd4\xd5\xd6\xd8\xd9\xda\xdb\xdc\xdd\xde\xbf\n' .. PFX I 0 in .
'SOFOTO ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeee' ..
'eceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?\n' .. PFX O Y 1
'\n' .. PFX O 0 out .
'MIDWORD\t\'-\n' ..
'\n' .. SFX S Y 2
'KEP =\n' .. SFX S 0 s [^s]
'RAR ?\n' .. SFX S 0 es s
'BAD !\n' ..
'\n' .. SFX N N 3
'#NOSPLITSUGS\n' .. SFX N 0 en [^n]
'\n' .. SFX N 0 nen n
'PFX I N 1\n' .. SFX N 0 n .
'PFX I 0 in .\n' ..
'\n' .. REP 3
'PFX O Y 1\n' .. REP g ch
'PFX O 0 out .\n' .. REP ch g
'\n' .. REP svp s.v.p.
'SFX S Y 2\n' ..
'SFX S 0 s [^s]\n' .. MAP 9
'SFX S 0 es s\n' .. MAP aàáâãäå
'\n' .. MAP eèéêë
'SFX N N 3\n' .. MAP iìíîï
'SFX N 0 en [^n]\n' .. MAP oòóôõö
'SFX N 0 nen n\n' .. MAP uùúûü
'SFX N 0 n .\n' .. MAP
'\n' .. MAP
'REP 3\n' .. MAP yÿý
'REP g ch\n' .. MAP
'REP ch g\n' .. ]])
'REP svp s.v.p.\n' .. write_latin1('Xtest1.dic', [[
'\n' .. 123456
'MAP 9\n' .. test/NO
'MAP a\xe0\xe1\xe2\xe3\xe4\xe5\n' .. # comment
'MAP e\xe8\xe9\xea\xeb\n' .. wrong
'MAP i\xec\xed\xee\xef\n' .. Comment
'MAP o\xf2\xf3\xf4\xf5\xf6\n' .. OK
'MAP u\xf9\xfa\xfb\xfc\n' .. uk
'MAP n\xf1\n' .. put/ISO
'MAP c\xe7\n' .. the end
'MAP y\xff\xfd\n' .. deol
'MAP s\xdf\n') déôr
write_file('Xtest1.dic', ]])
'123456\n' .. write_latin1('Xtest2.aff', [[
'test/NO\n' .. SET ISO8859-1
'# comment\n' ..
'wrong\n' .. FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
'Comment\n' .. LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
'OK\n' .. UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
'uk\n' ..
'put/ISO\n' .. PFXPOSTPONE
'the end\n' ..
'deol\n' .. MIDWORD '-
'\x64\xe9\xf4\x72\n')
write_file('Xtest2.aff', KEP =
'SET ISO8859-1\n' .. RAR ?
'\n' .. BAD !
'FOL \xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee' ..
'\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xdf' .. #NOSPLITSUGS
'\xff\n' ..
'LOW \xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee' .. PFX I N 1
'\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xdf' .. PFX I 0 in .
'\xff\n' ..
'UPP \xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce' .. PFX O Y 1
'\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf' .. PFX O 0 out [a-z]
'\xff\n' ..
'\n' .. SFX S Y 2
'PFXPOSTPONE\n' .. SFX S 0 s [^s]
'\n' .. SFX S 0 es s
'MIDWORD\t\'-\n' ..
'\n' .. SFX N N 3
'KEP =\n' .. SFX N 0 en [^n]
'RAR ?\n' .. SFX N 0 nen n
'BAD !\n' .. SFX N 0 n .
'\n' ..
'#NOSPLITSUGS\n' .. REP 3
'\n' .. REP g ch
'PFX I N 1\n' .. REP ch g
'PFX I 0 in .\n' .. REP svp s.v.p.
'\n' ..
'PFX O Y 1\n' .. MAP 9
'PFX O 0 out [a-z]\n' .. MAP aàáâãäå
'\n' .. MAP eèéêë
'SFX S Y 2\n' .. MAP iìíîï
'SFX S 0 s [^s]\n' .. MAP oòóôõö
'SFX S 0 es s\n' .. MAP uùúûü
'\n' .. MAP
'SFX N N 3\n' .. MAP
'SFX N 0 en [^n]\n' .. MAP yÿý
'SFX N 0 nen n\n' .. MAP
'SFX N 0 n .\n' .. ]])
'\n' .. write_latin1('Xtest3.aff', [[
'REP 3\n' ..
'REP g ch\n' ..
'REP ch g\n' ..
'REP svp s.v.p.\n' ..
'\n' ..
'MAP 9\n' ..
'MAP a\xe0\xe1\xe2\xe3\xe4\xe5\n' ..
'MAP e\xe8\xe9\xea\xeb\n' ..
'MAP i\xec\xed\xee\xef\n' ..
'MAP o\xf2\xf3\xf4\xf5\xf6\n' ..
'MAP u\xf9\xfa\xfb\xfc\n' ..
'MAP n\xf1\n' ..
'MAP c\xe7\n' ..
'MAP y\xff\xfd\n' ..
'MAP s\xdf\n')
write_file('Xtest3.aff', [[
SET ISO8859-1 SET ISO8859-1
COMPOUNDMIN 3 COMPOUNDMIN 3
COMPOUNDRULE m* COMPOUNDRULE m*
NEEDCOMPOUND x NEEDCOMPOUND x
]]) ]])
write_file('Xtest3.dic', write_latin1('Xtest3.dic', [[
'1234\nfoo/m\nbar/mx\n\x6d\xef\x2f\x6d\n\x6c\x61\x2f\x6d\x78\n') 1234
write_file('Xtest4.aff', foo/m
'SET ISO8859-1\n' .. bar/mx
'\n' .. /m
'FOL \xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee' .. la/mx
'\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xdf' .. ]])
'\xff\n' .. write_latin1('Xtest4.aff', [[
'LOW \xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee' .. SET ISO8859-1
'\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xdf' ..
'\xff\n' .. FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
'UPP \xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce' .. LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
'\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf' .. UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
'\xff\n' ..
'\n' .. COMPOUNDRULE m+
'COMPOUNDRULE m+\n' .. COMPOUNDRULE sm*e
'COMPOUNDRULE sm*e\n' .. COMPOUNDRULE sm+
'COMPOUNDRULE sm+\n' .. COMPOUNDMIN 3
'COMPOUNDMIN 3\n' .. COMPOUNDWORDMAX 3
'COMPOUNDWORDMAX 3\n' .. COMPOUNDFORBIDFLAG t
'COMPOUNDFORBIDFLAG t\n' ..
'\n' .. COMPOUNDSYLMAX 5
'COMPOUNDSYLMAX 5\n' .. SYLLABLE aáeéiíoóöõuúüûy/aa/au/ea/ee/ei/ie/oa/oe/oo/ou/uu/ui
'SYLLABLE a\xe1e\xe9i\xedo\xf3\xf6\xf5u\xfa\xfc\xfby/aa/au/ea/ee/ei/' ..
'ie/oa/oe/oo/ou/uu/ui\n' .. MAP 9
'\n' .. MAP aàáâãäå
'MAP 9\n' .. MAP eèéêë
'MAP a\xe0\xe1\xe2\xe3\xe4\xe5\n' .. MAP iìíîï
'MAP e\xe8\xe9\xea\xeb\n' .. MAP oòóôõö
'MAP i\xec\xed\xee\xef\n' .. MAP uùúûü
'MAP o\xf2\xf3\xf4\xf5\xf6\n' .. MAP
'MAP u\xf9\xfa\xfb\xfc\n' .. MAP
'MAP n\xf1\n' .. MAP yÿý
'MAP c\xe7\n' .. MAP
'MAP y\xff\xfd\n' ..
'MAP s\xdf\n' .. NEEDAFFIX x
'\n' ..
'NEEDAFFIX x\n' .. PFXPOSTPONE
'\n' ..
'PFXPOSTPONE\n' .. MIDWORD '-
'\n' ..
'MIDWORD \'-\n' .. SFX q N 1
'\n' .. SFX q 0 -ok .
'SFX q N 1\n' ..
'SFX q 0 -ok .\n' .. SFX a Y 2
'\n' .. SFX a 0 s .
'SFX a Y 2\n' .. SFX a 0 ize/t .
'SFX a 0 s .\n' ..
'SFX a 0 ize/t .\n' .. PFX p N 1
'\n' .. PFX p 0 pre .
'PFX p N 1\n' ..
'PFX p 0 pre .\n' .. PFX P N 1
'\n' .. PFX P 0 nou .
'PFX P N 1\n' .. ]])
'PFX P 0 nou .\n') write_latin1('Xtest4.dic', [[
write_file('Xtest4.dic', [[
1234 1234
word/mP word/mP
util/am util/am
@ -208,95 +196,103 @@ describe("spell checking with 'encoding' set to utf-8", function()
start/s start/s
end/e end/e
]]) ]])
write_file('Xtest5.aff', write_latin1('Xtest5.aff', [[
'SET ISO8859-1\n' .. SET ISO8859-1
'\n' ..
'FLAG long\n' .. FLAG long
'\n' ..
'NEEDAFFIX !!\n' .. NEEDAFFIX !!
'\n' ..
'COMPOUNDRULE ssmm*ee\n' .. COMPOUNDRULE ssmm*ee
'\n' ..
'NEEDCOMPOUND xx\n' .. NEEDCOMPOUND xx
'COMPOUNDPERMITFLAG pp\n' .. COMPOUNDPERMITFLAG pp
'\n' ..
'SFX 13 Y 1\n' .. SFX 13 Y 1
'SFX 13 0 bork .\n' .. SFX 13 0 bork .
'\n' ..
'SFX a1 Y 1\n' .. SFX a1 Y 1
'SFX a1 0 a1 .\n' .. SFX a1 0 a1 .
'\n' ..
'SFX a\xe9 Y 1\n' .. SFX Y 1
'SFX a\xe9 0 a\xe9 .\n' .. SFX 0 .
'\n' ..
'PFX zz Y 1\n' .. PFX zz Y 1
'PFX zz 0 pre/pp .\n' .. PFX zz 0 pre/pp .
'\n' ..
'PFX yy Y 1\n' .. PFX yy Y 1
'PFX yy 0 nou .\n') PFX yy 0 nou .
write_file('Xtest5.dic', ]])
'1234\nfoo/a1a\xe9!!\nbar/zz13ee\nstart/ss\nend/eeyy\nmiddle/mmxx\n') write_latin1('Xtest5.dic', [[
write_file('Xtest6.aff', 1234
'SET ISO8859-1\n' .. foo/a1aé!!
'\n' .. bar/zz13ee
'FLAG caplong\n' .. start/ss
'\n' .. end/eeyy
'NEEDAFFIX A!\n' .. middle/mmxx
'\n' .. ]])
'COMPOUNDRULE sMm*Ee\n' .. write_latin1('Xtest6.aff', [[
'\n' .. SET ISO8859-1
'NEEDCOMPOUND Xx\n' ..
'\n' .. FLAG caplong
'COMPOUNDPERMITFLAG p\n' ..
'\n' .. NEEDAFFIX A!
'SFX N3 Y 1\n' ..
'SFX N3 0 bork .\n' .. COMPOUNDRULE sMm*Ee
'\n' ..
'SFX A1 Y 1\n' .. NEEDCOMPOUND Xx
'SFX A1 0 a1 .\n' ..
'\n' .. COMPOUNDPERMITFLAG p
'SFX A\xe9 Y 1\n' ..
'SFX A\xe9 0 a\xe9 .\n' .. SFX N3 Y 1
'\n' .. SFX N3 0 bork .
'PFX Zz Y 1\n' ..
'PFX Zz 0 pre/p .\n') SFX A1 Y 1
write_file('Xtest6.dic', SFX A1 0 a1 .
'1234\nmee/A1A\xe9A!\nbar/ZzN3Ee\nlead/s\nend/Ee\nmiddle/MmXx\n')
write_file('Xtest7.aff', SFX Y 1
'SET ISO8859-1\n' .. SFX 0 .
'\n' ..
'FOL \xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee' .. PFX Zz Y 1
'\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xdf' .. PFX Zz 0 pre/p .
'\xff\n' .. ]])
'LOW \xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee' .. write_latin1('Xtest6.dic', [[
'\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xdf' .. 1234
'\xff\n' .. mee/A1AéA!
'UPP \xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce' .. bar/ZzN3Ee
'\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf' .. lead/s
'\xff\n' .. end/Ee
'\n' .. middle/MmXx
'FLAG num\n' .. ]])
'\n' .. write_latin1('Xtest7.aff', [[
'NEEDAFFIX 9999\n' .. SET ISO8859-1
'\n' ..
'COMPOUNDRULE 2,77*123\n' .. FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
'\n' .. LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
'NEEDCOMPOUND 1\n' .. UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
'COMPOUNDPERMITFLAG 432\n' ..
'\n' .. FLAG num
'SFX 61003 Y 1\n' ..
'SFX 61003 0 meat .\n' .. NEEDAFFIX 9999
'\n' ..
'SFX 391 Y 1\n' .. COMPOUNDRULE 2,77*123
'SFX 391 0 a1 .\n' ..
'\n' .. NEEDCOMPOUND 1
'SFX 111 Y 1\n' .. COMPOUNDPERMITFLAG 432
'SFX 111 0 a\xe9'..
' .\n' .. SFX 61003 Y 1
'\n' .. SFX 61003 0 meat .
'PFX 17 Y 1\n' ..
'PFX 17 0 pre/432 .\n') SFX 391 Y 1
write_file('Xtest7.dic', [[ SFX 391 0 a1 .
SFX 111 Y 1
SFX 111 0 .
PFX 17 Y 1
PFX 17 0 pre/432 .
]])
write_latin1('Xtest7.dic', [[
1234 1234
mee/391,111,9999 mee/391,111,9999
bar/17,61003,123 bar/17,61003,123
@ -304,167 +300,161 @@ describe("spell checking with 'encoding' set to utf-8", function()
tail/123 tail/123
middle/77,1 middle/77,1
]]) ]])
write_file('Xtest-sal.aff', write_latin1('Xtest-sal.aff', [[
'SET ISO8859-1\n' .. SET ISO8859-1
'TRY esianrtolcdugmphbyfvkwjkqxz-\xeb\xe9\xe8\xea\xef\xee\xe4\xe0' .. TRY esianrtolcdugmphbyfvkwjkqxz-ëéèêïîäàâöüû'ESIANRTOLCDUGMPHBYFVKWJKQXZ
'\xe2\xf6\xfc\xfb\'ESIANRTOLCDUGMPHBYFVKWJKQXZ\n' ..
'\n' .. FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
'FOL \xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee' .. LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
'\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xdf' .. UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
'\xff\n' ..
'LOW \xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee' .. MIDWORD '-
'\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xdf' ..
'\xff\n' .. KEP =
'UPP \xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce' .. RAR ?
'\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf' .. BAD !
'\xff\n' ..
'\n' .. #NOSPLITSUGS
'MIDWORD\t\'-\n' ..
'\n' .. PFX I N 1
'KEP =\n' .. PFX I 0 in .
'RAR ?\n' ..
'BAD !\n' .. PFX O Y 1
'\n' .. PFX O 0 out .
'#NOSPLITSUGS\n' ..
'\n' .. SFX S Y 2
'PFX I N 1\n' .. SFX S 0 s [^s]
'PFX I 0 in .\n' .. SFX S 0 es s
'\n' ..
'PFX O Y 1\n' .. SFX N N 3
'PFX O 0 out .\n' .. SFX N 0 en [^n]
'\n' .. SFX N 0 nen n
'SFX S Y 2\n' .. SFX N 0 n .
'SFX S 0 s [^s]\n' ..
'SFX S 0 es s\n' .. REP 3
'\n' .. REP g ch
'SFX N N 3\n' .. REP ch g
'SFX N 0 en [^n]\n' .. REP svp s.v.p.
'SFX N 0 nen n\n' ..
'SFX N 0 n .\n' .. MAP 9
'\n' .. MAP aàáâãäå
'REP 3\n' .. MAP eèéêë
'REP g ch\n' .. MAP iìíîï
'REP ch g\n' .. MAP oòóôõö
'REP svp s.v.p.\n' .. MAP uùúûü
'\n' .. MAP
'MAP 9\n' .. MAP
'MAP a\xe0\xe1\xe2\xe3\xe4\xe5\n' .. MAP yÿý
'MAP e\xe8\xe9\xea\xeb\n' .. MAP
'MAP i\xec\xed\xee\xef\n' ..
'MAP o\xf2\xf3\xf4\xf5\xf6\n' .. SAL AH(AEIOUY)-^ *H
'MAP u\xf9\xfa\xfb\xfc\n' .. SAL AR(AEIOUY)-^ *R
'MAP n\xf1\n' .. SAL A(HR)^ *
'MAP c\xe7\n' .. SAL A^ *
'MAP y\xff\xfd\n' .. SAL AH(AEIOUY)- H
'MAP s\xdf\n' .. SAL AR(AEIOUY)- R
'\n' .. SAL A(HR) _
'SAL AH(AEIOUY)-^ *H\n' .. SAL À^ *
'SAL AR(AEIOUY)-^ *R\n' .. SAL Å^ *
'SAL A(HR)^ *\n' .. SAL BB- _
'SAL A^ *\n' .. SAL B B
'SAL AH(AEIOUY)- H\n' .. SAL CQ- _
'SAL AR(AEIOUY)- R\n' .. SAL CIA X
'SAL A(HR) _\n' .. SAL CH X
'SAL \xc0^ *\n' .. SAL C(EIY)- S
'SAL \xc5^ *\n' .. SAL CK K
'SAL BB- _\n' .. SAL COUGH^ KF
'SAL B B\n' .. SAL CC< C
'SAL CQ- _\n' .. SAL C K
'SAL CIA X\n' .. SAL DG(EIY) K
'SAL CH X\n' .. SAL DD- _
'SAL C(EIY)- S\n' .. SAL D T
'SAL CK K\n' .. SAL É< E
'SAL COUGH^ KF\n' .. SAL EH(AEIOUY)-^ *H
'SAL CC< C\n' .. SAL ER(AEIOUY)-^ *R
'SAL C K\n' .. SAL E(HR)^ *
'SAL DG(EIY) K\n' .. SAL ENOUGH^$ *NF
'SAL DD- _\n' .. SAL E^ *
'SAL D T\n' .. SAL EH(AEIOUY)- H
'SAL \xc9< E\n' .. SAL ER(AEIOUY)- R
'SAL EH(AEIOUY)-^ *H\n' .. SAL E(HR) _
'SAL ER(AEIOUY)-^ *R\n' .. SAL FF- _
'SAL E(HR)^ *\n' .. SAL F F
'SAL ENOUGH^$ *NF\n' .. SAL GN^ N
'SAL E^ *\n' .. SAL GN$ N
'SAL EH(AEIOUY)- H\n' .. SAL GNS$ NS
'SAL ER(AEIOUY)- R\n' .. SAL GNED$ N
'SAL E(HR) _\n' .. SAL GH(AEIOUY)- K
'SAL FF- _\n' .. SAL GH _
'SAL F F\n' .. SAL GG9 K
'SAL GN^ N\n' .. SAL G K
'SAL GN$ N\n' .. SAL H H
'SAL GNS$ NS\n' .. SAL IH(AEIOUY)-^ *H
'SAL GNED$ N\n' .. SAL IR(AEIOUY)-^ *R
'SAL GH(AEIOUY)- K\n' .. SAL I(HR)^ *
'SAL GH _\n' .. SAL I^ *
'SAL GG9 K\n' .. SAL ING6 N
'SAL G K\n' .. SAL IH(AEIOUY)- H
'SAL H H\n' .. SAL IR(AEIOUY)- R
'SAL IH(AEIOUY)-^ *H\n' .. SAL I(HR) _
'SAL IR(AEIOUY)-^ *R\n' .. SAL J K
'SAL I(HR)^ *\n' .. SAL KN^ N
'SAL I^ *\n' .. SAL KK- _
'SAL ING6 N\n' .. SAL K K
'SAL IH(AEIOUY)- H\n' .. SAL LAUGH^ LF
'SAL IR(AEIOUY)- R\n' .. SAL LL- _
'SAL I(HR) _\n' .. SAL L L
'SAL J K\n' .. SAL MB$ M
'SAL KN^ N\n' .. SAL MM M
'SAL KK- _\n' .. SAL M M
'SAL K K\n' .. SAL NN- _
'SAL LAUGH^ LF\n' .. SAL N N
'SAL LL- _\n' .. SAL OH(AEIOUY)-^ *H
'SAL L L\n' .. SAL OR(AEIOUY)-^ *R
'SAL MB$ M\n' .. SAL O(HR)^ *
'SAL MM M\n' .. SAL O^ *
'SAL M M\n' .. SAL OH(AEIOUY)- H
'SAL NN- _\n' .. SAL OR(AEIOUY)- R
'SAL N N\n' .. SAL O(HR) _
'SAL OH(AEIOUY)-^ *H\n' .. SAL PH F
'SAL OR(AEIOUY)-^ *R\n' .. SAL PN^ N
'SAL O(HR)^ *\n' .. SAL PP- _
'SAL O^ *\n' .. SAL P P
'SAL OH(AEIOUY)- H\n' .. SAL Q K
'SAL OR(AEIOUY)- R\n' .. SAL RH^ R
'SAL O(HR) _\n' .. SAL ROUGH^ RF
'SAL PH F\n' .. SAL RR- _
'SAL PN^ N\n' .. SAL R R
'SAL PP- _\n' .. SAL SCH(EOU)- SK
'SAL P P\n' .. SAL SC(IEY)- S
'SAL Q K\n' .. SAL SH X
'SAL RH^ R\n' .. SAL SI(AO)- X
'SAL ROUGH^ RF\n' .. SAL SS- _
'SAL RR- _\n' .. SAL S S
'SAL R R\n' .. SAL TI(AO)- X
'SAL SCH(EOU)- SK\n' .. SAL TH @
'SAL SC(IEY)- S\n' .. SAL TCH-- _
'SAL SH X\n' .. SAL TOUGH^ TF
'SAL SI(AO)- X\n' .. SAL TT- _
'SAL SS- _\n' .. SAL T T
'SAL S S\n' .. SAL UH(AEIOUY)-^ *H
'SAL TI(AO)- X\n' .. SAL UR(AEIOUY)-^ *R
'SAL TH @\n' .. SAL U(HR)^ *
'SAL TCH-- _\n' .. SAL U^ *
'SAL TOUGH^ TF\n' .. SAL UH(AEIOUY)- H
'SAL TT- _\n' .. SAL UR(AEIOUY)- R
'SAL T T\n' .. SAL U(HR) _
'SAL UH(AEIOUY)-^ *H\n' .. SAL V^ W
'SAL UR(AEIOUY)-^ *R\n' .. SAL V F
'SAL U(HR)^ *\n' .. SAL WR^ R
'SAL U^ *\n' .. SAL WH^ W
'SAL UH(AEIOUY)- H\n' .. SAL W(AEIOU)- W
'SAL UR(AEIOUY)- R\n' .. SAL X^ S
'SAL U(HR) _\n' .. SAL X KS
'SAL V^ W\n' .. SAL Y(AEIOU)- Y
'SAL V F\n' .. SAL ZZ- _
'SAL WR^ R\n' .. SAL Z S
'SAL WH^ W\n' .. ]])
'SAL W(AEIOU)- W\n' ..
'SAL X^ S\n' ..
'SAL X KS\n' ..
'SAL Y(AEIOU)- Y\n' ..
'SAL ZZ- _\n' ..
'SAL Z S\n')
write_file('Xtest.utf-8.add', [[ write_file('Xtest.utf-8.add', [[
/regions=usgbnz /regions=usgbnz
elequint/2 elequint/2