|
|
@@ -13,6 +13,7 @@ enddef
|
|
|
|
|
|
|
|
|
|
|
|
" test cond ? expr : expr
|
|
|
|
" test cond ? expr : expr
|
|
|
|
def Test_expr1_trinary()
|
|
|
|
def Test_expr1_trinary()
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
assert_equal('one', true ? 'one' : 'two')
|
|
|
|
assert_equal('one', true ? 'one' : 'two')
|
|
|
|
assert_equal('one', 1 ?
|
|
|
|
assert_equal('one', 1 ?
|
|
|
|
'one' :
|
|
|
|
'one' :
|
|
|
@@ -59,6 +60,8 @@ def Test_expr1_trinary()
|
|
|
|
var Y = FuncTwo
|
|
|
|
var Y = FuncTwo
|
|
|
|
var Z = g:cond ? FuncOne : FuncTwo
|
|
|
|
var Z = g:cond ? FuncOne : FuncTwo
|
|
|
|
assert_equal(123, Z(3))
|
|
|
|
assert_equal(123, Z(3))
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckDefAndScriptSuccess(lines)
|
|
|
|
enddef
|
|
|
|
enddef
|
|
|
|
|
|
|
|
|
|
|
|
def Test_expr1_trinary_vimscript()
|
|
|
|
def Test_expr1_trinary_vimscript()
|
|
|
@@ -225,7 +228,6 @@ def Test_expr1_falsy()
|
|
|
|
call CheckDefFailure(["var x = 1??'one' : 'two'"], msg, 1)
|
|
|
|
call CheckDefFailure(["var x = 1??'one' : 'two'"], msg, 1)
|
|
|
|
enddef
|
|
|
|
enddef
|
|
|
|
|
|
|
|
|
|
|
|
" TODO: define inside test function
|
|
|
|
|
|
|
|
def Record(val: any): any
|
|
|
|
def Record(val: any): any
|
|
|
|
g:vals->add(val)
|
|
|
|
g:vals->add(val)
|
|
|
|
return val
|
|
|
|
return val
|
|
|
@@ -233,10 +235,14 @@ enddef
|
|
|
|
|
|
|
|
|
|
|
|
" test ||
|
|
|
|
" test ||
|
|
|
|
def Test_expr2()
|
|
|
|
def Test_expr2()
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
assert_equal(true, 1 || 0)
|
|
|
|
assert_equal(true, 1 || 0)
|
|
|
|
assert_equal(true, 0 ||
|
|
|
|
assert_equal(true, 0 ||
|
|
|
|
0 ||
|
|
|
|
0 ||
|
|
|
|
1)
|
|
|
|
1)
|
|
|
|
|
|
|
|
assert_equal(true, 0 ||
|
|
|
|
|
|
|
|
0 ||
|
|
|
|
|
|
|
|
!!7)
|
|
|
|
assert_equal(false, 0 || 0)
|
|
|
|
assert_equal(false, 0 || 0)
|
|
|
|
assert_equal(false, 0
|
|
|
|
assert_equal(false, 0
|
|
|
|
|| 0)
|
|
|
|
|| 0)
|
|
|
@@ -250,15 +256,31 @@ def Test_expr2()
|
|
|
|
assert_equal(true, Record(0) || Record(1))
|
|
|
|
assert_equal(true, Record(0) || Record(1))
|
|
|
|
assert_equal([0, 1], g:vals)
|
|
|
|
assert_equal([0, 1], g:vals)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g:vals = []
|
|
|
|
|
|
|
|
assert_equal(true, Record(0) || Record(true))
|
|
|
|
|
|
|
|
assert_equal([0, true], g:vals)
|
|
|
|
|
|
|
|
|
|
|
|
g:vals = []
|
|
|
|
g:vals = []
|
|
|
|
assert_equal(true, Record(0)
|
|
|
|
assert_equal(true, Record(0)
|
|
|
|
|| Record(1)
|
|
|
|
|| Record(1)
|
|
|
|
|| Record(0))
|
|
|
|
|| Record(0))
|
|
|
|
assert_equal([0, 1], g:vals)
|
|
|
|
assert_equal([0, 1], g:vals)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g:vals = []
|
|
|
|
|
|
|
|
assert_equal(true, Record(0)
|
|
|
|
|
|
|
|
|| Record(true)
|
|
|
|
|
|
|
|
|| Record(0))
|
|
|
|
|
|
|
|
assert_equal([0, true], g:vals)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g:vals = []
|
|
|
|
|
|
|
|
assert_equal(true, Record(true) || Record(false))
|
|
|
|
|
|
|
|
assert_equal([true], g:vals)
|
|
|
|
|
|
|
|
|
|
|
|
g:vals = []
|
|
|
|
g:vals = []
|
|
|
|
assert_equal(false, Record(0) || Record(false) || Record(0))
|
|
|
|
assert_equal(false, Record(0) || Record(false) || Record(0))
|
|
|
|
assert_equal([0, false, 0], g:vals)
|
|
|
|
assert_equal([0, false, 0], g:vals)
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckDefAndScriptSuccess(lines)
|
|
|
|
enddef
|
|
|
|
enddef
|
|
|
|
|
|
|
|
|
|
|
|
def Test_expr2_vimscript()
|
|
|
|
def Test_expr2_vimscript()
|
|
|
@@ -316,37 +338,6 @@ def Test_expr2_vimscript()
|
|
|
|
var name = v:true|| v:true
|
|
|
|
var name = v:true|| v:true
|
|
|
|
END
|
|
|
|
END
|
|
|
|
CheckScriptFailure(lines, 'E1004:', 2)
|
|
|
|
CheckScriptFailure(lines, 'E1004:', 2)
|
|
|
|
|
|
|
|
|
|
|
|
# check evaluating to bool
|
|
|
|
|
|
|
|
lines =<< trim END
|
|
|
|
|
|
|
|
assert_equal(true, 1 || 0)
|
|
|
|
|
|
|
|
assert_equal(true, 0 ||
|
|
|
|
|
|
|
|
0 ||
|
|
|
|
|
|
|
|
!!7)
|
|
|
|
|
|
|
|
assert_equal(false, 0 || 0)
|
|
|
|
|
|
|
|
assert_equal(false, 0
|
|
|
|
|
|
|
|
|| 0)
|
|
|
|
|
|
|
|
assert_equal(false, 0 || false)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g:vals = []
|
|
|
|
|
|
|
|
assert_equal(true, Record(true) || Record(false))
|
|
|
|
|
|
|
|
assert_equal([true], g:vals)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g:vals = []
|
|
|
|
|
|
|
|
assert_equal(true, Record(0) || Record(true))
|
|
|
|
|
|
|
|
assert_equal([0, true], g:vals)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g:vals = []
|
|
|
|
|
|
|
|
assert_equal(true, Record(0)
|
|
|
|
|
|
|
|
|| Record(true)
|
|
|
|
|
|
|
|
|| Record(0))
|
|
|
|
|
|
|
|
assert_equal([0, true], g:vals)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g:vals = []
|
|
|
|
|
|
|
|
assert_equal(false, Record(0) || Record(false) || Record(0))
|
|
|
|
|
|
|
|
assert_equal([0, false, 0], g:vals)
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckDefAndScriptSuccess(lines)
|
|
|
|
|
|
|
|
enddef
|
|
|
|
enddef
|
|
|
|
|
|
|
|
|
|
|
|
def Test_expr2_fails()
|
|
|
|
def Test_expr2_fails()
|
|
|
@@ -367,6 +358,7 @@ enddef
|
|
|
|
|
|
|
|
|
|
|
|
" test &&
|
|
|
|
" test &&
|
|
|
|
def Test_expr3()
|
|
|
|
def Test_expr3()
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
assert_equal(false, 1 && 0)
|
|
|
|
assert_equal(false, 1 && 0)
|
|
|
|
assert_equal(false, 0 &&
|
|
|
|
assert_equal(false, 0 &&
|
|
|
|
0 &&
|
|
|
|
0 &&
|
|
|
@@ -382,10 +374,18 @@ def Test_expr3()
|
|
|
|
assert_equal(true, Record(true) && Record(1))
|
|
|
|
assert_equal(true, Record(true) && Record(1))
|
|
|
|
assert_equal([true, 1], g:vals)
|
|
|
|
assert_equal([true, 1], g:vals)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g:vals = []
|
|
|
|
|
|
|
|
assert_equal(true, Record(1) && Record(true))
|
|
|
|
|
|
|
|
assert_equal([1, true], g:vals)
|
|
|
|
|
|
|
|
|
|
|
|
g:vals = []
|
|
|
|
g:vals = []
|
|
|
|
assert_equal(false, Record(0) && Record(1))
|
|
|
|
assert_equal(false, Record(0) && Record(1))
|
|
|
|
assert_equal([0], g:vals)
|
|
|
|
assert_equal([0], g:vals)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g:vals = []
|
|
|
|
|
|
|
|
assert_equal(false, Record(0) && Record(1) && Record(0))
|
|
|
|
|
|
|
|
assert_equal([0], g:vals)
|
|
|
|
|
|
|
|
|
|
|
|
g:vals = []
|
|
|
|
g:vals = []
|
|
|
|
assert_equal(false, Record(0) && Record(4) && Record(0))
|
|
|
|
assert_equal(false, Record(0) && Record(4) && Record(0))
|
|
|
|
assert_equal([0], g:vals)
|
|
|
|
assert_equal([0], g:vals)
|
|
|
@@ -393,10 +393,8 @@ def Test_expr3()
|
|
|
|
g:vals = []
|
|
|
|
g:vals = []
|
|
|
|
assert_equal(false, Record(1) && Record(true) && Record(0))
|
|
|
|
assert_equal(false, Record(1) && Record(true) && Record(0))
|
|
|
|
assert_equal([1, true, 0], g:vals)
|
|
|
|
assert_equal([1, true, 0], g:vals)
|
|
|
|
|
|
|
|
END
|
|
|
|
g:vals = []
|
|
|
|
CheckDefAndScriptSuccess(lines)
|
|
|
|
assert_equal(false, Record(1) && Record(true) && Record(0))
|
|
|
|
|
|
|
|
assert_equal([1, true, 0], g:vals)
|
|
|
|
|
|
|
|
enddef
|
|
|
|
enddef
|
|
|
|
|
|
|
|
|
|
|
|
def Test_expr3_vimscript()
|
|
|
|
def Test_expr3_vimscript()
|
|
|
@@ -454,38 +452,6 @@ def Test_expr3_vimscript()
|
|
|
|
var name = v:true&& v:true
|
|
|
|
var name = v:true&& v:true
|
|
|
|
END
|
|
|
|
END
|
|
|
|
CheckScriptFailure(lines, 'E1004:', 2)
|
|
|
|
CheckScriptFailure(lines, 'E1004:', 2)
|
|
|
|
|
|
|
|
|
|
|
|
# check keeping the value
|
|
|
|
|
|
|
|
lines =<< trim END
|
|
|
|
|
|
|
|
vim9script
|
|
|
|
|
|
|
|
assert_equal(false, 1 && 0)
|
|
|
|
|
|
|
|
assert_equal(false, 0 &&
|
|
|
|
|
|
|
|
0 &&
|
|
|
|
|
|
|
|
1)
|
|
|
|
|
|
|
|
assert_equal(true, 1
|
|
|
|
|
|
|
|
&& true
|
|
|
|
|
|
|
|
&& 1)
|
|
|
|
|
|
|
|
assert_equal(false, 0 && 0)
|
|
|
|
|
|
|
|
assert_equal(false, 0 && false)
|
|
|
|
|
|
|
|
assert_equal(false, 1 && 0)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g:vals = []
|
|
|
|
|
|
|
|
assert_equal(true, Record(1) && Record(true))
|
|
|
|
|
|
|
|
assert_equal([1, true], g:vals)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g:vals = []
|
|
|
|
|
|
|
|
assert_equal(false, Record(0) && Record(1))
|
|
|
|
|
|
|
|
assert_equal([0], g:vals)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g:vals = []
|
|
|
|
|
|
|
|
assert_equal(false, Record(0) && Record(1) && Record(0))
|
|
|
|
|
|
|
|
assert_equal([0], g:vals)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g:vals = []
|
|
|
|
|
|
|
|
assert_equal(false, Record(1) && Record(true) && Record(0))
|
|
|
|
|
|
|
|
assert_equal([1, true, 0], g:vals)
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckScriptSuccess(lines)
|
|
|
|
|
|
|
|
enddef
|
|
|
|
enddef
|
|
|
|
|
|
|
|
|
|
|
|
func Test_expr3_fails()
|
|
|
|
func Test_expr3_fails()
|
|
|
@@ -495,6 +461,8 @@ func Test_expr3_fails()
|
|
|
|
call CheckDefFailure(["var x = 1&& 2"], msg, 1)
|
|
|
|
call CheckDefFailure(["var x = 1&& 2"], msg, 1)
|
|
|
|
|
|
|
|
|
|
|
|
call CheckDefFailure(["if 'yes' && 0", 'echo 0', 'endif'], 'E1012: Type mismatch; expected bool but got string', 1)
|
|
|
|
call CheckDefFailure(["if 'yes' && 0", 'echo 0', 'endif'], 'E1012: Type mismatch; expected bool but got string', 1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
call CheckDefExecFailure(['assert_equal(false, Record(1) && Record(4) && Record(0))'], 'E1023: Using a Number as a Bool: 4', 1)
|
|
|
|
endfunc
|
|
|
|
endfunc
|
|
|
|
|
|
|
|
|
|
|
|
" global variables to use for tests with the "any" type
|
|
|
|
" global variables to use for tests with the "any" type
|
|
|
@@ -515,6 +483,7 @@ let adict = #{aaa: 2, bbb: 8}
|
|
|
|
|
|
|
|
|
|
|
|
" test == comperator
|
|
|
|
" test == comperator
|
|
|
|
def Test_expr4_equal()
|
|
|
|
def Test_expr4_equal()
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
var trueVar = true
|
|
|
|
var trueVar = true
|
|
|
|
var falseVar = false
|
|
|
|
var falseVar = false
|
|
|
|
assert_equal(true, true == true)
|
|
|
|
assert_equal(true, true == true)
|
|
|
@@ -568,11 +537,9 @@ def Test_expr4_equal()
|
|
|
|
set ignorecase
|
|
|
|
set ignorecase
|
|
|
|
assert_equal(false, 'abc' == 'ABC')
|
|
|
|
assert_equal(false, 'abc' == 'ABC')
|
|
|
|
assert_equal(false, 'abc' ==# 'ABC')
|
|
|
|
assert_equal(false, 'abc' ==# 'ABC')
|
|
|
|
|
|
|
|
assert_equal(true, 'abc' ==? 'ABC')
|
|
|
|
set noignorecase
|
|
|
|
set noignorecase
|
|
|
|
|
|
|
|
|
|
|
|
CheckDefFailure(["var x = 'a' == xxx"], 'E1001:', 1)
|
|
|
|
|
|
|
|
CheckDefExecFailure(['var items: any', 'eval 1', 'eval 2', 'if items == []', 'endif'], 'E691:', 4)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var bb = 0z3f
|
|
|
|
var bb = 0z3f
|
|
|
|
assert_equal(true, 0z3f == bb)
|
|
|
|
assert_equal(true, 0z3f == bb)
|
|
|
|
assert_equal(false, bb == 0z4f)
|
|
|
|
assert_equal(false, bb == 0z4f)
|
|
|
@@ -605,10 +572,16 @@ def Test_expr4_equal()
|
|
|
|
OneFunc = function('len')
|
|
|
|
OneFunc = function('len')
|
|
|
|
TwoFunc = function('len')
|
|
|
|
TwoFunc = function('len')
|
|
|
|
assert_equal(true, OneFunc('abc') == TwoFunc('123'))
|
|
|
|
assert_equal(true, OneFunc('abc') == TwoFunc('123'))
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckDefAndScriptSuccess(lines)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CheckDefFailure(["var x = 'a' == xxx"], 'E1001:', 1)
|
|
|
|
|
|
|
|
CheckDefExecFailure(['var items: any', 'eval 1', 'eval 2', 'if items == []', 'endif'], 'E691:', 4)
|
|
|
|
enddef
|
|
|
|
enddef
|
|
|
|
|
|
|
|
|
|
|
|
" test != comperator
|
|
|
|
" test != comperator
|
|
|
|
def Test_expr4_notequal()
|
|
|
|
def Test_expr4_notequal()
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
var trueVar = true
|
|
|
|
var trueVar = true
|
|
|
|
var falseVar = false
|
|
|
|
var falseVar = false
|
|
|
|
assert_equal(false, true != true)
|
|
|
|
assert_equal(false, true != true)
|
|
|
@@ -657,6 +630,8 @@ def Test_expr4_notequal()
|
|
|
|
assert_equal(true, 'abc' != 'ABC')
|
|
|
|
assert_equal(true, 'abc' != 'ABC')
|
|
|
|
set ignorecase
|
|
|
|
set ignorecase
|
|
|
|
assert_equal(true, 'abc' != 'ABC')
|
|
|
|
assert_equal(true, 'abc' != 'ABC')
|
|
|
|
|
|
|
|
assert_equal(true, 'abc' !=# 'ABC')
|
|
|
|
|
|
|
|
assert_equal(false, 'abc' !=? 'ABC')
|
|
|
|
set noignorecase
|
|
|
|
set noignorecase
|
|
|
|
|
|
|
|
|
|
|
|
var bb = 0z3f
|
|
|
|
var bb = 0z3f
|
|
|
@@ -685,10 +660,13 @@ def Test_expr4_notequal()
|
|
|
|
assert_equal(false, function('g:Test_expr4_equal', [123]) != function('g:Test_expr4_equal', [123]))
|
|
|
|
assert_equal(false, function('g:Test_expr4_equal', [123]) != function('g:Test_expr4_equal', [123]))
|
|
|
|
assert_equal(true, function('g:Test_expr4_equal', [123]) != function('g:Test_expr4_is', [123]))
|
|
|
|
assert_equal(true, function('g:Test_expr4_equal', [123]) != function('g:Test_expr4_is', [123]))
|
|
|
|
assert_equal(true, function('g:Test_expr4_equal', [123]) != function('g:Test_expr4_equal', [999]))
|
|
|
|
assert_equal(true, function('g:Test_expr4_equal', [123]) != function('g:Test_expr4_equal', [999]))
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckDefAndScriptSuccess(lines)
|
|
|
|
enddef
|
|
|
|
enddef
|
|
|
|
|
|
|
|
|
|
|
|
" test > comperator
|
|
|
|
" test > comperator
|
|
|
|
def Test_expr4_greater()
|
|
|
|
def Test_expr4_greater()
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
assert_true(2 > 0)
|
|
|
|
assert_true(2 > 0)
|
|
|
|
assert_true(2 >
|
|
|
|
assert_true(2 >
|
|
|
|
1)
|
|
|
|
1)
|
|
|
@@ -708,10 +686,13 @@ def Test_expr4_greater()
|
|
|
|
assert_false(ff > 2.0)
|
|
|
|
assert_false(ff > 2.0)
|
|
|
|
assert_false(ff > 3.0)
|
|
|
|
assert_false(ff > 3.0)
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckDefAndScriptSuccess(lines)
|
|
|
|
enddef
|
|
|
|
enddef
|
|
|
|
|
|
|
|
|
|
|
|
" test >= comperator
|
|
|
|
" test >= comperator
|
|
|
|
def Test_expr4_greaterequal()
|
|
|
|
def Test_expr4_greaterequal()
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
assert_true(2 >= 0)
|
|
|
|
assert_true(2 >= 0)
|
|
|
|
assert_true(2 >=
|
|
|
|
assert_true(2 >=
|
|
|
|
2)
|
|
|
|
2)
|
|
|
@@ -726,10 +707,13 @@ def Test_expr4_greaterequal()
|
|
|
|
assert_true(ff >= 2.0)
|
|
|
|
assert_true(ff >= 2.0)
|
|
|
|
assert_false(ff >= 3.0)
|
|
|
|
assert_false(ff >= 3.0)
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckDefAndScriptSuccess(lines)
|
|
|
|
enddef
|
|
|
|
enddef
|
|
|
|
|
|
|
|
|
|
|
|
" test < comperator
|
|
|
|
" test < comperator
|
|
|
|
def Test_expr4_smaller()
|
|
|
|
def Test_expr4_smaller()
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
assert_false(2 < 0)
|
|
|
|
assert_false(2 < 0)
|
|
|
|
assert_false(2 <
|
|
|
|
assert_false(2 <
|
|
|
|
2)
|
|
|
|
2)
|
|
|
@@ -745,10 +729,13 @@ def Test_expr4_smaller()
|
|
|
|
assert_false(ff < 2.0)
|
|
|
|
assert_false(ff < 2.0)
|
|
|
|
assert_true(ff < 3.0)
|
|
|
|
assert_true(ff < 3.0)
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckDefAndScriptSuccess(lines)
|
|
|
|
enddef
|
|
|
|
enddef
|
|
|
|
|
|
|
|
|
|
|
|
" test <= comperator
|
|
|
|
" test <= comperator
|
|
|
|
def Test_expr4_smallerequal()
|
|
|
|
def Test_expr4_smallerequal()
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
assert_false(2 <= 0)
|
|
|
|
assert_false(2 <= 0)
|
|
|
|
assert_false(2 <=
|
|
|
|
assert_false(2 <=
|
|
|
|
1)
|
|
|
|
1)
|
|
|
@@ -767,28 +754,42 @@ def Test_expr4_smallerequal()
|
|
|
|
assert_true(ff <= 2.0)
|
|
|
|
assert_true(ff <= 2.0)
|
|
|
|
assert_true(ff <= 3.0)
|
|
|
|
assert_true(ff <= 3.0)
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckDefAndScriptSuccess(lines)
|
|
|
|
enddef
|
|
|
|
enddef
|
|
|
|
|
|
|
|
|
|
|
|
" test =~ comperator
|
|
|
|
" test =~ comperator
|
|
|
|
def Test_expr4_match()
|
|
|
|
def Test_expr4_match()
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
assert_equal(false, '2' =~ '0')
|
|
|
|
assert_equal(false, '2' =~ '0')
|
|
|
|
assert_equal(false, ''
|
|
|
|
assert_equal(false, ''
|
|
|
|
=~ '0')
|
|
|
|
=~ '0')
|
|
|
|
assert_equal(true, '2' =~
|
|
|
|
assert_equal(true, '2' =~
|
|
|
|
'[0-9]')
|
|
|
|
'[0-9]')
|
|
|
|
|
|
|
|
set ignorecase
|
|
|
|
|
|
|
|
assert_equal(false, 'abc' =~ 'ABC')
|
|
|
|
|
|
|
|
assert_equal(false, 'abc' =~# 'ABC')
|
|
|
|
|
|
|
|
assert_equal(true, 'abc' =~? 'ABC')
|
|
|
|
|
|
|
|
set noignorecase
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckDefAndScriptSuccess(lines)
|
|
|
|
enddef
|
|
|
|
enddef
|
|
|
|
|
|
|
|
|
|
|
|
" test !~ comperator
|
|
|
|
" test !~ comperator
|
|
|
|
def Test_expr4_nomatch()
|
|
|
|
def Test_expr4_nomatch()
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
assert_equal(true, '2' !~ '0')
|
|
|
|
assert_equal(true, '2' !~ '0')
|
|
|
|
assert_equal(true, ''
|
|
|
|
assert_equal(true, ''
|
|
|
|
!~ '0')
|
|
|
|
!~ '0')
|
|
|
|
assert_equal(false, '2' !~
|
|
|
|
assert_equal(false, '2' !~
|
|
|
|
'[0-9]')
|
|
|
|
'[0-9]')
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckDefAndScriptSuccess(lines)
|
|
|
|
enddef
|
|
|
|
enddef
|
|
|
|
|
|
|
|
|
|
|
|
" test is comperator
|
|
|
|
" test is comperator
|
|
|
|
def Test_expr4_is()
|
|
|
|
def Test_expr4_is()
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
var mylist = [2]
|
|
|
|
var mylist = [2]
|
|
|
|
assert_false(mylist is [2])
|
|
|
|
assert_false(mylist is [2])
|
|
|
|
var other = mylist
|
|
|
|
var other = mylist
|
|
|
@@ -800,10 +801,13 @@ def Test_expr4_is()
|
|
|
|
is 0z1234)
|
|
|
|
is 0z1234)
|
|
|
|
var otherblob = myblob
|
|
|
|
var otherblob = myblob
|
|
|
|
assert_true(myblob is otherblob)
|
|
|
|
assert_true(myblob is otherblob)
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckDefAndScriptSuccess(lines)
|
|
|
|
enddef
|
|
|
|
enddef
|
|
|
|
|
|
|
|
|
|
|
|
" test isnot comperator
|
|
|
|
" test isnot comperator
|
|
|
|
def Test_expr4_isnot()
|
|
|
|
def Test_expr4_isnot()
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
var mylist = [2]
|
|
|
|
var mylist = [2]
|
|
|
|
assert_true('2' isnot '0')
|
|
|
|
assert_true('2' isnot '0')
|
|
|
|
assert_true(mylist isnot [2])
|
|
|
|
assert_true(mylist isnot [2])
|
|
|
@@ -816,6 +820,8 @@ def Test_expr4_isnot()
|
|
|
|
isnot 0z1234)
|
|
|
|
isnot 0z1234)
|
|
|
|
var otherblob = myblob
|
|
|
|
var otherblob = myblob
|
|
|
|
assert_false(myblob isnot otherblob)
|
|
|
|
assert_false(myblob isnot otherblob)
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckDefAndScriptSuccess(lines)
|
|
|
|
enddef
|
|
|
|
enddef
|
|
|
|
|
|
|
|
|
|
|
|
def RetVoid()
|
|
|
|
def RetVoid()
|
|
|
@@ -896,25 +902,6 @@ def Test_expr4_vim9script()
|
|
|
|
END
|
|
|
|
END
|
|
|
|
CheckScriptFailure(lines, 'Cannot use "is" with number', 2)
|
|
|
|
CheckScriptFailure(lines, 'Cannot use "is" with number', 2)
|
|
|
|
|
|
|
|
|
|
|
|
# check 'ignorecase' not being used
|
|
|
|
|
|
|
|
lines =<< trim END
|
|
|
|
|
|
|
|
vim9script
|
|
|
|
|
|
|
|
set ignorecase
|
|
|
|
|
|
|
|
assert_equal(false, 'abc' == 'ABC')
|
|
|
|
|
|
|
|
assert_equal(false, 'abc' ==# 'ABC')
|
|
|
|
|
|
|
|
assert_equal(true, 'abc' ==? 'ABC')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assert_equal(true, 'abc' != 'ABC')
|
|
|
|
|
|
|
|
assert_equal(true, 'abc' !=# 'ABC')
|
|
|
|
|
|
|
|
assert_equal(false, 'abc' !=? 'ABC')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assert_equal(false, 'abc' =~ 'ABC')
|
|
|
|
|
|
|
|
assert_equal(false, 'abc' =~# 'ABC')
|
|
|
|
|
|
|
|
assert_equal(true, 'abc' =~? 'ABC')
|
|
|
|
|
|
|
|
set noignorecase
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckScriptSuccess(lines)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# check missing white space
|
|
|
|
# check missing white space
|
|
|
|
lines =<< trim END
|
|
|
|
lines =<< trim END
|
|
|
|
vim9script
|
|
|
|
vim9script
|
|
|
@@ -1032,6 +1019,7 @@ endfunc
|
|
|
|
|
|
|
|
|
|
|
|
" test addition, subtraction, concatenation
|
|
|
|
" test addition, subtraction, concatenation
|
|
|
|
def Test_expr5()
|
|
|
|
def Test_expr5()
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
assert_equal(66, 60 + 6)
|
|
|
|
assert_equal(66, 60 + 6)
|
|
|
|
assert_equal(70, 60 +
|
|
|
|
assert_equal(70, 60 +
|
|
|
|
g:anint)
|
|
|
|
g:anint)
|
|
|
@@ -1081,6 +1069,8 @@ def Test_expr5()
|
|
|
|
|
|
|
|
|
|
|
|
$ENVVAR = 'env'
|
|
|
|
$ENVVAR = 'env'
|
|
|
|
assert_equal('aenv', 'a' .. $ENVVAR)
|
|
|
|
assert_equal('aenv', 'a' .. $ENVVAR)
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckDefAndScriptSuccess(lines)
|
|
|
|
enddef
|
|
|
|
enddef
|
|
|
|
|
|
|
|
|
|
|
|
def Test_expr5_vim9script()
|
|
|
|
def Test_expr5_vim9script()
|
|
|
@@ -1196,19 +1186,6 @@ def Test_expr5_vim9script()
|
|
|
|
END
|
|
|
|
END
|
|
|
|
CheckScriptFailure(lines, 'E1004:', 2)
|
|
|
|
CheckScriptFailure(lines, 'E1004:', 2)
|
|
|
|
|
|
|
|
|
|
|
|
# check valid string concatenation
|
|
|
|
|
|
|
|
lines =<< trim END
|
|
|
|
|
|
|
|
vim9script
|
|
|
|
|
|
|
|
assert_equal('one123', 'one' .. 123)
|
|
|
|
|
|
|
|
assert_equal('onev:true', 'one' .. true)
|
|
|
|
|
|
|
|
assert_equal('onev:null', 'one' .. v:null)
|
|
|
|
|
|
|
|
assert_equal('onev:none', 'one' .. v:none)
|
|
|
|
|
|
|
|
if has('float')
|
|
|
|
|
|
|
|
assert_equal('a0.123', 'a' .. 0.123)
|
|
|
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckScriptSuccess(lines)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# check invalid string concatenation
|
|
|
|
# check invalid string concatenation
|
|
|
|
lines =<< trim END
|
|
|
|
lines =<< trim END
|
|
|
|
vim9script
|
|
|
|
vim9script
|
|
|
@@ -1258,6 +1235,7 @@ def Test_expr5_float()
|
|
|
|
if !has('float')
|
|
|
|
if !has('float')
|
|
|
|
MissingFeature 'float'
|
|
|
|
MissingFeature 'float'
|
|
|
|
else
|
|
|
|
else
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
assert_equal(66.0, 60.0 + 6.0)
|
|
|
|
assert_equal(66.0, 60.0 + 6.0)
|
|
|
|
assert_equal(66.0, 60.0 + 6)
|
|
|
|
assert_equal(66.0, 60.0 + 6)
|
|
|
|
assert_equal(66.0, 60 +
|
|
|
|
assert_equal(66.0, 60 +
|
|
|
@@ -1276,6 +1254,8 @@ def Test_expr5_float()
|
|
|
|
assert_equal(7.9, 8 - g:afloat)
|
|
|
|
assert_equal(7.9, 8 - g:afloat)
|
|
|
|
assert_equal(9.9, g:anint - g:afloat)
|
|
|
|
assert_equal(9.9, g:anint - g:afloat)
|
|
|
|
assert_equal(-9.9, g:afloat - g:anint)
|
|
|
|
assert_equal(-9.9, g:afloat - g:anint)
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckDefAndScriptSuccess(lines)
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
enddef
|
|
|
|
enddef
|
|
|
|
|
|
|
|
|
|
|
@@ -1319,6 +1299,7 @@ endfunc
|
|
|
|
|
|
|
|
|
|
|
|
" test multiply, divide, modulo
|
|
|
|
" test multiply, divide, modulo
|
|
|
|
def Test_expr6()
|
|
|
|
def Test_expr6()
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
assert_equal(36, 6 * 6)
|
|
|
|
assert_equal(36, 6 * 6)
|
|
|
|
assert_equal(24, 6 *
|
|
|
|
assert_equal(24, 6 *
|
|
|
|
g:thefour)
|
|
|
|
g:thefour)
|
|
|
@@ -1354,6 +1335,8 @@ def Test_expr6()
|
|
|
|
assert_equal(6.0, xf[0]
|
|
|
|
assert_equal(6.0, xf[0]
|
|
|
|
* yf[0])
|
|
|
|
* yf[0])
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckDefAndScriptSuccess(lines)
|
|
|
|
|
|
|
|
|
|
|
|
CheckDefFailure(["var x = 6 * xxx"], 'E1001:', 1)
|
|
|
|
CheckDefFailure(["var x = 6 * xxx"], 'E1001:', 1)
|
|
|
|
enddef
|
|
|
|
enddef
|
|
|
@@ -1419,6 +1402,7 @@ def Test_expr6_float()
|
|
|
|
if !has('float')
|
|
|
|
if !has('float')
|
|
|
|
MissingFeature 'float'
|
|
|
|
MissingFeature 'float'
|
|
|
|
else
|
|
|
|
else
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
assert_equal(36.0, 6.0 * 6)
|
|
|
|
assert_equal(36.0, 6.0 * 6)
|
|
|
|
assert_equal(36.0, 6 *
|
|
|
|
assert_equal(36.0, 6 *
|
|
|
|
6.0)
|
|
|
|
6.0)
|
|
|
@@ -1442,6 +1426,8 @@ def Test_expr6_float()
|
|
|
|
assert_equal(4.0, 6.0 * 4.0 / 6.0)
|
|
|
|
assert_equal(4.0, 6.0 * 4.0 / 6.0)
|
|
|
|
|
|
|
|
|
|
|
|
assert_equal(4.0, 6.0 * 4.0 / 6.0)
|
|
|
|
assert_equal(4.0, 6.0 * 4.0 / 6.0)
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckDefAndScriptSuccess(lines)
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
enddef
|
|
|
|
enddef
|
|
|
|
|
|
|
|
|
|
|
@@ -1531,12 +1517,15 @@ enddef
|
|
|
|
" test low level expression
|
|
|
|
" test low level expression
|
|
|
|
def Test_expr7_number()
|
|
|
|
def Test_expr7_number()
|
|
|
|
# number constant
|
|
|
|
# number constant
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
assert_equal(0, 0)
|
|
|
|
assert_equal(0, 0)
|
|
|
|
assert_equal(654, 0654)
|
|
|
|
assert_equal(654, 0654)
|
|
|
|
|
|
|
|
|
|
|
|
assert_equal(6, 0x6)
|
|
|
|
assert_equal(6, 0x6)
|
|
|
|
assert_equal(15, 0xf)
|
|
|
|
assert_equal(15, 0xf)
|
|
|
|
assert_equal(255, 0xff)
|
|
|
|
assert_equal(255, 0xff)
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckDefAndScriptSuccess(lines)
|
|
|
|
enddef
|
|
|
|
enddef
|
|
|
|
|
|
|
|
|
|
|
|
def Test_expr7_float()
|
|
|
|
def Test_expr7_float()
|
|
|
@@ -1544,24 +1533,31 @@ def Test_expr7_float()
|
|
|
|
if !has('float')
|
|
|
|
if !has('float')
|
|
|
|
MissingFeature 'float'
|
|
|
|
MissingFeature 'float'
|
|
|
|
else
|
|
|
|
else
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
assert_equal(g:float_zero, .0)
|
|
|
|
assert_equal(g:float_zero, .0)
|
|
|
|
assert_equal(g:float_zero, 0.0)
|
|
|
|
assert_equal(g:float_zero, 0.0)
|
|
|
|
assert_equal(g:float_neg, -9.8)
|
|
|
|
assert_equal(g:float_neg, -9.8)
|
|
|
|
assert_equal(g:float_big, 9.9e99)
|
|
|
|
assert_equal(g:float_big, 9.9e99)
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckDefAndScriptSuccess(lines)
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
enddef
|
|
|
|
enddef
|
|
|
|
|
|
|
|
|
|
|
|
def Test_expr7_blob()
|
|
|
|
def Test_expr7_blob()
|
|
|
|
# blob constant
|
|
|
|
# blob constant
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
assert_equal(g:blob_empty, 0z)
|
|
|
|
assert_equal(g:blob_empty, 0z)
|
|
|
|
assert_equal(g:blob_one, 0z01)
|
|
|
|
assert_equal(g:blob_one, 0z01)
|
|
|
|
assert_equal(g:blob_long, 0z0102.0304)
|
|
|
|
assert_equal(g:blob_long, 0z0102.0304)
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckDefAndScriptSuccess(lines)
|
|
|
|
|
|
|
|
|
|
|
|
CheckDefFailure(["var x = 0z123"], 'E973:', 1)
|
|
|
|
CheckDefFailure(["var x = 0z123"], 'E973:', 1)
|
|
|
|
enddef
|
|
|
|
enddef
|
|
|
|
|
|
|
|
|
|
|
|
def Test_expr7_string()
|
|
|
|
def Test_expr7_string()
|
|
|
|
# string constant
|
|
|
|
# string constant
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
assert_equal(g:string_empty, '')
|
|
|
|
assert_equal(g:string_empty, '')
|
|
|
|
assert_equal(g:string_empty, "")
|
|
|
|
assert_equal(g:string_empty, "")
|
|
|
|
assert_equal(g:string_short, 'x')
|
|
|
|
assert_equal(g:string_short, 'x')
|
|
|
@@ -1569,6 +1565,8 @@ def Test_expr7_string()
|
|
|
|
assert_equal(g:string_long, 'abcdefghijklm')
|
|
|
|
assert_equal(g:string_long, 'abcdefghijklm')
|
|
|
|
assert_equal(g:string_long, "abcdefghijklm")
|
|
|
|
assert_equal(g:string_long, "abcdefghijklm")
|
|
|
|
assert_equal(g:string_special, "ab\ncd\ref\ekk")
|
|
|
|
assert_equal(g:string_special, "ab\ncd\ref\ekk")
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckDefAndScriptSuccess(lines)
|
|
|
|
|
|
|
|
|
|
|
|
CheckDefFailure(['var x = "abc'], 'E114:', 1)
|
|
|
|
CheckDefFailure(['var x = "abc'], 'E114:', 1)
|
|
|
|
CheckDefFailure(["var x = 'abc"], 'E115:', 1)
|
|
|
|
CheckDefFailure(["var x = 'abc"], 'E115:', 1)
|
|
|
@@ -1587,10 +1585,13 @@ enddef
|
|
|
|
|
|
|
|
|
|
|
|
def Test_expr7_special()
|
|
|
|
def Test_expr7_special()
|
|
|
|
# special constant
|
|
|
|
# special constant
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
assert_equal(g:special_true, true)
|
|
|
|
assert_equal(g:special_true, true)
|
|
|
|
assert_equal(g:special_false, false)
|
|
|
|
assert_equal(g:special_false, false)
|
|
|
|
assert_equal(g:special_true, v:true)
|
|
|
|
assert_equal(g:special_true, v:true)
|
|
|
|
assert_equal(g:special_false, v:false)
|
|
|
|
assert_equal(g:special_false, v:false)
|
|
|
|
|
|
|
|
assert_equal(v:true, true)
|
|
|
|
|
|
|
|
assert_equal(v:false, false)
|
|
|
|
|
|
|
|
|
|
|
|
assert_equal(true, !false)
|
|
|
|
assert_equal(true, !false)
|
|
|
|
assert_equal(false, !true)
|
|
|
|
assert_equal(false, !true)
|
|
|
@@ -1601,8 +1602,15 @@ def Test_expr7_special()
|
|
|
|
assert_equal(false, !!0)
|
|
|
|
assert_equal(false, !!0)
|
|
|
|
assert_equal(true, !!1)
|
|
|
|
assert_equal(true, !!1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var t = true
|
|
|
|
|
|
|
|
var f = false
|
|
|
|
|
|
|
|
assert_equal(true, t)
|
|
|
|
|
|
|
|
assert_equal(false, f)
|
|
|
|
|
|
|
|
|
|
|
|
assert_equal(g:special_null, v:null)
|
|
|
|
assert_equal(g:special_null, v:null)
|
|
|
|
assert_equal(g:special_none, v:none)
|
|
|
|
assert_equal(g:special_none, v:none)
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckDefAndScriptSuccess(lines)
|
|
|
|
|
|
|
|
|
|
|
|
CheckDefFailure(['v:true = true'], 'E46:', 1)
|
|
|
|
CheckDefFailure(['v:true = true'], 'E46:', 1)
|
|
|
|
CheckDefFailure(['v:true = false'], 'E46:', 1)
|
|
|
|
CheckDefFailure(['v:true = false'], 'E46:', 1)
|
|
|
@@ -1611,29 +1619,9 @@ def Test_expr7_special()
|
|
|
|
CheckDefFailure(['v:none = 22'], 'E46:', 1)
|
|
|
|
CheckDefFailure(['v:none = 22'], 'E46:', 1)
|
|
|
|
enddef
|
|
|
|
enddef
|
|
|
|
|
|
|
|
|
|
|
|
def Test_expr7_special_vim9script()
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
|
|
|
|
vim9script
|
|
|
|
|
|
|
|
var t = true
|
|
|
|
|
|
|
|
var f = false
|
|
|
|
|
|
|
|
assert_equal(v:true, true)
|
|
|
|
|
|
|
|
assert_equal(true, t)
|
|
|
|
|
|
|
|
assert_equal(v:false, false)
|
|
|
|
|
|
|
|
assert_equal(false, f)
|
|
|
|
|
|
|
|
assert_equal(true, !false)
|
|
|
|
|
|
|
|
assert_equal(false, !true)
|
|
|
|
|
|
|
|
assert_equal(true, !0)
|
|
|
|
|
|
|
|
assert_equal(false, !1)
|
|
|
|
|
|
|
|
assert_equal(false, !!false)
|
|
|
|
|
|
|
|
assert_equal(true, !!true)
|
|
|
|
|
|
|
|
assert_equal(false, !!0)
|
|
|
|
|
|
|
|
assert_equal(true, !!1)
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckScriptSuccess(lines)
|
|
|
|
|
|
|
|
enddef
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def Test_expr7_list()
|
|
|
|
def Test_expr7_list()
|
|
|
|
# list
|
|
|
|
# list
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
assert_equal(g:list_empty, [])
|
|
|
|
assert_equal(g:list_empty, [])
|
|
|
|
assert_equal(g:list_empty, [ ])
|
|
|
|
assert_equal(g:list_empty, [ ])
|
|
|
|
|
|
|
|
|
|
|
@@ -1656,6 +1644,8 @@ def Test_expr7_list()
|
|
|
|
var llstring: list<list<string>> = [['text'], []]
|
|
|
|
var llstring: list<list<string>> = [['text'], []]
|
|
|
|
llstring = [[], ['text']]
|
|
|
|
llstring = [[], ['text']]
|
|
|
|
llstring = [[], []]
|
|
|
|
llstring = [[], []]
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckDefAndScriptSuccess(lines)
|
|
|
|
|
|
|
|
|
|
|
|
var rangelist: list<number> = range(3)
|
|
|
|
var rangelist: list<number> = range(3)
|
|
|
|
g:rangelist = range(3)
|
|
|
|
g:rangelist = range(3)
|
|
|
@@ -1680,7 +1670,7 @@ def Test_expr7_list()
|
|
|
|
CheckDefExecFailure(["var l: list<string> = [234, 'x']"], 'E1012:', 1)
|
|
|
|
CheckDefExecFailure(["var l: list<string> = [234, 'x']"], 'E1012:', 1)
|
|
|
|
CheckDefExecFailure(["var l: list<string> = ['x', 123]"], 'E1012:', 1)
|
|
|
|
CheckDefExecFailure(["var l: list<string> = ['x', 123]"], 'E1012:', 1)
|
|
|
|
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
lines =<< trim END
|
|
|
|
vim9script
|
|
|
|
vim9script
|
|
|
|
var datalist: list<string>
|
|
|
|
var datalist: list<string>
|
|
|
|
def Main()
|
|
|
|
def Main()
|
|
|
@@ -1788,6 +1778,7 @@ def LambdaUsingArg(x: number): func
|
|
|
|
enddef
|
|
|
|
enddef
|
|
|
|
|
|
|
|
|
|
|
|
def Test_expr7_lambda()
|
|
|
|
def Test_expr7_lambda()
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
var La = { -> 'result'}
|
|
|
|
var La = { -> 'result'}
|
|
|
|
assert_equal('result', La())
|
|
|
|
assert_equal('result', La())
|
|
|
|
assert_equal([1, 3, 5], [1, 2, 3]->map({key, val -> key + val}))
|
|
|
|
assert_equal([1, 3, 5], [1, 2, 3]->map({key, val -> key + val}))
|
|
|
@@ -1827,6 +1818,8 @@ def Test_expr7_lambda()
|
|
|
|
|
|
|
|
|
|
|
|
assert_equal(false, LambdaUsingArg(0)())
|
|
|
|
assert_equal(false, LambdaUsingArg(0)())
|
|
|
|
assert_equal(true, LambdaUsingArg(1)())
|
|
|
|
assert_equal(true, LambdaUsingArg(1)())
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckDefAndScriptSuccess(lines)
|
|
|
|
|
|
|
|
|
|
|
|
CheckDefFailure(["filter([1, 2], {k,v -> 1})"], 'E1069:', 1)
|
|
|
|
CheckDefFailure(["filter([1, 2], {k,v -> 1})"], 'E1069:', 1)
|
|
|
|
# error is in first line of the lambda
|
|
|
|
# error is in first line of the lambda
|
|
|
@@ -1882,6 +1875,7 @@ enddef
|
|
|
|
|
|
|
|
|
|
|
|
def Test_expr7_dict()
|
|
|
|
def Test_expr7_dict()
|
|
|
|
# dictionary
|
|
|
|
# dictionary
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
assert_equal(g:dict_empty, {})
|
|
|
|
assert_equal(g:dict_empty, {})
|
|
|
|
assert_equal(g:dict_empty, { })
|
|
|
|
assert_equal(g:dict_empty, { })
|
|
|
|
assert_equal(g:dict_one, {'one': 1})
|
|
|
|
assert_equal(g:dict_one, {'one': 1})
|
|
|
@@ -1911,6 +1905,8 @@ def Test_expr7_dict()
|
|
|
|
dictdict = #{one: #{}, two: #{}}
|
|
|
|
dictdict = #{one: #{}, two: #{}}
|
|
|
|
|
|
|
|
|
|
|
|
assert_equal({'': 0}, {matchstr('string', 'wont match'): 0})
|
|
|
|
assert_equal({'': 0}, {matchstr('string', 'wont match'): 0})
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckDefAndScriptSuccess(lines)
|
|
|
|
|
|
|
|
|
|
|
|
CheckDefFailure(["var x = #{a:8}"], 'E1069:', 1)
|
|
|
|
CheckDefFailure(["var x = #{a:8}"], 'E1069:', 1)
|
|
|
|
CheckDefFailure(["var x = #{a : 8}"], 'E1068:', 1)
|
|
|
|
CheckDefFailure(["var x = #{a : 8}"], 'E1068:', 1)
|
|
|
@@ -2311,11 +2307,15 @@ def s:Echo4Arg(arg: any): string
|
|
|
|
enddef
|
|
|
|
enddef
|
|
|
|
|
|
|
|
|
|
|
|
def Test_expr7_call()
|
|
|
|
def Test_expr7_call()
|
|
|
|
|
|
|
|
var lines =<< trim END
|
|
|
|
assert_equal('yes', 'yes'->Echo())
|
|
|
|
assert_equal('yes', 'yes'->Echo())
|
|
|
|
assert_equal('yes', 'yes'
|
|
|
|
|
|
|
|
->s:Echo4Arg())
|
|
|
|
|
|
|
|
assert_equal(true, !range(5)->empty())
|
|
|
|
assert_equal(true, !range(5)->empty())
|
|
|
|
assert_equal([0, 1, 2], --3->range())
|
|
|
|
assert_equal([0, 1, 2], --3->range())
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
CheckDefAndScriptSuccess(lines)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assert_equal('yes', 'yes'
|
|
|
|
|
|
|
|
->s:Echo4Arg())
|
|
|
|
|
|
|
|
|
|
|
|
CheckDefFailure(["var x = 'yes'->Echo"], 'E107:', 1)
|
|
|
|
CheckDefFailure(["var x = 'yes'->Echo"], 'E107:', 1)
|
|
|
|
CheckScriptFailure([
|
|
|
|
CheckScriptFailure([
|
|
|
|