diff options
author | ZyX <kp-pav@yandex.ru> | 2016-02-06 19:09:24 +0300 |
---|---|---|
committer | ZyX <kp-pav@yandex.ru> | 2016-04-18 02:45:49 +0300 |
commit | b7cb8f0597c42f209ec460a1850df53bd655c81c (patch) | |
tree | d26023c1a50c7695b1b1cee0e5d2096adee72bcb | |
parent | c91c0171dd7c72717866569be96e48bf838cdf0f (diff) | |
download | rneovim-b7cb8f0597c42f209ec460a1850df53bd655c81c.tar.gz rneovim-b7cb8f0597c42f209ec460a1850df53bd655c81c.tar.bz2 rneovim-b7cb8f0597c42f209ec460a1850df53bd655c81c.zip |
eval: Make assert_true and assert_false accept v:true and v:false
-rw-r--r-- | src/nvim/eval.c | 12 | ||||
-rw-r--r-- | test/functional/eval/special_vars_spec.lua | 17 |
2 files changed, 25 insertions, 4 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 22a12d353a..63fd392a3a 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -7587,16 +7587,20 @@ static void f_assert_equal(typval_T *argvars, typval_T *rettv) } // Common for assert_true() and assert_false(). -static void assert_bool(typval_T *argvars, bool isTrue) +static void assert_bool(typval_T *argvars, bool is_true) { int error = (int)false; garray_T ga; - if (argvars[0].v_type != VAR_NUMBER || - (get_tv_number_chk(&argvars[0], &error) == 0) == isTrue || error) { + if ((argvars[0].v_type != VAR_NUMBER || + (get_tv_number_chk(&argvars[0], &error) == 0) == is_true || error) + && (argvars[0].v_type != VAR_SPECIAL + || argvars[0].vval.v_special != (is_true + ?kSpecialVarTrue + :kSpecialVarFalse))) { prepare_assert_error(&ga); fill_assert_error(&ga, &argvars[1], - (char_u *)(isTrue ? "True" : "False"), + (char_u *)(is_true ? "True" : "False"), NULL, &argvars[0]); assert_error(&ga); ga_clear(&ga); diff --git a/test/functional/eval/special_vars_spec.lua b/test/functional/eval/special_vars_spec.lua index b5c65d23d9..7539261d49 100644 --- a/test/functional/eval/special_vars_spec.lua +++ b/test/functional/eval/special_vars_spec.lua @@ -151,4 +151,21 @@ describe('Special values', function() eq('Vim(echo):E15: Cannot index a special value', exc_exec('echo v:false[0]')) eq('Vim(echo):E15: Cannot index a special value', exc_exec('echo v:null[0]')) end) + + it('is accepted by assert_true and assert_false', function() + funcs.assert_false(false) + funcs.assert_false(true) + eval('assert_false(v:null)') + + funcs.assert_true(false) + funcs.assert_true(true) + eval('assert_true(v:null)') + + eq({ + 'Expected False but got v:true', + 'Expected False but got v:null', + 'Expected True but got v:false', + 'Expected True but got v:null', + }, meths.get_vvar('errors')) + end) end) |