aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorLucas Hoffmann <l-m-h@web.de>2015-07-09 15:38:56 +0200
committerLucas Hoffmann <l-m-h@web.de>2016-05-23 10:17:51 +0200
commit622a3ae8ea7e1761f31eaea99e22b5453a286c56 (patch)
tree6cfdb0dbbff99069d8207144019daec204a4442a /test
parent176f223ea3d1e8fb5716d5c2c0f09bead4864d59 (diff)
downloadrneovim-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.lua339
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)