059_utf8_spell_checking_spec.lua 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011
  1. -- Tests for spell checking with 'encoding' set to "utf-8".
  2. local helpers = require('test.functional.helpers')(after_each)
  3. local feed, insert, source = helpers.feed, helpers.insert, helpers.source
  4. local clear, feed_command, expect = helpers.clear, helpers.feed_command, helpers.expect
  5. local write_file, call = helpers.write_file, helpers.call
  6. local function write_latin1(name, text)
  7. text = call('iconv', text, 'utf-8', 'latin-1')
  8. write_file(name, text)
  9. end
  10. describe("spell checking with 'encoding' set to utf-8", function()
  11. setup(function()
  12. clear()
  13. feed_command("syntax off")
  14. write_latin1('Xtest1.aff',[[
  15. SET ISO8859-1
  16. TRY esianrtolcdugmphbyfvkwjkqxz-ëéèêïîäàâöüû'ESIANRTOLCDUGMPHBYFVKWJKQXZ
  17. FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
  18. LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
  19. UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
  20. SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
  21. SOFOTO ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
  22. MIDWORD '-
  23. KEP =
  24. RAR ?
  25. BAD !
  26. PFX I N 1
  27. PFX I 0 in .
  28. PFX O Y 1
  29. PFX O 0 out .
  30. SFX S Y 2
  31. SFX S 0 s [^s]
  32. SFX S 0 es s
  33. SFX N N 3
  34. SFX N 0 en [^n]
  35. SFX N 0 nen n
  36. SFX N 0 n .
  37. REP 3
  38. REP g ch
  39. REP ch g
  40. REP svp s.v.p.
  41. MAP 9
  42. MAP aàáâãäå
  43. MAP eèéêë
  44. MAP iìíîï
  45. MAP oòóôõö
  46. MAP uùúûü
  47. MAP nñ
  48. MAP cç
  49. MAP yÿý
  50. MAP sß
  51. ]])
  52. write_latin1('Xtest1.dic', [[
  53. 123456
  54. test/NO
  55. # comment
  56. wrong
  57. Comment
  58. OK
  59. uk
  60. put/ISO
  61. the end
  62. deol
  63. déôr
  64. ]])
  65. write_latin1('Xtest2.aff', [[
  66. SET ISO8859-1
  67. FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
  68. LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
  69. UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
  70. PFXPOSTPONE
  71. MIDWORD '-
  72. KEP =
  73. RAR ?
  74. BAD !
  75. PFX I N 1
  76. PFX I 0 in .
  77. PFX O Y 1
  78. PFX O 0 out [a-z]
  79. SFX S Y 2
  80. SFX S 0 s [^s]
  81. SFX S 0 es s
  82. SFX N N 3
  83. SFX N 0 en [^n]
  84. SFX N 0 nen n
  85. SFX N 0 n .
  86. REP 3
  87. REP g ch
  88. REP ch g
  89. REP svp s.v.p.
  90. MAP 9
  91. MAP aàáâãäå
  92. MAP eèéêë
  93. MAP iìíîï
  94. MAP oòóôõö
  95. MAP uùúûü
  96. MAP nñ
  97. MAP cç
  98. MAP yÿý
  99. MAP sß
  100. ]])
  101. write_latin1('Xtest3.aff', [[
  102. SET ISO8859-1
  103. COMPOUNDMIN 3
  104. COMPOUNDRULE m*
  105. NEEDCOMPOUND x
  106. ]])
  107. write_latin1('Xtest3.dic', [[
  108. 1234
  109. foo/m
  110. bar/mx
  111. mï/m
  112. la/mx
  113. ]])
  114. write_latin1('Xtest4.aff', [[
  115. SET ISO8859-1
  116. FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
  117. LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
  118. UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
  119. COMPOUNDRULE m+
  120. COMPOUNDRULE sm*e
  121. COMPOUNDRULE sm+
  122. COMPOUNDMIN 3
  123. COMPOUNDWORDMAX 3
  124. COMPOUNDFORBIDFLAG t
  125. COMPOUNDSYLMAX 5
  126. SYLLABLE aáeéiíoóöõuúüûy/aa/au/ea/ee/ei/ie/oa/oe/oo/ou/uu/ui
  127. MAP 9
  128. MAP aàáâãäå
  129. MAP eèéêë
  130. MAP iìíîï
  131. MAP oòóôõö
  132. MAP uùúûü
  133. MAP nñ
  134. MAP cç
  135. MAP yÿý
  136. MAP sß
  137. NEEDAFFIX x
  138. PFXPOSTPONE
  139. MIDWORD '-
  140. SFX q N 1
  141. SFX q 0 -ok .
  142. SFX a Y 2
  143. SFX a 0 s .
  144. SFX a 0 ize/t .
  145. PFX p N 1
  146. PFX p 0 pre .
  147. PFX P N 1
  148. PFX P 0 nou .
  149. ]])
  150. write_latin1('Xtest4.dic', [[
  151. 1234
  152. word/mP
  153. util/am
  154. pro/xq
  155. tomato/m
  156. bork/mp
  157. start/s
  158. end/e
  159. ]])
  160. write_latin1('Xtest5.aff', [[
  161. SET ISO8859-1
  162. FLAG long
  163. NEEDAFFIX !!
  164. COMPOUNDRULE ssmm*ee
  165. NEEDCOMPOUND xx
  166. COMPOUNDPERMITFLAG pp
  167. SFX 13 Y 1
  168. SFX 13 0 bork .
  169. SFX a1 Y 1
  170. SFX a1 0 a1 .
  171. SFX aé Y 1
  172. SFX aé 0 aé .
  173. PFX zz Y 1
  174. PFX zz 0 pre/pp .
  175. PFX yy Y 1
  176. PFX yy 0 nou .
  177. ]])
  178. write_latin1('Xtest5.dic', [[
  179. 1234
  180. foo/a1aé!!
  181. bar/zz13ee
  182. start/ss
  183. end/eeyy
  184. middle/mmxx
  185. ]])
  186. write_latin1('Xtest6.aff', [[
  187. SET ISO8859-1
  188. FLAG caplong
  189. NEEDAFFIX A!
  190. COMPOUNDRULE sMm*Ee
  191. NEEDCOMPOUND Xx
  192. COMPOUNDPERMITFLAG p
  193. SFX N3 Y 1
  194. SFX N3 0 bork .
  195. SFX A1 Y 1
  196. SFX A1 0 a1 .
  197. SFX Aé Y 1
  198. SFX Aé 0 aé .
  199. PFX Zz Y 1
  200. PFX Zz 0 pre/p .
  201. ]])
  202. write_latin1('Xtest6.dic', [[
  203. 1234
  204. mee/A1AéA!
  205. bar/ZzN3Ee
  206. lead/s
  207. end/Ee
  208. middle/MmXx
  209. ]])
  210. write_latin1('Xtest7.aff', [[
  211. SET ISO8859-1
  212. FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
  213. LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
  214. UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
  215. FLAG num
  216. NEEDAFFIX 9999
  217. COMPOUNDRULE 2,77*123
  218. NEEDCOMPOUND 1
  219. COMPOUNDPERMITFLAG 432
  220. SFX 61003 Y 1
  221. SFX 61003 0 meat .
  222. SFX 391 Y 1
  223. SFX 391 0 a1 .
  224. SFX 111 Y 1
  225. SFX 111 0 aé .
  226. PFX 17 Y 1
  227. PFX 17 0 pre/432 .
  228. ]])
  229. write_latin1('Xtest7.dic', [[
  230. 1234
  231. mee/391,111,9999
  232. bar/17,61003,123
  233. lead/2
  234. tail/123
  235. middle/77,1
  236. ]])
  237. write_latin1('Xtest8.aff', [[
  238. SET ISO8859-1
  239. NOSPLITSUGS
  240. ]])
  241. write_latin1('Xtest8.dic', [[
  242. 1234
  243. foo
  244. bar
  245. faabar
  246. ]])
  247. write_latin1('Xtest9.aff', [[
  248. ]])
  249. write_latin1('Xtest9.dic', [[
  250. 1234
  251. foo
  252. bar
  253. ]])
  254. write_latin1('Xtest-sal.aff', [[
  255. SET ISO8859-1
  256. TRY esianrtolcdugmphbyfvkwjkqxz-ëéèêïîäàâöüû'ESIANRTOLCDUGMPHBYFVKWJKQXZ
  257. FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
  258. LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
  259. UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
  260. MIDWORD '-
  261. KEP =
  262. RAR ?
  263. BAD !
  264. PFX I N 1
  265. PFX I 0 in .
  266. PFX O Y 1
  267. PFX O 0 out .
  268. SFX S Y 2
  269. SFX S 0 s [^s]
  270. SFX S 0 es s
  271. SFX N N 3
  272. SFX N 0 en [^n]
  273. SFX N 0 nen n
  274. SFX N 0 n .
  275. REP 3
  276. REP g ch
  277. REP ch g
  278. REP svp s.v.p.
  279. MAP 9
  280. MAP aàáâãäå
  281. MAP eèéêë
  282. MAP iìíîï
  283. MAP oòóôõö
  284. MAP uùúûü
  285. MAP nñ
  286. MAP cç
  287. MAP yÿý
  288. MAP sß
  289. SAL AH(AEIOUY)-^ *H
  290. SAL AR(AEIOUY)-^ *R
  291. SAL A(HR)^ *
  292. SAL A^ *
  293. SAL AH(AEIOUY)- H
  294. SAL AR(AEIOUY)- R
  295. SAL A(HR) _
  296. SAL À^ *
  297. SAL Å^ *
  298. SAL BB- _
  299. SAL B B
  300. SAL CQ- _
  301. SAL CIA X
  302. SAL CH X
  303. SAL C(EIY)- S
  304. SAL CK K
  305. SAL COUGH^ KF
  306. SAL CC< C
  307. SAL C K
  308. SAL DG(EIY) K
  309. SAL DD- _
  310. SAL D T
  311. SAL É< E
  312. SAL EH(AEIOUY)-^ *H
  313. SAL ER(AEIOUY)-^ *R
  314. SAL E(HR)^ *
  315. SAL ENOUGH^$ *NF
  316. SAL E^ *
  317. SAL EH(AEIOUY)- H
  318. SAL ER(AEIOUY)- R
  319. SAL E(HR) _
  320. SAL FF- _
  321. SAL F F
  322. SAL GN^ N
  323. SAL GN$ N
  324. SAL GNS$ NS
  325. SAL GNED$ N
  326. SAL GH(AEIOUY)- K
  327. SAL GH _
  328. SAL GG9 K
  329. SAL G K
  330. SAL H H
  331. SAL IH(AEIOUY)-^ *H
  332. SAL IR(AEIOUY)-^ *R
  333. SAL I(HR)^ *
  334. SAL I^ *
  335. SAL ING6 N
  336. SAL IH(AEIOUY)- H
  337. SAL IR(AEIOUY)- R
  338. SAL I(HR) _
  339. SAL J K
  340. SAL KN^ N
  341. SAL KK- _
  342. SAL K K
  343. SAL LAUGH^ LF
  344. SAL LL- _
  345. SAL L L
  346. SAL MB$ M
  347. SAL MM M
  348. SAL M M
  349. SAL NN- _
  350. SAL N N
  351. SAL OH(AEIOUY)-^ *H
  352. SAL OR(AEIOUY)-^ *R
  353. SAL O(HR)^ *
  354. SAL O^ *
  355. SAL OH(AEIOUY)- H
  356. SAL OR(AEIOUY)- R
  357. SAL O(HR) _
  358. SAL PH F
  359. SAL PN^ N
  360. SAL PP- _
  361. SAL P P
  362. SAL Q K
  363. SAL RH^ R
  364. SAL ROUGH^ RF
  365. SAL RR- _
  366. SAL R R
  367. SAL SCH(EOU)- SK
  368. SAL SC(IEY)- S
  369. SAL SH X
  370. SAL SI(AO)- X
  371. SAL SS- _
  372. SAL S S
  373. SAL TI(AO)- X
  374. SAL TH @
  375. SAL TCH-- _
  376. SAL TOUGH^ TF
  377. SAL TT- _
  378. SAL T T
  379. SAL UH(AEIOUY)-^ *H
  380. SAL UR(AEIOUY)-^ *R
  381. SAL U(HR)^ *
  382. SAL U^ *
  383. SAL UH(AEIOUY)- H
  384. SAL UR(AEIOUY)- R
  385. SAL U(HR) _
  386. SAL V^ W
  387. SAL V F
  388. SAL WR^ R
  389. SAL WH^ W
  390. SAL W(AEIOU)- W
  391. SAL X^ S
  392. SAL X KS
  393. SAL Y(AEIOU)- Y
  394. SAL ZZ- _
  395. SAL Z S
  396. ]])
  397. write_file('Xtest.utf-8.add', [[
  398. /regions=usgbnz
  399. elequint/2
  400. elekwint/3
  401. ]])
  402. end)
  403. teardown(function()
  404. os.remove('Xtest-sal.aff')
  405. os.remove('Xtest.aff')
  406. os.remove('Xtest.dic')
  407. os.remove('Xtest.utf-8.add')
  408. os.remove('Xtest.utf-8.add.spl')
  409. os.remove('Xtest.utf-8.spl')
  410. os.remove('Xtest.utf-8.sug')
  411. os.remove('Xtest1.aff')
  412. os.remove('Xtest1.dic')
  413. os.remove('Xtest2.aff')
  414. os.remove('Xtest3.aff')
  415. os.remove('Xtest3.dic')
  416. os.remove('Xtest4.aff')
  417. os.remove('Xtest4.dic')
  418. os.remove('Xtest5.aff')
  419. os.remove('Xtest5.dic')
  420. os.remove('Xtest6.aff')
  421. os.remove('Xtest6.dic')
  422. os.remove('Xtest7.aff')
  423. os.remove('Xtest7.dic')
  424. os.remove('Xtest8.aff')
  425. os.remove('Xtest8.dic')
  426. os.remove('Xtest9.aff')
  427. os.remove('Xtest9.dic')
  428. end)
  429. -- Function to test .aff/.dic with list of good and bad words. This was a
  430. -- Vim function in the original legacy test.
  431. local function test_one(aff, dic)
  432. -- Generate a .spl file from a .dic and .aff file.
  433. if helpers.iswin() then
  434. os.execute('copy /y Xtest'..aff..'.aff Xtest.aff')
  435. os.execute('copy /y Xtest'..dic..'.dic Xtest.dic')
  436. else
  437. os.execute('cp -f Xtest'..aff..'.aff Xtest.aff')
  438. os.execute('cp -f Xtest'..dic..'.dic Xtest.dic')
  439. end
  440. source([[
  441. set spellfile=
  442. function! SpellDumpNoShow()
  443. " spelling scores depend on what happens to be drawn on screen
  444. spelldump
  445. %yank
  446. quit
  447. endfunction
  448. $put =''
  449. $put ='test ]]..aff..'-'..dic..[['
  450. mkspell! Xtest Xtest
  451. " Use that spell file.
  452. set spl=Xtest.utf-8.spl spell
  453. " List all valid words.
  454. call SpellDumpNoShow()
  455. $put
  456. $put ='-------'
  457. " Find all bad words and suggestions for them.
  458. 1;/^]]..aff..[[good:
  459. normal 0f:]s
  460. let prevbad = ''
  461. while 1
  462. let [bad, a] = spellbadword()
  463. if bad == '' || bad == prevbad || bad == 'badend'
  464. break
  465. endif
  466. let prevbad = bad
  467. let lst = spellsuggest(bad, 3)
  468. normal mm
  469. $put =bad
  470. $put =string(lst)
  471. normal `m]s
  472. endwhile
  473. ]])
  474. end
  475. it('part 1-1', function()
  476. insert([[
  477. 1good: wrong OK puts. Test the end
  478. bad: inputs comment ok Ok. test déôl end the
  479. badend
  480. test2:
  481. elequint test elekwint test elekwent asdf
  482. ]])
  483. test_one(1, 1)
  484. feed_command([[$put =soundfold('goobledygoook')]])
  485. feed_command([[$put =soundfold('kóopërÿnôven')]])
  486. feed_command([[$put =soundfold('oeverloos gezwets edale')]])
  487. -- And now with SAL instead of SOFO items; test automatic reloading.
  488. if helpers.iswin() then
  489. os.execute('copy /y Xtest-sal.aff Xtest.aff')
  490. else
  491. os.execute('cp -f Xtest-sal.aff Xtest.aff')
  492. end
  493. feed_command('mkspell! Xtest Xtest')
  494. feed_command([[$put =soundfold('goobledygoook')]])
  495. feed_command([[$put =soundfold('kóopërÿnôven')]])
  496. feed_command([[$put =soundfold('oeverloos gezwets edale')]])
  497. -- Also use an addition file.
  498. feed_command('mkspell! Xtest.utf-8.add.spl Xtest.utf-8.add')
  499. feed_command('set spellfile=Xtest.utf-8.add')
  500. feed_command('/^test2:')
  501. feed(']s')
  502. feed_command('let [str, a] = spellbadword()')
  503. feed_command('$put =str')
  504. feed_command('set spl=Xtest_us.utf-8.spl')
  505. feed_command('/^test2:')
  506. feed(']smm')
  507. feed_command('let [str, a] = spellbadword()')
  508. feed_command('$put =str')
  509. feed('`m]s')
  510. feed_command('let [str, a] = spellbadword()')
  511. feed_command('$put =str')
  512. feed_command('set spl=Xtest_gb.utf-8.spl')
  513. feed_command('/^test2:')
  514. feed(']smm')
  515. feed_command('let [str, a] = spellbadword()')
  516. feed_command('$put =str')
  517. feed('`m]s')
  518. feed_command('let [str, a] = spellbadword()')
  519. feed_command('$put =str')
  520. feed_command('set spl=Xtest_nz.utf-8.spl')
  521. feed_command('/^test2:')
  522. feed(']smm')
  523. feed_command('let [str, a] = spellbadword()')
  524. feed_command('$put =str')
  525. feed('`m]s')
  526. feed_command('let [str, a] = spellbadword()')
  527. feed_command('$put =str')
  528. feed_command('set spl=Xtest_ca.utf-8.spl')
  529. feed_command('/^test2:')
  530. feed(']smm')
  531. feed_command('let [str, a] = spellbadword()')
  532. feed_command('$put =str')
  533. feed('`m]s')
  534. feed_command('let [str, a] = spellbadword()')
  535. feed_command('$put =str')
  536. feed_command('1,/^test 1-1/-1d')
  537. expect([[
  538. test 1-1
  539. # file: Xtest.utf-8.spl
  540. Comment
  541. deol
  542. déôr
  543. input
  544. OK
  545. output
  546. outputs
  547. outtest
  548. put
  549. puts
  550. test
  551. testen
  552. testn
  553. the end
  554. uk
  555. wrong
  556. -------
  557. bad
  558. ['put', 'uk', 'OK']
  559. inputs
  560. ['input', 'puts', 'outputs']
  561. comment
  562. ['Comment', 'outtest', 'the end']
  563. ok
  564. ['OK', 'uk', 'put']
  565. Ok
  566. ['OK', 'Uk', 'Put']
  567. test
  568. ['Test', 'testn', 'testen']
  569. déôl
  570. ['deol', 'déôr', 'test']
  571. end
  572. ['put', 'uk', 'test']
  573. the
  574. ['put', 'uk', 'test']
  575. gebletegek
  576. kepereneven
  577. everles gesvets etele
  578. kbltykk
  579. kprnfn
  580. *fls kswts tl
  581. elekwent
  582. elequint
  583. elekwint
  584. elekwint
  585. elekwent
  586. elequint
  587. elekwent
  588. elequint
  589. elekwint]])
  590. end)
  591. it('part 2-1', function()
  592. insert([[
  593. 2good: puts
  594. bad: inputs comment ok Ok end the. test déôl
  595. badend
  596. ]])
  597. -- Postponed prefixes.
  598. test_one(2, 1)
  599. feed_command('1,/^test 2-1/-1d')
  600. expect([=[
  601. test 2-1
  602. # file: Xtest.utf-8.spl
  603. Comment
  604. deol
  605. déôr
  606. OK
  607. put
  608. input
  609. output
  610. puts
  611. outputs
  612. test
  613. outtest
  614. testen
  615. testn
  616. the end
  617. uk
  618. wrong
  619. -------
  620. bad
  621. ['put', 'uk', 'OK']
  622. inputs
  623. ['input', 'puts', 'outputs']
  624. comment
  625. ['Comment']
  626. ok
  627. ['OK', 'uk', 'put']
  628. Ok
  629. ['OK', 'Uk', 'Put']
  630. end
  631. ['put', 'uk', 'deol']
  632. the
  633. ['put', 'uk', 'test']
  634. test
  635. ['Test', 'testn', 'testen']
  636. déôl
  637. ['deol', 'déôr', 'test']]=])
  638. end)
  639. it('part 3-3', function()
  640. insert([[
  641. Test rules for compounding.
  642. 3good: foo mï foobar foofoobar barfoo barbarfoo
  643. bad: bar la foomï barmï mïfoo mïbar mïmï lala mïla lamï foola labar
  644. badend
  645. ]])
  646. test_one(3, 3)
  647. feed_command('1,/^test 3-3/-1d')
  648. expect([=[
  649. test 3-3
  650. # file: Xtest.utf-8.spl
  651. foo
  652. -------
  653. bad
  654. ['foo', 'mï']
  655. bar
  656. ['barfoo', 'foobar', 'foo']
  657. la
  658. ['mï', 'foo']
  659. foomï
  660. ['foo mï', 'foo', 'foofoo']
  661. barmï
  662. ['barfoo', 'mï', 'barbar']
  663. mïfoo
  664. ['mï foo', 'foo', 'foofoo']
  665. mïbar
  666. ['foobar', 'barbar', 'mï']
  667. mïmï
  668. ['mï mï', 'mï']
  669. lala
  670. []
  671. mïla
  672. ['mï', 'mï mï']
  673. lamï
  674. ['mï', 'mï mï']
  675. foola
  676. ['foo', 'foobar', 'foofoo']
  677. labar
  678. ['barbar', 'foobar']]=])
  679. end)
  680. it('part 4-4', function()
  681. insert([[
  682. Tests for compounding.
  683. 4good: word util bork prebork start end wordutil wordutils pro-ok
  684. bork borkbork borkborkbork borkborkborkbork borkborkborkborkbork
  685. tomato tomatotomato startend startword startwordword startwordend
  686. startwordwordend startwordwordwordend prebork preborkbork
  687. preborkborkbork
  688. nouword
  689. bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomato
  690. endstart endend startstart wordend wordstart
  691. preborkprebork preborkpreborkbork
  692. startwordwordwordwordend borkpreborkpreborkbork
  693. utilsbork startnouword
  694. badend
  695. ]])
  696. test_one(4, 4)
  697. feed_command('1,/^test 4-4/-1d')
  698. expect([=[
  699. test 4-4
  700. # file: Xtest.utf-8.spl
  701. bork
  702. prebork
  703. end
  704. pro-ok
  705. start
  706. tomato
  707. util
  708. utilize
  709. utils
  710. word
  711. nouword
  712. -------
  713. bad
  714. ['end', 'bork', 'word']
  715. wordutilize
  716. ['word utilize', 'wordutils', 'wordutil']
  717. pro
  718. ['bork', 'word', 'end']
  719. borkborkborkborkborkbork
  720. ['bork borkborkborkborkbork', 'borkbork borkborkborkbork', 'borkborkbork borkborkbork']
  721. tomatotomatotomato
  722. ['tomato tomatotomato', 'tomatotomato tomato', 'tomato tomato tomato']
  723. endstart
  724. ['end start', 'start']
  725. endend
  726. ['end end', 'end']
  727. startstart
  728. ['start start']
  729. wordend
  730. ['word end', 'word', 'wordword']
  731. wordstart
  732. ['word start', 'bork start']
  733. preborkprebork
  734. ['prebork prebork', 'preborkbork', 'preborkborkbork']
  735. preborkpreborkbork
  736. ['prebork preborkbork', 'preborkborkbork', 'preborkborkborkbork']
  737. startwordwordwordwordend
  738. ['startwordwordwordword end', 'startwordwordwordword', 'start wordwordwordword end']
  739. borkpreborkpreborkbork
  740. ['bork preborkpreborkbork', 'bork prebork preborkbork', 'bork preborkprebork bork']
  741. utilsbork
  742. ['utilbork', 'utils bork', 'util bork']
  743. startnouword
  744. ['start nouword', 'startword', 'startborkword']]=])
  745. end)
  746. it('part 5-5', function()
  747. insert([[
  748. Test affix flags with two characters
  749. 5good: fooa1 fooaé bar prebar barbork prebarbork startprebar
  750. start end startend startmiddleend nouend
  751. bad: foo fooa2 prabar probarbirk middle startmiddle middleend endstart
  752. startprobar startnouend
  753. badend
  754. ]])
  755. test_one(5, 5)
  756. feed_command('1,/^test 5-5/-1d')
  757. expect([=[
  758. test 5-5
  759. # file: Xtest.utf-8.spl
  760. bar
  761. barbork
  762. end
  763. fooa1
  764. fooaé
  765. nouend
  766. prebar
  767. prebarbork
  768. start
  769. -------
  770. bad
  771. ['bar', 'end', 'fooa1']
  772. foo
  773. ['fooa1', 'fooaé', 'bar']
  774. fooa2
  775. ['fooa1', 'fooaé', 'bar']
  776. prabar
  777. ['prebar', 'bar', 'bar bar']
  778. probarbirk
  779. ['prebarbork']
  780. middle
  781. []
  782. startmiddle
  783. ['startmiddleend', 'startmiddlebar']
  784. middleend
  785. []
  786. endstart
  787. ['end start', 'start']
  788. startprobar
  789. ['startprebar', 'start prebar', 'startbar']
  790. startnouend
  791. ['start nouend', 'startend']]=])
  792. end)
  793. it('part 6-6', function()
  794. insert([[
  795. 6good: meea1 meeaé bar prebar barbork prebarbork leadprebar
  796. lead end leadend leadmiddleend
  797. bad: mee meea2 prabar probarbirk middle leadmiddle middleend endlead
  798. leadprobar
  799. badend
  800. ]])
  801. test_one(6, 6)
  802. feed_command('1,/^test 6-6/-1d')
  803. expect([=[
  804. test 6-6
  805. # file: Xtest.utf-8.spl
  806. bar
  807. barbork
  808. end
  809. lead
  810. meea1
  811. meeaé
  812. prebar
  813. prebarbork
  814. -------
  815. bad
  816. ['bar', 'end', 'lead']
  817. mee
  818. ['meea1', 'meeaé', 'bar']
  819. meea2
  820. ['meea1', 'meeaé', 'lead']
  821. prabar
  822. ['prebar', 'bar', 'leadbar']
  823. probarbirk
  824. ['prebarbork']
  825. middle
  826. []
  827. leadmiddle
  828. ['leadmiddleend', 'leadmiddlebar']
  829. middleend
  830. []
  831. endlead
  832. ['end lead', 'lead', 'end end']
  833. leadprobar
  834. ['leadprebar', 'lead prebar', 'leadbar']]=])
  835. end)
  836. it('part 7-7', function()
  837. insert([[
  838. 7good: meea1 meeaé bar prebar barmeat prebarmeat leadprebar
  839. lead tail leadtail leadmiddletail
  840. bad: mee meea2 prabar probarmaat middle leadmiddle middletail taillead
  841. leadprobar
  842. badend
  843. ]])
  844. -- Compound words.
  845. test_one(7, 7)
  846. -- Assert buffer contents.
  847. feed_command('1,/^test 7-7/-1d')
  848. expect([=[
  849. test 7-7
  850. # file: Xtest.utf-8.spl
  851. bar
  852. barmeat
  853. lead
  854. meea1
  855. meeaé
  856. prebar
  857. prebarmeat
  858. tail
  859. -------
  860. bad
  861. ['bar', 'lead', 'tail']
  862. mee
  863. ['meea1', 'meeaé', 'bar']
  864. meea2
  865. ['meea1', 'meeaé', 'lead']
  866. prabar
  867. ['prebar', 'bar', 'leadbar']
  868. probarmaat
  869. ['prebarmeat']
  870. middle
  871. []
  872. leadmiddle
  873. ['leadmiddlebar']
  874. middletail
  875. []
  876. taillead
  877. ['tail lead', 'tail']
  878. leadprobar
  879. ['leadprebar', 'lead prebar', 'leadbar']]=])
  880. end)
  881. it('part 8-8', function()
  882. insert([[
  883. 8good: foo bar faabar
  884. bad: foobar barfoo
  885. badend
  886. ]])
  887. -- NOSPLITSUGS
  888. test_one(8, 8)
  889. -- Assert buffer contents.
  890. feed_command('1,/^test 8-8/-1d')
  891. expect([=[
  892. test 8-8
  893. # file: Xtest.utf-8.spl
  894. bar
  895. faabar
  896. foo
  897. -------
  898. bad
  899. ['bar', 'foo']
  900. foobar
  901. ['faabar', 'foo bar', 'bar']
  902. barfoo
  903. ['bar foo', 'bar', 'foo']]=])
  904. end)
  905. it('part 9-9', function()
  906. insert([[
  907. 9good: 0b1011 0777 1234 0x01ff
  908. badend
  909. ]])
  910. -- NOSPLITSUGS
  911. test_one(9, 9)
  912. -- Assert buffer contents.
  913. feed_command('1,/^test 9-9/-1d')
  914. expect([=[
  915. test 9-9
  916. # file: Xtest.utf-8.spl
  917. bar
  918. foo
  919. -------]=])
  920. end)
  921. end)