aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJames McCoy <jamessan@jamessan.com>2017-02-23 07:30:20 -0500
committerGitHub <noreply@github.com>2017-02-23 07:30:20 -0500
commit9752a333c32c344eb0cd86b4a3bba4ce6cba3b23 (patch)
tree8a34046b26b8ae39373005a29f6a72564e3ccf13 /test
parent4e21311f9cceabcfaa6c746518cb2628deb2bb40 (diff)
parentd4dd447ded5e0818fe3e49ebbe59fdafdaae7a1b (diff)
downloadrneovim-9752a333c32c344eb0cd86b4a3bba4ce6cba3b23.tar.gz
rneovim-9752a333c32c344eb0cd86b4a3bba4ce6cba3b23.tar.bz2
rneovim-9752a333c32c344eb0cd86b4a3bba4ce6cba3b23.zip
Merge pull request #5771 from brcolow/lambda
Lambda Support
Diffstat (limited to 'test')
-rw-r--r--test/functional/core/job_spec.lua21
-rw-r--r--test/functional/ex_cmds/dict_notifications_spec.lua26
2 files changed, 39 insertions, 8 deletions
diff --git a/test/functional/core/job_spec.lua b/test/functional/core/job_spec.lua
index 6e9633465f..b551adb8db 100644
--- a/test/functional/core/job_spec.lua
+++ b/test/functional/core/job_spec.lua
@@ -391,6 +391,27 @@ describe('jobs', function()
eq({'notification', '1', {'foo', 'bar', {'some text', ''}, 'stdout'}}, next_msg())
end)
+ it('jobstart() works with closures', function()
+ source([[
+ fun! MkFun()
+ let a1 = 'foo'
+ let a2 = 'bar'
+ return {id, data, event -> rpcnotify(g:channel, '1', a1, a2, Normalize(data), event)}
+ endfun
+ let g:job_opts = {'on_stdout': MkFun()}
+ call jobstart('echo "some text"', g:job_opts)
+ ]])
+ eq({'notification', '1', {'foo', 'bar', {'some text', ''}, 'stdout'}}, next_msg())
+ end)
+
+ it('jobstart() works when closure passed directly to `jobstart`', function()
+ source([[
+ let g:job_opts = {'on_stdout': {id, data, event -> rpcnotify(g:channel, '1', 'foo', 'bar', Normalize(data), event)}}
+ call jobstart('echo "some text"', g:job_opts)
+ ]])
+ eq({'notification', '1', {'foo', 'bar', {'some text', ''}, 'stdout'}}, next_msg())
+ end)
+
describe('jobwait', function()
it('returns a list of status codes', function()
source([[
diff --git a/test/functional/ex_cmds/dict_notifications_spec.lua b/test/functional/ex_cmds/dict_notifications_spec.lua
index 5e89986c0f..30753c34ac 100644
--- a/test/functional/ex_cmds/dict_notifications_spec.lua
+++ b/test/functional/ex_cmds/dict_notifications_spec.lua
@@ -254,23 +254,33 @@ describe('dictionary change notifications', function()
command('call g:ReplaceWatcher2()')
command('let g:key = "value"')
eq({'notification', '2b', {'key', {old = 'v2', new = 'value'}}}, next_msg())
-
end)
it('does not crash when freeing a watched dictionary', function()
source([[
- function! Watcher(dict, key, value)
- echo a:key string(a:value)
- endfunction
+ function! Watcher(dict, key, value)
+ echo a:key string(a:value)
+ endfunction
- function! MakeWatch()
- let d = {'foo': 'bar'}
- call dictwatcheradd(d, 'foo', function('Watcher'))
- endfunction
+ function! MakeWatch()
+ let d = {'foo': 'bar'}
+ call dictwatcheradd(d, 'foo', function('Watcher'))
+ endfunction
]])
command('call MakeWatch()')
eq(2, eval('1+1')) -- Still alive?
end)
end)
+
+ describe('with lambdas', function()
+ it('works correctly', function()
+ source([[
+ let d = {'foo': 'baz'}
+ call dictwatcheradd(d, 'foo', {dict, key, value -> rpcnotify(g:channel, '2', key, value)})
+ let d.foo = 'bar'
+ ]])
+ eq({'notification', '2', {'foo', {old = 'baz', new = 'bar'}}}, next_msg())
+ end)
+ end)
end)