diff options
author | Matthieu Coudron <matthieu.coudron@upmc.fr> | 2017-02-28 09:34:02 +0100 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2017-02-28 09:34:02 +0100 |
commit | 5ed753044d650e7c2c0b65f0b04831097078d48a (patch) | |
tree | 2bf853af6165322539a442afb34c96c9cd72c4a8 | |
parent | e0705021c10cba81d71de79de2f8bbebecd121a1 (diff) | |
download | rneovim-5ed753044d650e7c2c0b65f0b04831097078d48a.tar.gz rneovim-5ed753044d650e7c2c0b65f0b04831097078d48a.tar.bz2 rneovim-5ed753044d650e7c2c0b65f0b04831097078d48a.zip |
test: Refactor fold tests (#5993)
-rw-r--r-- | test/functional/helpers.lua | 6 | ||||
-rw-r--r-- | test/functional/legacy/045_folding_spec.lua | 204 |
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) + |