diff options
author | Lucas Hoffmann <l-m-h@web.de> | 2015-07-09 15:38:56 +0200 |
---|---|---|
committer | Lucas Hoffmann <l-m-h@web.de> | 2016-05-23 10:17:51 +0200 |
commit | 622a3ae8ea7e1761f31eaea99e22b5453a286c56 (patch) | |
tree | 6cfdb0dbbff99069d8207144019daec204a4442a /test | |
parent | 176f223ea3d1e8fb5716d5c2c0f09bead4864d59 (diff) | |
download | rneovim-622a3ae8ea7e1761f31eaea99e22b5453a286c56.tar.gz rneovim-622a3ae8ea7e1761f31eaea99e22b5453a286c56.tar.bz2 rneovim-622a3ae8ea7e1761f31eaea99e22b5453a286c56.zip |
tests: Migrate legacy test 69.
Diffstat (limited to 'test')
-rw-r--r-- | test/functional/legacy/069_multi_byte_formatting_spec.lua | 339 |
1 files changed, 339 insertions, 0 deletions
diff --git a/test/functional/legacy/069_multi_byte_formatting_spec.lua b/test/functional/legacy/069_multi_byte_formatting_spec.lua new file mode 100644 index 0000000000..5ca429a787 --- /dev/null +++ b/test/functional/legacy/069_multi_byte_formatting_spec.lua @@ -0,0 +1,339 @@ +-- Test for multi-byte text formatting. +-- Also test, that 'mps' with multibyte chars works. +-- And test "ra" on multi-byte characters. +-- Also test byteidx() and byteidxcomp() + +local helpers = require('test.functional.helpers') +local feed, insert = helpers.feed, helpers.insert +local clear, execute, expect = helpers.clear, helpers.execute, helpers.expect + +describe('multi byte text', function() + before_each(clear) + + it('formatting with "set fo=t"', function() + insert([[ + { + XYZ + abc XYZ + }]]) + execute('/^{/+1') + execute('set tw=2 fo=t') + feed('gqgqjgqgqo<cr>') + feed('XYZ<cr>') + feed('abc XYZ<esc><esc>') + expect([[ + { + XYZ + abc + XYZ + + XYZ + abc + XYZ + }]]) + end) + + it('formatting with "set fo=tm"', function() + insert([[ + { + X + Xa + X a + XY + X Y + }]]) + execute('/^{/+1') + execute('set tw=1 fo=tm') + feed('gqgqjgqgqjgqgqjgqgqjgqgqo<cr>') + feed('X<cr>') + feed('Xa<cr>') + feed('X a<cr>') + feed('XY<cr>') + feed('X Y<esc><esc>') + expect([[ + { + X + X + a + X + a + X + Y + X + Y + + X + X + a + X + a + X + Y + X + Y + }]]) + end) + + it('formatting with "set fo=tm" (part 2)', function() + insert([[ + { + X + Xa + X a + XY + X Y + aX + abX + abcX + abX c + abXY + }]]) + execute('/^{/+1') + execute('set tw=2 fo=tm') + feed('gqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo<cr>') + feed('X<cr>') + feed('Xa<cr>') + feed('X a<cr>') + feed('XY<cr>') + feed('X Y<cr>') + feed('aX<cr>') + feed('abX<cr>') + feed('abcX<cr>') + feed('abX c<cr>') + feed('abXY<esc><esc>') + expect([[ + { + X + X + a + X + a + X + Y + X + Y + a + X + ab + X + abc + X + ab + X + c + ab + X + Y + + X + X + a + X + a + X + Y + X + Y + a + X + ab + X + abc + X + ab + X + c + ab + X + Y + }]]) + end) + + it('formatting with "set ai fo=tm"', function() + insert([[ + { + X + Xa + }]]) + execute('/^{/+1') + execute('set ai tw=2 fo=tm') + feed('gqgqjgqgqo<cr>') + feed('X<cr>') + feed('Xa<esc>') + expect([[ + { + X + X + a + + X + X + a + }]]) + end) + + it('formatting with "set ai fo=tm" (part 2)', function() + insert([[ + { + X + Xa + }]]) + execute('/^{/+1') + execute('set noai tw=2 fo=tm') + feed('gqgqjgqgqo<cr>') + -- Literal spaces will be trimmed from the by feed(). + feed('<space><space>X<cr>') + feed('<space><space>Xa<esc>') + expect([[ + { + X + X + a + + X + X + a + }]]) + end) + + it('formatting with "set fo=cqm" and multi byte comments', function() + insert([[ + { + X + Xa + XaY + XY + XYZ + X Y + X YZ + XX + XXa + XXY + }]]) + execute('/^{/+1') + execute('set tw=2 fo=cqm comments=n:X') + feed('gqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo<cr>') + feed('X<cr>') + feed('Xa<cr>') + feed('XaY<cr>') + feed('XY<cr>') + feed('XYZ<cr>') + feed('X Y<cr>') + feed('X YZ<cr>') + feed('XX<cr>') + feed('XXa<cr>') + feed('XXY<esc><esc>') + expect([[ + { + X + Xa + Xa + XY + XY + XY + XZ + X Y + X Y + X Z + XX + XXa + XXY + + X + Xa + Xa + XY + XY + XY + XZ + X Y + X Y + X Z + XX + XXa + XXY + }]]) + end) + + it('formatting in replace mode', function() + insert([[ + { + + }]]) + execute('/^{/+1') + execute('set tw=2 fo=tm') + feed('RXa<esc>') + expect([[ + { + X + a + }]]) + end) + + it("as values of 'mps'", function() + insert([[ + { + ‘ two three ’ four + }]]) + execute('/^{/+1') + execute('set mps+=‘:’') + feed('d%<cr>') + expect([[ + { + four + }]]) + end) + + it('can be replaced with r', function() + insert([[ + abba + aab]]) + feed('gg0Vjra<cr>') + expect([[ + aaaa + aaa]]) + end) + + it("doesn't interfere with 'whichwrap'", function() + insert([[ + á + x]]) + execute('set whichwrap+=h') + execute('/^x') + feed('dh') + expect([[ + áx]]) + end) + + it('can be querried with byteidx() and byteidxcomp()', function() + insert([[ + byteidx + byteidxcomp]]) + -- One char of two bytes. + execute("let a = '.é.'") + -- Normal e with composing char. + execute("let b = '.é.'") + execute('/^byteidx') + execute('put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteidx(a, 4)])') + execute('put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteidx(b, 4)])') + execute('/^byteidxcomp') + execute('put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcomp(a, 3), byteidxcomp(a, 4)])') + execute("let b = '.é.'") + execute('put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcomp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])') + expect([=[ + byteidx + [0, 1, 3, 4, -1] + [0, 1, 4, 5, -1] + byteidxcomp + [0, 1, 3, 4, -1] + [0, 1, 2, 4, 5, -1]]=]) + end) + + it('correctly interact with the \zs pattern', function() + insert('substitute') + execute([[let y = substitute('123', '\zs', 'a', 'g') | put =y]]) + expect([[ + substitute + a1a2a3a]]) + end) +end) |