1e381d3d5SBram Moolenaar" Test behavior of boolean-like values. 2e381d3d5SBram Moolenaar 35feabe00SBram Moolenaarsource check.vim 45feabe00SBram Moolenaar 5e381d3d5SBram Moolenaar" Test what is explained at ":help TRUE" and ":help FALSE". 6e381d3d5SBram Moolenaarfunc Test_if() 7e381d3d5SBram Moolenaar if v:false 8e381d3d5SBram Moolenaar call assert_true(false, 'v:false is false') 9e381d3d5SBram Moolenaar endif 10e381d3d5SBram Moolenaar if 0 11e381d3d5SBram Moolenaar call assert_true(false, 'zero is false') 12e381d3d5SBram Moolenaar endif 13e381d3d5SBram Moolenaar if "0" 14e381d3d5SBram Moolenaar call assert_true(false, 'zero string is false') 15e381d3d5SBram Moolenaar endif 16e381d3d5SBram Moolenaar if "foo" 17e381d3d5SBram Moolenaar call assert_true(false, 'foo is false') 18e381d3d5SBram Moolenaar endif 19e381d3d5SBram Moolenaar if " " 20e381d3d5SBram Moolenaar call assert_true(false, 'space is false') 21e381d3d5SBram Moolenaar endif 22e381d3d5SBram Moolenaar if empty("foo") 23e381d3d5SBram Moolenaar call assert_true(false, 'foo is not empty') 24e381d3d5SBram Moolenaar endif 25e381d3d5SBram Moolenaar 26e381d3d5SBram Moolenaar if v:true 27e381d3d5SBram Moolenaar else 28e381d3d5SBram Moolenaar call assert_true(false, 'v:true is true') 29e381d3d5SBram Moolenaar endif 30e381d3d5SBram Moolenaar if 1 31e381d3d5SBram Moolenaar else 32e381d3d5SBram Moolenaar call assert_true(false, 'one is true') 33e381d3d5SBram Moolenaar endif 34e381d3d5SBram Moolenaar if "1" 35e381d3d5SBram Moolenaar else 36e381d3d5SBram Moolenaar call assert_true(false, 'one string is true') 37e381d3d5SBram Moolenaar endif 38e381d3d5SBram Moolenaar if "1foo" 39e381d3d5SBram Moolenaar else 40e381d3d5SBram Moolenaar call assert_true(false, 'one in string is true') 41e381d3d5SBram Moolenaar endif 42e381d3d5SBram Moolenaar 43*e2e4075fSBram Moolenaar call assert_fails('if [1]', 'E745:') 44*e2e4075fSBram Moolenaar call assert_fails('if {1: 1}', 'E728:') 45*e2e4075fSBram Moolenaar call assert_fails('if function("string")', 'E703:') 465feabe00SBram Moolenaar if has('float') 47*e2e4075fSBram Moolenaar call assert_fails('if 1.3")', 'E805:') 485feabe00SBram Moolenaar endif 49e381d3d5SBram Moolenaarendfunc 50e381d3d5SBram Moolenaar 51e381d3d5SBram Moolenaarfunction Try_arg_true_false(expr, false_val, true_val) 52e381d3d5SBram Moolenaar for v in ['v:false', '0', '"0"', '"foo"', '" "'] 53e381d3d5SBram Moolenaar let r = eval(substitute(a:expr, '%v%', v, '')) 54e381d3d5SBram Moolenaar call assert_equal(a:false_val, r, 'result for ' . v . ' is not ' . string(a:false_val) . ' but ' . string(r)) 55e381d3d5SBram Moolenaar endfor 56e381d3d5SBram Moolenaar for v in ['v:true', '1', '"1"', '"1foo"'] 57e381d3d5SBram Moolenaar let r = eval(substitute(a:expr, '%v%', v, '')) 58e381d3d5SBram Moolenaar call assert_equal(a:true_val, r, 'result for ' . v . ' is not ' . string(a:true_val) . ' but ' . string(r)) 59e381d3d5SBram Moolenaar endfor 60e381d3d5SBram Moolenaarendfunc 61e381d3d5SBram Moolenaar 62e381d3d5SBram Moolenaar" Test using TRUE or FALSE values for an argument. 63e381d3d5SBram Moolenaarfunc Test_true_false_arg() 64e381d3d5SBram Moolenaar call Try_arg_true_false('count(["a", "A"], "a", %v%)', 1, 2) 65e381d3d5SBram Moolenaar 66e381d3d5SBram Moolenaar set wildignore=*.swp 67e381d3d5SBram Moolenaar call Try_arg_true_false('expand("foo.swp", %v%)', "", "foo.swp") 68e381d3d5SBram Moolenaar call Try_arg_true_false('expand("foo.vim", 0, %v%)', "foo.vim", ["foo.vim"]) 69e381d3d5SBram Moolenaar 70e381d3d5SBram Moolenaar call setreg('a', ['x', 'y']) 71e381d3d5SBram Moolenaar call Try_arg_true_false('getreg("a", 1, %v%)', "x\ny\n", ['x', 'y']) 72e381d3d5SBram Moolenaar 73e381d3d5SBram Moolenaar set wildignore=*.vim 74e381d3d5SBram Moolenaar call Try_arg_true_false('glob("runtest.vim", %v%)', "", "runtest.vim") 75e381d3d5SBram Moolenaar set wildignore=*.swp 76e381d3d5SBram Moolenaar call Try_arg_true_false('glob("runtest.vim", 0, %v%)', "runtest.vim", ["runtest.vim"]) 77e381d3d5SBram Moolenaar if has('unix') 78e381d3d5SBram Moolenaar silent !ln -s doesntexit Xlink 79e381d3d5SBram Moolenaar call Try_arg_true_false('glob("Xlink", 0, 0, %v%)', "", "Xlink") 80e381d3d5SBram Moolenaar silent !rm Xlink 81e381d3d5SBram Moolenaar endif 82e381d3d5SBram Moolenaar 83e381d3d5SBram Moolenaar set wildignore=*.vim 84e381d3d5SBram Moolenaar call Try_arg_true_false('globpath(".", "runtest.vim", %v%)', "", "./runtest.vim") 85e381d3d5SBram Moolenaar set wildignore=*.swp 86e381d3d5SBram Moolenaar call Try_arg_true_false('globpath(".", "runtest.vim", 0, %v%)', "./runtest.vim", ["./runtest.vim"]) 87e381d3d5SBram Moolenaar if has('unix') 88e381d3d5SBram Moolenaar silent !ln -s doesntexit Xlink 89e381d3d5SBram Moolenaar call Try_arg_true_false('globpath(".", "Xlink", 0, 0, %v%)', "", "./Xlink") 90e381d3d5SBram Moolenaar silent !rm Xlink 91e381d3d5SBram Moolenaar endif 926bb45014SBram Moolenaar 936bb45014SBram Moolenaar abbr asdf asdff 946bb45014SBram Moolenaar call Try_arg_true_false('hasmapto("asdff", "i", %v%)', 0, 1) 956bb45014SBram Moolenaar 966bb45014SBram Moolenaar call Try_arg_true_false('index(["a", "A"], "A", 0, %v%)', 1, 0) 976bb45014SBram Moolenaar 9805e418d4SBram Moolenaar function FilterMapArg(d) 9905e418d4SBram Moolenaar if type(a:d) == type({}) 10005e418d4SBram Moolenaar return filter(a:d, 'v:key == "rhs"') 10105e418d4SBram Moolenaar endif 10205e418d4SBram Moolenaar return a:d 10305e418d4SBram Moolenaar endfunction 1046bb45014SBram Moolenaar call Try_arg_true_false('maparg("asdf", "i", %v%)', "", "asdff") 10505e418d4SBram Moolenaar call Try_arg_true_false('FilterMapArg(maparg("asdf", "i", 1, %v%))', "asdff", {'rhs': 'asdff'}) 1066bb45014SBram Moolenaar 107f9f24ce7SBram Moolenaar call Try_arg_true_false('"asdf"->hasmapto("i", %v%)', 0, 1) 1086bb45014SBram Moolenaar 1096bb45014SBram Moolenaar new colored 1106bb45014SBram Moolenaar call setline(1, '<here>') 1116bb45014SBram Moolenaar syn match brackets "<.*>" 1126bb45014SBram Moolenaar syn match here "here" transparent 1136bb45014SBram Moolenaar let brackets_id = synID(1, 1, 0) 1146bb45014SBram Moolenaar let here_id = synID(1, 3, 0) 1156bb45014SBram Moolenaar call Try_arg_true_false('synID(1, 3, %v%)', here_id, brackets_id) 1166bb45014SBram Moolenaar bwipe! 117e381d3d5SBram Moolenaarendfunc 118e381d3d5SBram Moolenaar 119e381d3d5SBram Moolenaarfunction Try_arg_non_zero(expr, false_val, true_val) 1205feabe00SBram Moolenaar CheckFeature float 121e381d3d5SBram Moolenaar for v in ['v:false', '0', '[1]', '{2:3}', '3.4'] 122e381d3d5SBram Moolenaar let r = eval(substitute(a:expr, '%v%', v, '')) 123e381d3d5SBram Moolenaar call assert_equal(a:false_val, r, 'result for ' . v . ' is not ' . a:false_val . ' but ' . r) 124e381d3d5SBram Moolenaar endfor 125e381d3d5SBram Moolenaar for v in ['v:true', '1', '" "', '"0"'] 126e381d3d5SBram Moolenaar let r = eval(substitute(a:expr, '%v%', v, '')) 127e381d3d5SBram Moolenaar call assert_equal(a:true_val, r, 'result for ' . v . ' is not ' . a:true_val . ' but ' . r) 128e381d3d5SBram Moolenaar endfor 129e381d3d5SBram Moolenaarendfunc 130e381d3d5SBram Moolenaar 131e381d3d5SBram Moolenaar 132e381d3d5SBram Moolenaar" Test using non-zero-arg for an argument. 133e381d3d5SBram Moolenaarfunc Test_non_zero_arg() 134e381d3d5SBram Moolenaar call test_settime(93784) 135e381d3d5SBram Moolenaar call Try_arg_non_zero("mode(%v%)", 'x', 'x!') 136e381d3d5SBram Moolenaar call test_settime(0) 137e381d3d5SBram Moolenaar 138e381d3d5SBram Moolenaar call Try_arg_non_zero("shellescape('foo%', %v%)", "'foo%'", "'foo\\%'") 139e381d3d5SBram Moolenaar 140e381d3d5SBram Moolenaar " visualmode() needs to be called twice to check 141e381d3d5SBram Moolenaar for v in [v:false, 0, [1], {2:3}, 3.4] 142e381d3d5SBram Moolenaar normal vv 143e381d3d5SBram Moolenaar let r = visualmode(v) 144e381d3d5SBram Moolenaar call assert_equal('v', r, 'result for ' . string(v) . ' is not "v" but ' . r) 145e381d3d5SBram Moolenaar let r = visualmode(v) 146e381d3d5SBram Moolenaar call assert_equal('v', r, 'result for ' . string(v) . ' is not "v" but ' . r) 147e381d3d5SBram Moolenaar endfor 148e381d3d5SBram Moolenaar for v in [v:true, 1, " ", "0"] 149e381d3d5SBram Moolenaar normal vv 150e381d3d5SBram Moolenaar let r = visualmode(v) 151e381d3d5SBram Moolenaar call assert_equal('v', r, 'result for ' . v . ' is not "v" but ' . r) 152e381d3d5SBram Moolenaar let r = visualmode(v) 153e381d3d5SBram Moolenaar call assert_equal('', r, 'result for ' . v . ' is not "" but ' . r) 154e381d3d5SBram Moolenaar endfor 155e381d3d5SBram Moolenaarendfunc 1566d91bcb4SBram Moolenaar 1576d91bcb4SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab 158