diff src/testdir/test_getvar.vim @ 17534:2b4c138bf8e9 v8.1.1765

patch 8.1.1765: get(func, dict, def) does not work properly commit https://github.com/vim/vim/commit/f91aac5e3e3b8b1633d84eac2687ebbd76d8133b Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jul 28 13:21:01 2019 +0200 patch 8.1.1765: get(func, dict, def) does not work properly Problem: get(func, dict, def) does not work properly. Solution: Handle NULL dict better. (Takuya Fujiwara, closes https://github.com/vim/vim/issues/4734)
author Bram Moolenaar <Bram@vim.org>
date Sun, 28 Jul 2019 13:30:07 +0200
parents 183dc24cf861
children 4935244c1128
line wrap: on
line diff
--- a/src/testdir/test_getvar.vim
+++ b/src/testdir/test_getvar.vim
@@ -1,4 +1,5 @@
-" Tests for getwinvar(), gettabvar() and gettabwinvar().
+" Tests for getwinvar(), gettabvar(), gettabwinvar() and get().
+
 func Test_var()
   " Use strings to test for memory leaks.  First, check that in an empty
   " window, gettabvar() returns the correct value
@@ -102,3 +103,44 @@ func Test_gettabvar_in_tabline()
   close
   redrawstatus!
 endfunc
+
+" Test get() function using default value.
+
+" get({dict}, {key} [, {default}])
+func Test_get_dict()
+  let d = {'foo': 42}
+  call assert_equal(42, get(d, 'foo', 99))
+  call assert_equal(999, get(d, 'bar', 999))
+endfunc
+
+" get({list}, {idx} [, {default}])
+func Test_get_list()
+  let l = [1,2,3]
+  call assert_equal(1, get(l, 0, 999))
+  call assert_equal(3, get(l, -1, 999))
+  call assert_equal(999, get(l, 3, 999))
+endfunc
+
+" get({blob}, {idx} [, {default}]) - in test_blob.vim
+
+" get({lambda}, {what} [, {default}])
+func Test_get_lambda()
+  let l:L = {-> 42}
+  call assert_match('^<lambda>', get(l:L, 'name'))
+  call assert_equal(l:L, get(l:L, 'func'))
+  call assert_equal({'lambda has': 'no dict'}, get(l:L, 'dict', {'lambda has': 'no dict'}))
+  call assert_equal(0, get(l:L, 'dict'))
+  call assert_equal([], get(l:L, 'args'))
+endfunc
+
+" get({func}, {what} [, {default}])
+func Test_get_func()
+  let l:F = function('tr')
+  call assert_equal('tr', get(l:F, 'name'))
+  call assert_equal(l:F, get(l:F, 'func'))
+  call assert_equal({'func has': 'no dict'}, get(l:F, 'dict', {'func has': 'no dict'}))
+  call assert_equal(0, get(l:F, 'dict'))
+  call assert_equal([], get(l:F, 'args'))
+endfunc
+
+" get({partial}, {what} [, {default}]) - in test_partial.vim