diff options
author | Björn Linse <bjorn.linse@gmail.com> | 2014-10-26 16:10:36 +0100 |
---|---|---|
committer | Björn Linse <bjorn.linse@gmail.com> | 2014-11-01 12:05:36 +0100 |
commit | d6da42475888bae48104d1de98fcc9640b619de3 (patch) | |
tree | 070714ceb34d1534544075298f37ab826019e160 /test/functional/api/window_spec.lua | |
parent | b34705bf5fd807203b9cb07d91755bd09d808d18 (diff) | |
download | rneovim-d6da42475888bae48104d1de98fcc9640b619de3.tar.gz rneovim-d6da42475888bae48104d1de98fcc9640b619de3.tar.bz2 rneovim-d6da42475888bae48104d1de98fcc9640b619de3.zip |
test/api: add test for set_cursor always updating the screen
Diffstat (limited to 'test/functional/api/window_spec.lua')
-rw-r--r-- | test/functional/api/window_spec.lua | 69 |
1 files changed, 67 insertions, 2 deletions
diff --git a/test/functional/api/window_spec.lua b/test/functional/api/window_spec.lua index a3814cce0f..4c867d2f5d 100644 --- a/test/functional/api/window_spec.lua +++ b/test/functional/api/window_spec.lua @@ -1,9 +1,28 @@ -- Sanity checks for window_* API calls via msgpack-rpc local helpers = require('test.functional.helpers') local clear, nvim, buffer, curbuf, curbuf_contents, window, curwin, eq, neq, - ok = helpers.clear, helpers.nvim, helpers.buffer, helpers.curbuf, + ok, feed, rawfeed, insert, eval = helpers.clear, helpers.nvim, helpers.buffer, helpers.curbuf, helpers.curbuf_contents, helpers.window, helpers.curwin, helpers.eq, - helpers.neq, helpers.ok + helpers.neq, helpers.ok, helpers.feed, helpers.rawfeed, helpers.insert, helpers.eval + +-- check if str is visible at the beginning of some line +local function is_visible(str) + local slen = string.len(str) + local nlines = eval("&lines") + for i = 1,nlines do + local iseq = true + for j = 1,slen do + if string.byte(str,j) ~= eval("screenchar("..i..","..j..")") then + iseq = false + break + end + end + if iseq then + return true + end + end + return false +end describe('window_* functions', function() before_each(clear) @@ -29,6 +48,52 @@ describe('window_* functions', function() nvim('command', 'normal i dumb') eq('typing\n some dumb text', curbuf_contents()) end) + + it('updates the screen, and also when the window is unfocused', function() + insert("prologue") + feed('100o<esc>') + insert("epilogue") + win = curwin() + feed('gg') + + -- cursor position is at beginning + eq({1, 0}, window('get_cursor', win)) + eq(true, is_visible("prologue")) + eq(false, is_visible("epilogue")) + + -- move cursor to end + window('set_cursor', win, {101, 0}) + eq(false, is_visible("prologue")) + eq(true, is_visible("epilogue")) + + -- move cursor to the beginning again + window('set_cursor', win, {1, 0}) + eq(true, is_visible("prologue")) + eq(false, is_visible("epilogue")) + + -- move focus to new window + nvim('command',"new") + neq(win, curwin()) + + -- sanity check, cursor position is kept + eq({1, 0}, window('get_cursor', win)) + eq(true, is_visible("prologue")) + eq(false, is_visible("epilogue")) + + -- move cursor to end + window('set_cursor', win, {101, 0}) + eq(false, is_visible("prologue")) + eq(true, is_visible("epilogue")) + + -- move cursor to the beginning again + window('set_cursor', win, {1, 0}) + eq(true, is_visible("prologue")) + eq(false, is_visible("epilogue")) + + -- curwin didn't change back + neq(win, curwin()) + end) + end) describe('{get,set}_height', function() |