mirror of
https://github.com/neovim/neovim.git
synced 2025-09-06 11:28:22 +00:00
56 lines
1.5 KiB
Lua
56 lines
1.5 KiB
Lua
-- Test suite for testing interactions with API bindings
|
|
local helpers = require('test.functional.helpers')(after_each)
|
|
local funcs = helpers.funcs
|
|
local meths = helpers.meths
|
|
local clear = helpers.clear
|
|
local sleep = helpers.sleep
|
|
local eq = helpers.eq
|
|
local matches = helpers.matches
|
|
|
|
before_each(clear)
|
|
|
|
describe('vim.loop', function()
|
|
|
|
it('version', function()
|
|
assert(funcs.luaeval('vim.loop.version()')>=72961, "libuv version too old")
|
|
matches("(%d+)%.(%d+)%.(%d+)", funcs.luaeval('vim.loop.version_string()'))
|
|
end)
|
|
|
|
it('timer', function()
|
|
meths.execute_lua('vim.api.nvim_set_var("coroutine_cnt", 0)', {})
|
|
|
|
local code=[[
|
|
local loop = vim.loop
|
|
|
|
local touch = 0
|
|
local function wait(ms)
|
|
local this = coroutine.running()
|
|
assert(this)
|
|
local timer = loop.new_timer()
|
|
timer:start(ms, 0, function ()
|
|
timer:close()
|
|
touch = touch + 1
|
|
coroutine.resume(this)
|
|
touch = touch + 1
|
|
assert(touch==3)
|
|
vim.api.nvim_set_var("coroutine_cnt_1", touch)
|
|
end)
|
|
coroutine.yield()
|
|
touch = touch + 1
|
|
return touch
|
|
end
|
|
coroutine.wrap(function()
|
|
local touched = wait(10)
|
|
assert(touched==touch)
|
|
vim.api.nvim_set_var("coroutine_cnt", touched)
|
|
end)()
|
|
]]
|
|
|
|
eq(0, meths.get_var('coroutine_cnt'))
|
|
meths.execute_lua(code, {})
|
|
sleep(20)
|
|
eq(2, meths.get_var('coroutine_cnt'))
|
|
eq(3, meths.get_var('coroutine_cnt_1'))
|
|
end)
|
|
end)
|