eval: Make assert_true and assert_false accept v:true and v:false

This commit is contained in:
ZyX
2016-02-06 19:09:24 +03:00
parent c91c0171dd
commit b7cb8f0597
2 changed files with 25 additions and 4 deletions

View File

@@ -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);

View File

@@ -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)