aboutsummaryrefslogtreecommitdiff
path: root/test/old/testdir/test_vimscript.vim
diff options
context:
space:
mode:
Diffstat (limited to 'test/old/testdir/test_vimscript.vim')
-rw-r--r--test/old/testdir/test_vimscript.vim83
1 files changed, 74 insertions, 9 deletions
diff --git a/test/old/testdir/test_vimscript.vim b/test/old/testdir/test_vimscript.vim
index 6ce59e1a2e..7f29c7f651 100644
--- a/test/old/testdir/test_vimscript.vim
+++ b/test/old/testdir/test_vimscript.vim
@@ -6502,16 +6502,22 @@ func Test_type()
call assert_equal(2, type(function("tr", [8])))
call assert_equal(3, type([]))
call assert_equal(4, type({}))
- call assert_equal(5, type(0.0))
+ if has('float')
+ call assert_equal(5, type(0.0))
+ endif
call assert_equal(6, type(v:false))
call assert_equal(6, type(v:true))
+ " call assert_equal(7, type(v:none))
call assert_equal(7, type(v:null))
call assert_equal(v:t_number, type(0))
call assert_equal(v:t_string, type(""))
call assert_equal(v:t_func, type(function("tr")))
+ call assert_equal(v:t_func, type(function("tr", [8])))
call assert_equal(v:t_list, type([]))
call assert_equal(v:t_dict, type({}))
- call assert_equal(v:t_float, type(0.0))
+ if has('float')
+ call assert_equal(v:t_float, type(0.0))
+ endif
call assert_equal(v:t_bool, type(v:false))
call assert_equal(v:t_bool, type(v:true))
" call assert_equal(v:t_none, type(v:none))
@@ -6829,10 +6835,12 @@ func Test_bitwise_functions()
call assert_equal(16, and(127, 16))
eval 127->and(16)->assert_equal(16)
call assert_equal(0, and(127, 128))
- call assert_fails("call and(1.0, 1)", 'E805:')
call assert_fails("call and([], 1)", 'E745:')
call assert_fails("call and({}, 1)", 'E728:')
- call assert_fails("call and(1, 1.0)", 'E805:')
+ if has('float')
+ call assert_fails("call and(1.0, 1)", 'E805:')
+ call assert_fails("call and(1, 1.0)", 'E805:')
+ endif
call assert_fails("call and(1, [])", 'E745:')
call assert_fails("call and(1, {})", 'E728:')
" or
@@ -6840,10 +6848,12 @@ func Test_bitwise_functions()
call assert_equal(15, or(8, 7))
eval 8->or(7)->assert_equal(15)
call assert_equal(123, or(0, 123))
- call assert_fails("call or(1.0, 1)", 'E805:')
call assert_fails("call or([], 1)", 'E745:')
call assert_fails("call or({}, 1)", 'E728:')
- call assert_fails("call or(1, 1.0)", 'E805:')
+ if has('float')
+ call assert_fails("call or(1.0, 1)", 'E805:')
+ call assert_fails("call or(1, 1.0)", 'E805:')
+ endif
call assert_fails("call or(1, [])", 'E745:')
call assert_fails("call or(1, {})", 'E728:')
" xor
@@ -6851,10 +6861,12 @@ func Test_bitwise_functions()
call assert_equal(111, xor(127, 16))
eval 127->xor(16)->assert_equal(111)
call assert_equal(255, xor(127, 128))
- call assert_fails("call xor(1.0, 1)", 'E805:')
+ if has('float')
+ call assert_fails("call xor(1.0, 1)", 'E805:')
+ call assert_fails("call xor(1, 1.0)", 'E805:')
+ endif
call assert_fails("call xor([], 1)", 'E745:')
call assert_fails("call xor({}, 1)", 'E728:')
- call assert_fails("call xor(1, 1.0)", 'E805:')
call assert_fails("call xor(1, [])", 'E745:')
call assert_fails("call xor(1, {})", 'E728:')
" invert
@@ -6862,7 +6874,9 @@ func Test_bitwise_functions()
eval 127->invert()->and(65535)->assert_equal(65408)
call assert_equal(65519, and(invert(16), 65535))
call assert_equal(65407, and(invert(128), 65535))
- call assert_fails("call invert(1.0)", 'E805:')
+ if has('float')
+ call assert_fails("call invert(1.0)", 'E805:')
+ endif
call assert_fails("call invert([])", 'E745:')
call assert_fails("call invert({})", 'E728:')
endfunc
@@ -7435,6 +7449,57 @@ func Test_for_over_string()
let res ..= c .. '-'
endfor
call assert_equal('', res)
+
+ " Test for using "_" as the loop variable
+ let i = 0
+ let s = 'abc'
+ for _ in s
+ call assert_equal(s[i], _)
+ let i += 1
+ endfor
+endfunc
+
+" Test for deeply nested :source command {{{1
+func Test_deeply_nested_source()
+ throw 'Skipped: Vim9 script is N/A'
+ let lines =<< trim END
+
+ so
+ sil 0scr
+ delete
+ so
+ 0
+ END
+ call writefile(["vim9 silent! @0 \n/"] + lines, 'Xnested.vim', 'D')
+
+ " this must not crash
+ let cmd = GetVimCommand() .. " -e -s -S Xnested.vim -c qa!"
+ call system(cmd)
+endfunc
+
+func Test_exception_silent()
+ XpathINIT
+ let lines =<< trim END
+ func Throw()
+ Xpath 'a'
+ throw "Uncaught"
+ " This line is not executed.
+ Xpath 'b'
+ endfunc
+ " The exception is suppressed due to the presence of silent!.
+ silent! call Throw()
+ try
+ call DoesNotExist()
+ catch /E117:/
+ Xpath 'c'
+ endtry
+ Xpath 'd'
+ END
+ let verify =<< trim END
+ call assert_equal('acd', g:Xpath)
+ END
+
+ call RunInNewVim(lines, verify)
endfunc
"-------------------------------------------------------------------------------