aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthieu Coudron <matthieu.coudron@upmc.fr>2017-02-28 09:34:02 +0100
committerJustin M. Keyes <justinkz@gmail.com>2017-02-28 09:34:02 +0100
commit5ed753044d650e7c2c0b65f0b04831097078d48a (patch)
tree2bf853af6165322539a442afb34c96c9cd72c4a8
parente0705021c10cba81d71de79de2f8bbebecd121a1 (diff)
downloadrneovim-5ed753044d650e7c2c0b65f0b04831097078d48a.tar.gz
rneovim-5ed753044d650e7c2c0b65f0b04831097078d48a.tar.bz2
rneovim-5ed753044d650e7c2c0b65f0b04831097078d48a.zip
test: Refactor fold tests (#5993)
-rw-r--r--test/functional/helpers.lua6
-rw-r--r--test/functional/legacy/045_folding_spec.lua204
2 files changed, 147 insertions, 63 deletions
diff --git a/test/functional/helpers.lua b/test/functional/helpers.lua
index 65d1ad76ef..44fff0e9a7 100644
--- a/test/functional/helpers.lua
+++ b/test/functional/helpers.lua
@@ -435,6 +435,11 @@ local function expect(contents)
return eq(dedent(contents), curbuf_contents())
end
+local function expect_any(contents)
+ contents = dedent(contents)
+ return ok(nil ~= string.find(curbuf_contents(), contents, 1, true))
+end
+
local function do_rmdir(path)
if lfs.attributes(path, 'mode') ~= 'directory' then
return nil
@@ -585,6 +590,7 @@ local M = {
eq = eq,
neq = neq,
expect = expect,
+ expect_any = expect_any,
ok = ok,
map = map,
filter = filter,
diff --git a/test/functional/legacy/045_folding_spec.lua b/test/functional/legacy/045_folding_spec.lua
index cefd7c0d42..5c8292c324 100644
--- a/test/functional/legacy/045_folding_spec.lua
+++ b/test/functional/legacy/045_folding_spec.lua
@@ -1,30 +1,34 @@
-- Tests for folding.
+local Screen = require('test.functional.ui.screen')
local helpers = require('test.functional.helpers')(after_each)
-local feed, insert, clear, execute, expect =
- helpers.feed, helpers.insert, helpers.clear, helpers.execute, helpers.expect
+local feed, insert, execute, expect_any =
+ helpers.feed, helpers.insert, helpers.execute, helpers.expect_any
describe('folding', function()
- before_each(clear)
+ local screen
- it('is working', function()
+ before_each(function()
+ helpers.clear()
+
+ screen = Screen.new(20, 8)
+ screen:attach()
+ end)
+ after_each(function()
+ screen:detach()
+ end)
+
+ it('creation, opening, moving (to the end) and closing', function()
insert([[
1 aa
2 bb
3 cc
- 4 dd {{{
- 5 ee {{{ }}}
- 6 ff }}}
- 7 gg
- 8 hh
- 9 ii
- a jj
- b kk
- last]])
+ last
+ ]])
-- Basic test if a fold can be created, opened, moving to the end and
-- closed.
- execute('/^1')
+ execute('1')
feed('zf2j')
execute('call append("$", "manual " . getline(foldclosed(".")))')
feed('zo')
@@ -33,24 +37,88 @@ describe('folding', function()
execute('call append("$", getline("."))')
feed('zc')
execute('call append("$", getline(foldclosed(".")))')
- -- Test folding with markers.
- execute('set fdm=marker fdl=1 fdc=3')
- execute('/^5')
- execute('call append("$", "marker " . foldlevel("."))')
+
+ expect_any([[
+ manual 1 aa
+ -1
+ 3 cc
+ 1 aa]])
+ end)
+
+ it("foldmethod=marker", function()
+ screen:try_resize(20, 10)
+ insert([[
+ dd {{{
+ ee {{{ }}}
+ ff }}}
+ ]])
+ execute('set fdm=marker fdl=1')
+ execute('2')
+ execute('call append("$", "line 2 foldlevel=" . foldlevel("."))')
feed('[z')
execute('call append("$", foldlevel("."))')
- feed('jo{{ <esc>r{jj')
+ feed('jo{{ <esc>r{jj') -- writes '{{{' and moves 2 lines bot
execute('call append("$", foldlevel("."))')
feed('kYpj')
execute('call append("$", foldlevel("."))')
- -- Test folding with indent.
+
+ helpers.wait()
+ screen:expect([[
+ dd {{{ |
+ ee {{{ }}} |
+ {{{ |
+ ff }}} |
+ ff }}} |
+ ^ |
+ line 2 foldlevel=2 |
+ 1 |
+ 1 |
+ |
+ ]])
+
+ end)
+
+ it("foldmethod=indent", function()
+ screen:try_resize(20, 8)
execute('set fdm=indent sw=2')
- execute('/^2 b')
- feed('i <esc>jI <esc>')
- execute('call append("$", "indent " . foldlevel("."))')
- feed('k')
- execute('call append("$", foldlevel("."))')
- -- Test syntax folding.
+ insert([[
+ aa
+ bb
+ cc
+ last
+ ]])
+ execute('call append("$", "foldlevel line3=" . foldlevel(3))')
+ execute('call append("$", foldlevel(2))')
+ feed('zR')
+
+ helpers.wait()
+ screen:expect([[
+ aa |
+ bb |
+ cc |
+ last |
+ ^ |
+ foldlevel line3=2 |
+ 1 |
+ |
+ ]])
+ end)
+
+ it("foldmethod=syntax", function()
+ screen:try_resize(35, 15)
+ insert([[
+ 1 aa
+ 2 bb
+ 3 cc
+ 4 dd {{{
+ 5 ee {{{ }}}
+ 6 ff }}}
+ 7 gg
+ 8 hh
+ 9 ii
+ a jj
+ b kk
+ last]])
execute('set fdm=syntax fdl=0')
execute('syn region Hup start="dd" end="ii" fold contains=Fd1,Fd2,Fd3')
execute('syn region Fd1 start="ee" end="ff" fold contained')
@@ -65,22 +133,46 @@ describe('folding', function()
feed('3j')
execute('call append("$", getline("."))')
execute('set fdl=0')
- feed('zO<C-L>j')
+ feed('zO<C-L>j') -- <C-L> redraws screen
execute('call append("$", getline("."))')
- -- Test expression folding.
- execute('fun Flvl()')
- execute(' let l = getline(v:lnum)')
- execute(' if l =~ "bb$"')
- execute(' return 2')
- execute(' elseif l =~ "gg$"')
- execute(' return "s1"')
- execute(' elseif l =~ "ii$"')
- execute(' return ">2"')
- execute(' elseif l =~ "kk$"')
- execute(' return "0"')
- execute(' endif')
- execute(' return "="')
- execute('endfun')
+ execute('set fdl=0')
+ expect_any([[
+ folding 9 ii
+ 3 cc
+ 9 ii
+ a jj]])
+ end)
+
+ it("foldmethod=expression", function()
+ insert([[
+ 1 aa
+ 2 bb
+ 3 cc
+ 4 dd {{{
+ 5 ee {{{ }}}
+ 6 ff }}}
+ 7 gg
+ 8 hh
+ 9 ii
+ a jj
+ b kk
+ last ]])
+
+ execute([[
+ fun Flvl()
+ let l = getline(v:lnum)
+ if l =~ "bb$"
+ return 2
+ elseif l =~ "gg$"
+ return "s1"
+ elseif l =~ "ii$"
+ return ">2"
+ elseif l =~ "kk$"
+ return "0"
+ endif
+ return "="
+ endfun
+ ]])
execute('set fdm=expr fde=Flvl()')
execute('/bb$')
execute('call append("$", "expr " . foldlevel("."))')
@@ -90,46 +182,31 @@ describe('folding', function()
execute('call append("$", foldlevel("."))')
execute('/kk$')
execute('call append("$", foldlevel("."))')
- execute('0,/^last/delete')
- execute('delfun Flvl')
- -- Assert buffer contents.
- expect([[
- manual 1 aa
- -1
- 3 cc
- 1 aa
- marker 2
- 1
- 1
- 0
- indent 2
- 1
- folding 9 ii
- 3 cc
- 7 gg
- 8 hh
+ expect_any([[
expr 2
1
2
0]])
end)
- it('can open after :move', function()
+ it('can be opened after :move', function()
+ -- luacheck: ignore
+ screen:try_resize(35, 8)
insert([[
Test fdm=indent and :move bug END
line2
Test fdm=indent START
line3
line4]])
-
- execute('set noai nosta')
+ execute('set noai nosta ')
execute('set fdm=indent')
execute('1m1')
feed('2jzc')
execute('m0')
+ feed('zR')
- expect([[
+ expect_any([[
Test fdm=indent START
line3
line4
@@ -137,3 +214,4 @@ describe('folding', function()
line2]])
end)
end)
+