From c83926cd0aa5720e88e84fa3fae3c0e689cca3ef Mon Sep 17 00:00:00 2001 From: George Zhao Date: Mon, 10 Jun 2019 20:13:18 +0800 Subject: lua: introduce vim.loop (expose libuv event-loop) #10123 Co-authored-by: Andrey Popp <8mayday@gmail.com> closes #9546 closes #10084 --- test/functional/lua/loop_spec.lua | 55 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 test/functional/lua/loop_spec.lua (limited to 'test') diff --git a/test/functional/lua/loop_spec.lua b/test/functional/lua/loop_spec.lua new file mode 100644 index 0000000000..8cc54e8c13 --- /dev/null +++ b/test/functional/lua/loop_spec.lua @@ -0,0 +1,55 @@ +-- 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) -- cgit