mirror of
https://github.com/neovim/neovim.git
synced 2026-08-28 18:11:47 +00:00
Merge #2990 'tests: Migrate legacy test 69.'
This commit is contained in:
@@ -22,7 +22,6 @@ SCRIPTS := \
|
||||
test52.out \
|
||||
test53.out \
|
||||
test64.out \
|
||||
test69.out \
|
||||
test73.out \
|
||||
test79.out \
|
||||
test_marks.out \
|
||||
|
||||
@@ -1,191 +0,0 @@
|
||||
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()
|
||||
|
||||
STARTTEST
|
||||
:
|
||||
ENDTEST
|
||||
|
||||
Results of test69:
|
||||
|
||||
STARTTEST
|
||||
/^{/+1
|
||||
:set tw=2 fo=t
|
||||
gqgqjgqgqo
|
||||
XYZ
|
||||
abc XYZ
|
||||
ENDTEST
|
||||
|
||||
{
|
||||
XYZ
|
||||
abc XYZ
|
||||
}
|
||||
|
||||
STARTTEST
|
||||
/^{/+1
|
||||
:set tw=1 fo=tm
|
||||
gqgqjgqgqjgqgqjgqgqjgqgqo
|
||||
X
|
||||
Xa
|
||||
X a
|
||||
XY
|
||||
X Y
|
||||
ENDTEST
|
||||
|
||||
{
|
||||
X
|
||||
Xa
|
||||
X a
|
||||
XY
|
||||
X Y
|
||||
}
|
||||
|
||||
STARTTEST
|
||||
/^{/+1
|
||||
:set tw=2 fo=tm
|
||||
gqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo
|
||||
X
|
||||
Xa
|
||||
X a
|
||||
XY
|
||||
X Y
|
||||
aX
|
||||
abX
|
||||
abcX
|
||||
abX c
|
||||
abXY
|
||||
ENDTEST
|
||||
|
||||
{
|
||||
X
|
||||
Xa
|
||||
X a
|
||||
XY
|
||||
X Y
|
||||
aX
|
||||
abX
|
||||
abcX
|
||||
abX c
|
||||
abXY
|
||||
}
|
||||
|
||||
STARTTEST
|
||||
/^{/+1
|
||||
:set ai tw=2 fo=tm
|
||||
gqgqjgqgqo
|
||||
X
|
||||
Xa
|
||||
ENDTEST
|
||||
|
||||
{
|
||||
X
|
||||
Xa
|
||||
}
|
||||
|
||||
STARTTEST
|
||||
/^{/+1
|
||||
:set noai tw=2 fo=tm
|
||||
gqgqjgqgqo
|
||||
X
|
||||
Xa
|
||||
ENDTEST
|
||||
|
||||
{
|
||||
X
|
||||
Xa
|
||||
}
|
||||
|
||||
STARTTEST
|
||||
/^{/+1
|
||||
:set tw=2 fo=cqm comments=n:X
|
||||
gqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo
|
||||
X
|
||||
Xa
|
||||
XaY
|
||||
XY
|
||||
XYZ
|
||||
X Y
|
||||
X YZ
|
||||
XX
|
||||
XXa
|
||||
XXY
|
||||
ENDTEST
|
||||
|
||||
{
|
||||
X
|
||||
Xa
|
||||
XaY
|
||||
XY
|
||||
XYZ
|
||||
X Y
|
||||
X YZ
|
||||
XX
|
||||
XXa
|
||||
XXY
|
||||
}
|
||||
|
||||
STARTTEST
|
||||
/^{/+1
|
||||
:set tw=2 fo=tm
|
||||
RXa
|
||||
ENDTEST
|
||||
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
STARTTEST
|
||||
/^{/+1
|
||||
:set mps+=u2018:u2019
|
||||
d%
|
||||
ENDTEST
|
||||
|
||||
{
|
||||
‘ two three ’ four
|
||||
}
|
||||
STARTTEST
|
||||
/^ra test
|
||||
jVjra
|
||||
ENDTEST
|
||||
|
||||
ra test
|
||||
abba
|
||||
aab
|
||||
|
||||
STARTTEST
|
||||
:set whichwrap+=h
|
||||
/^x
|
||||
dh
|
||||
:set whichwrap-=h
|
||||
ENDTEST
|
||||
|
||||
á
|
||||
x
|
||||
|
||||
STARTTEST
|
||||
:let a = '.é.' " one char of two bytes
|
||||
:let b = '.é.' " normal e with composing char
|
||||
/^byteidx
|
||||
:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteidx(a, 4)])
|
||||
:put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteidx(b, 4)])
|
||||
/^byteidxcomp
|
||||
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcomp(a, 3), byteidxcomp(a, 4)])
|
||||
:let b = '.é.'
|
||||
:put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcomp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])
|
||||
ENDTEST
|
||||
|
||||
byteidx
|
||||
byteidxcomp
|
||||
|
||||
STARTTEST
|
||||
/^substitute
|
||||
:let y = substitute('123', '\zs', 'a', 'g') | put =y
|
||||
ENDTEST
|
||||
|
||||
substitute
|
||||
|
||||
STARTTEST
|
||||
:g/^STARTTEST/.,/^ENDTEST/d
|
||||
:1;/^Results/,$wq! test.out
|
||||
ENDTEST
|
||||
@@ -1,166 +0,0 @@
|
||||
Results of test69:
|
||||
|
||||
|
||||
{
|
||||
XYZ
|
||||
abc
|
||||
XYZ
|
||||
|
||||
XYZ
|
||||
abc
|
||||
XYZ
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
X
|
||||
X
|
||||
a
|
||||
X
|
||||
a
|
||||
X
|
||||
Y
|
||||
X
|
||||
Y
|
||||
|
||||
X
|
||||
X
|
||||
a
|
||||
X
|
||||
a
|
||||
X
|
||||
Y
|
||||
X
|
||||
Y
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
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
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
X
|
||||
X
|
||||
a
|
||||
|
||||
X
|
||||
X
|
||||
a
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
X
|
||||
X
|
||||
a
|
||||
|
||||
X
|
||||
X
|
||||
a
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
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
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
X
|
||||
a
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
four
|
||||
}
|
||||
|
||||
ra test
|
||||
aaaa
|
||||
aaa
|
||||
|
||||
|
||||
áx
|
||||
|
||||
|
||||
byteidx
|
||||
[0, 1, 3, 4, -1]
|
||||
[0, 1, 4, 5, -1]
|
||||
byteidxcomp
|
||||
[0, 1, 3, 4, -1]
|
||||
[0, 1, 2, 4, 5, -1]
|
||||
|
||||
|
||||
substitute
|
||||
a1a2a3a
|
||||
|
||||
340
test/functional/legacy/069_multibyte_formatting_spec.lua
Normal file
340
test/functional/legacy/069_multibyte_formatting_spec.lua
Normal file
@@ -0,0 +1,340 @@
|
||||
-- Test for multibyte text formatting.
|
||||
-- Also test, that 'mps' with multibyte chars works.
|
||||
-- And test "ra" on multibyte characters.
|
||||
-- Also test byteidx() and byteidxcomp()
|
||||
|
||||
local helpers = require('test.functional.helpers')(after_each)
|
||||
local feed, insert, eq, eval, clear, execute, expect = helpers.feed,
|
||||
helpers.insert, helpers.eq, helpers.eval, helpers.clear, helpers.execute,
|
||||
helpers.expect
|
||||
|
||||
describe('multibyte 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 multibyte 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 queried with byteidx() and byteidxcomp()', function()
|
||||
-- One char of two bytes.
|
||||
execute("let a = '.é.'")
|
||||
-- Normal e with composing char.
|
||||
execute("let b = '.é.'")
|
||||
eq(0, eval('byteidx(a, 0)'))
|
||||
eq(1, eval('byteidx(a, 1)'))
|
||||
eq(3, eval('byteidx(a, 2)'))
|
||||
eq(4, eval('byteidx(a, 3)'))
|
||||
eq(-1, eval('byteidx(a, 4)'))
|
||||
eq(0, eval('byteidx(b, 0)'))
|
||||
eq(1, eval('byteidx(b, 1)'))
|
||||
eq(4, eval('byteidx(b, 2)'))
|
||||
eq(5, eval('byteidx(b, 3)'))
|
||||
eq(-1, eval('byteidx(b, 4)'))
|
||||
eq(0, eval('byteidxcomp(a, 0)'))
|
||||
eq(1, eval('byteidxcomp(a, 1)'))
|
||||
eq(3, eval('byteidxcomp(a, 2)'))
|
||||
eq(4, eval('byteidxcomp(a, 3)'))
|
||||
eq(-1, eval('byteidxcomp(a, 4)'))
|
||||
eq(0, eval('byteidxcomp(b, 0)'))
|
||||
eq(1, eval('byteidxcomp(b, 1)'))
|
||||
eq(2, eval('byteidxcomp(b, 2)'))
|
||||
eq(4, eval('byteidxcomp(b, 3)'))
|
||||
eq(5, eval('byteidxcomp(b, 4)'))
|
||||
eq(-1, eval('byteidxcomp(b, 5)'))
|
||||
end)
|
||||
|
||||
it('correctly interact with the \zs pattern', function()
|
||||
eq('a1a2a3a', eval([[substitute('123', '\zs', 'a', 'g')]]))
|
||||
end)
|
||||
end)
|
||||
Reference in New Issue
Block a user