forked from aniani/vim
patch 8.1.1861: only some assert functions can be used as a method
Problem: Only some assert functions can be used as a method. Solution: Allow using most assert functions as a method.
This commit is contained in:
@@ -206,6 +206,9 @@ assert_beeps({cmd}) *assert_beeps()*
|
|||||||
NOT produce a beep or visual bell.
|
NOT produce a beep or visual bell.
|
||||||
Also see |assert_fails()| and |assert-return|.
|
Also see |assert_fails()| and |assert-return|.
|
||||||
|
|
||||||
|
Can also be used as a |method|: >
|
||||||
|
GetCmd()->assert_beeps()
|
||||||
|
<
|
||||||
*assert_equal()*
|
*assert_equal()*
|
||||||
assert_equal({expected}, {actual} [, {msg}])
|
assert_equal({expected}, {actual} [, {msg}])
|
||||||
When {expected} and {actual} are not equal an error message is
|
When {expected} and {actual} are not equal an error message is
|
||||||
@@ -255,6 +258,9 @@ assert_fails({cmd} [, {error} [, {msg}]]) *assert_fails()*
|
|||||||
Note that beeping is not considered an error, and some failing
|
Note that beeping is not considered an error, and some failing
|
||||||
commands only beep. Use |assert_beeps()| for those.
|
commands only beep. Use |assert_beeps()| for those.
|
||||||
|
|
||||||
|
Can also be used as a |method|: >
|
||||||
|
GetCmd()->assert_fails('E99:')
|
||||||
|
|
||||||
assert_false({actual} [, {msg}]) *assert_false()*
|
assert_false({actual} [, {msg}]) *assert_false()*
|
||||||
When {actual} is not false an error message is added to
|
When {actual} is not false an error message is added to
|
||||||
|v:errors|, like with |assert_equal()|.
|
|v:errors|, like with |assert_equal()|.
|
||||||
@@ -264,6 +270,9 @@ assert_false({actual} [, {msg}]) *assert_false()*
|
|||||||
When {msg} is omitted an error in the form
|
When {msg} is omitted an error in the form
|
||||||
"Expected False but got {actual}" is produced.
|
"Expected False but got {actual}" is produced.
|
||||||
|
|
||||||
|
Can also be used as a |method|: >
|
||||||
|
GetResult()->assert_false()
|
||||||
|
|
||||||
assert_inrange({lower}, {upper}, {actual} [, {msg}]) *assert_inrange()*
|
assert_inrange({lower}, {upper}, {actual} [, {msg}]) *assert_inrange()*
|
||||||
This asserts number and |Float| values. When {actual} is lower
|
This asserts number and |Float| values. When {actual} is lower
|
||||||
than {lower} or higher than {upper} an error message is added
|
than {lower} or higher than {upper} an error message is added
|
||||||
@@ -292,6 +301,9 @@ assert_match({pattern}, {actual} [, {msg}])
|
|||||||
< Will result in a string to be added to |v:errors|:
|
< Will result in a string to be added to |v:errors|:
|
||||||
test.vim line 12: Pattern '^f.*o$' does not match 'foobar' ~
|
test.vim line 12: Pattern '^f.*o$' does not match 'foobar' ~
|
||||||
|
|
||||||
|
Can also be used as a |method|: >
|
||||||
|
getFile()->assert_match('foo.*')
|
||||||
|
<
|
||||||
*assert_notequal()*
|
*assert_notequal()*
|
||||||
assert_notequal({expected}, {actual} [, {msg}])
|
assert_notequal({expected}, {actual} [, {msg}])
|
||||||
The opposite of `assert_equal()`: add an error message to
|
The opposite of `assert_equal()`: add an error message to
|
||||||
@@ -307,6 +319,9 @@ assert_notmatch({pattern}, {actual} [, {msg}])
|
|||||||
|v:errors| when {pattern} matches {actual}.
|
|v:errors| when {pattern} matches {actual}.
|
||||||
Also see |assert-return|.
|
Also see |assert-return|.
|
||||||
|
|
||||||
|
Can also be used as a |method|: >
|
||||||
|
getFile()->assert_notmatch('bar.*')
|
||||||
|
|
||||||
assert_report({msg}) *assert_report()*
|
assert_report({msg}) *assert_report()*
|
||||||
Report a test failure directly, using {msg}.
|
Report a test failure directly, using {msg}.
|
||||||
Always returns one.
|
Always returns one.
|
||||||
@@ -320,5 +335,8 @@ assert_true({actual} [, {msg}]) *assert_true()*
|
|||||||
When {msg} is omitted an error in the form "Expected True but
|
When {msg} is omitted an error in the form "Expected True but
|
||||||
got {actual}" is produced.
|
got {actual}" is produced.
|
||||||
|
|
||||||
|
Can also be used as a |method|: >
|
||||||
|
GetResult()->assert_true()
|
||||||
|
<
|
||||||
|
|
||||||
vim:tw=78:ts=8:noet:ft=help:norl:
|
vim:tw=78:ts=8:noet:ft=help:norl:
|
||||||
|
@@ -415,6 +415,7 @@ typedef struct
|
|||||||
// values for f_argtype; zero means it cannot be used as a method
|
// values for f_argtype; zero means it cannot be used as a method
|
||||||
#define FEARG_1 1 // base is the first argument
|
#define FEARG_1 1 // base is the first argument
|
||||||
#define FEARG_2 2 // base is the second argument
|
#define FEARG_2 2 // base is the second argument
|
||||||
|
#define FEARG_3 3 // base is the third argument
|
||||||
#define FEARG_LAST 9 // base is the last argument
|
#define FEARG_LAST 9 // base is the last argument
|
||||||
|
|
||||||
static funcentry_T global_functions[] =
|
static funcentry_T global_functions[] =
|
||||||
@@ -434,18 +435,18 @@ static funcentry_T global_functions[] =
|
|||||||
#ifdef FEAT_FLOAT
|
#ifdef FEAT_FLOAT
|
||||||
{"asin", 1, 1, 0, f_asin}, // WJMc
|
{"asin", 1, 1, 0, f_asin}, // WJMc
|
||||||
#endif
|
#endif
|
||||||
{"assert_beeps", 1, 2, 0, f_assert_beeps},
|
{"assert_beeps", 1, 2, FEARG_1, f_assert_beeps},
|
||||||
{"assert_equal", 2, 3, FEARG_2, f_assert_equal},
|
{"assert_equal", 2, 3, FEARG_2, f_assert_equal},
|
||||||
{"assert_equalfile", 2, 2, 0, f_assert_equalfile},
|
{"assert_equalfile", 2, 2, 0, f_assert_equalfile},
|
||||||
{"assert_exception", 1, 2, 0, f_assert_exception},
|
{"assert_exception", 1, 2, 0, f_assert_exception},
|
||||||
{"assert_fails", 1, 3, 0, f_assert_fails},
|
{"assert_fails", 1, 3, FEARG_1, f_assert_fails},
|
||||||
{"assert_false", 1, 2, 0, f_assert_false},
|
{"assert_false", 1, 2, FEARG_1, f_assert_false},
|
||||||
{"assert_inrange", 3, 4, 0, f_assert_inrange},
|
{"assert_inrange", 3, 4, FEARG_3, f_assert_inrange},
|
||||||
{"assert_match", 2, 3, 0, f_assert_match},
|
{"assert_match", 2, 3, FEARG_2, f_assert_match},
|
||||||
{"assert_notequal", 2, 3, FEARG_2, f_assert_notequal},
|
{"assert_notequal", 2, 3, FEARG_2, f_assert_notequal},
|
||||||
{"assert_notmatch", 2, 3, 0, f_assert_notmatch},
|
{"assert_notmatch", 2, 3, FEARG_2, f_assert_notmatch},
|
||||||
{"assert_report", 1, 1, 0, f_assert_report},
|
{"assert_report", 1, 1, 0, f_assert_report},
|
||||||
{"assert_true", 1, 2, 0, f_assert_true},
|
{"assert_true", 1, 2, FEARG_1, f_assert_true},
|
||||||
#ifdef FEAT_FLOAT
|
#ifdef FEAT_FLOAT
|
||||||
{"atan", 1, 1, 0, f_atan},
|
{"atan", 1, 1, 0, f_atan},
|
||||||
{"atan2", 2, 2, 0, f_atan2},
|
{"atan2", 2, 2, 0, f_atan2},
|
||||||
@@ -1134,6 +1135,15 @@ call_internal_method(
|
|||||||
for (i = 1; i < argcount; ++i)
|
for (i = 1; i < argcount; ++i)
|
||||||
argv[i + 1] = argvars[i];
|
argv[i + 1] = argvars[i];
|
||||||
}
|
}
|
||||||
|
else if (global_functions[fi].f_argtype == FEARG_3)
|
||||||
|
{
|
||||||
|
// base value goes third
|
||||||
|
argv[0] = argvars[0];
|
||||||
|
argv[1] = argvars[1];
|
||||||
|
argv[2] = *basetv;
|
||||||
|
for (i = 2; i < argcount; ++i)
|
||||||
|
argv[i + 1] = argvars[i];
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// FEARG_1: base value goes first
|
// FEARG_1: base value goes first
|
||||||
|
@@ -3,20 +3,30 @@
|
|||||||
func Test_assert_false()
|
func Test_assert_false()
|
||||||
call assert_equal(0, assert_false(0))
|
call assert_equal(0, assert_false(0))
|
||||||
call assert_equal(0, assert_false(v:false))
|
call assert_equal(0, assert_false(v:false))
|
||||||
|
call assert_equal(0, v:false->assert_false())
|
||||||
|
|
||||||
call assert_equal(1, assert_false(123))
|
call assert_equal(1, assert_false(123))
|
||||||
call assert_match("Expected False but got 123", v:errors[0])
|
call assert_match("Expected False but got 123", v:errors[0])
|
||||||
call remove(v:errors, 0)
|
call remove(v:errors, 0)
|
||||||
|
|
||||||
|
call assert_equal(1, 123->assert_false())
|
||||||
|
call assert_match("Expected False but got 123", v:errors[0])
|
||||||
|
call remove(v:errors, 0)
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
func Test_assert_true()
|
func Test_assert_true()
|
||||||
call assert_equal(0, assert_true(1))
|
call assert_equal(0, assert_true(1))
|
||||||
call assert_equal(0, assert_true(123))
|
call assert_equal(0, assert_true(123))
|
||||||
call assert_equal(0, assert_true(v:true))
|
call assert_equal(0, assert_true(v:true))
|
||||||
|
call assert_equal(0, v:true->assert_true())
|
||||||
|
|
||||||
call assert_equal(1, assert_true(0))
|
call assert_equal(1, assert_true(0))
|
||||||
call assert_match("Expected True but got 0", v:errors[0])
|
call assert_match("Expected True but got 0", v:errors[0])
|
||||||
call remove(v:errors, 0)
|
call remove(v:errors, 0)
|
||||||
|
|
||||||
|
call assert_equal(1, 0->assert_true())
|
||||||
|
call assert_match("Expected True but got 0", v:errors[0])
|
||||||
|
call remove(v:errors, 0)
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
func Test_assert_equal()
|
func Test_assert_equal()
|
||||||
@@ -141,6 +151,10 @@ func Test_match()
|
|||||||
call assert_equal(1, assert_match('bar.*foo', 'foobar', 'wrong'))
|
call assert_equal(1, assert_match('bar.*foo', 'foobar', 'wrong'))
|
||||||
call assert_match('wrong', v:errors[0])
|
call assert_match('wrong', v:errors[0])
|
||||||
call remove(v:errors, 0)
|
call remove(v:errors, 0)
|
||||||
|
|
||||||
|
call assert_equal(1, 'foobar'->assert_match('bar.*foo', 'wrong'))
|
||||||
|
call assert_match('wrong', v:errors[0])
|
||||||
|
call remove(v:errors, 0)
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
func Test_notmatch()
|
func Test_notmatch()
|
||||||
@@ -150,6 +164,10 @@ func Test_notmatch()
|
|||||||
call assert_equal(1, assert_notmatch('foo', 'foobar'))
|
call assert_equal(1, assert_notmatch('foo', 'foobar'))
|
||||||
call assert_match("Pattern 'foo' does match 'foobar'", v:errors[0])
|
call assert_match("Pattern 'foo' does match 'foobar'", v:errors[0])
|
||||||
call remove(v:errors, 0)
|
call remove(v:errors, 0)
|
||||||
|
|
||||||
|
call assert_equal(1, 'foobar'->assert_notmatch('foo'))
|
||||||
|
call assert_match("Pattern 'foo' does match 'foobar'", v:errors[0])
|
||||||
|
call remove(v:errors, 0)
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
func Test_assert_fail_fails()
|
func Test_assert_fail_fails()
|
||||||
@@ -164,6 +182,10 @@ func Test_assert_fail_fails()
|
|||||||
call assert_equal(1, assert_fails('echo', '', 'echo command'))
|
call assert_equal(1, assert_fails('echo', '', 'echo command'))
|
||||||
call assert_match("command did not fail: echo command", v:errors[0])
|
call assert_match("command did not fail: echo command", v:errors[0])
|
||||||
call remove(v:errors, 0)
|
call remove(v:errors, 0)
|
||||||
|
|
||||||
|
call assert_equal(1, 'echo'->assert_fails('', 'echo command'))
|
||||||
|
call assert_match("command did not fail: echo command", v:errors[0])
|
||||||
|
call remove(v:errors, 0)
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
func Test_assert_fails_in_try_block()
|
func Test_assert_fails_in_try_block()
|
||||||
@@ -179,6 +201,12 @@ func Test_assert_beeps()
|
|||||||
call assert_equal(1, assert_beeps('normal 0'))
|
call assert_equal(1, assert_beeps('normal 0'))
|
||||||
call assert_match("command did not beep: normal 0", v:errors[0])
|
call assert_match("command did not beep: normal 0", v:errors[0])
|
||||||
call remove(v:errors, 0)
|
call remove(v:errors, 0)
|
||||||
|
|
||||||
|
call assert_equal(0, 'normal h'->assert_beeps())
|
||||||
|
call assert_equal(1, 'normal 0'->assert_beeps())
|
||||||
|
call assert_match("command did not beep: normal 0", v:errors[0])
|
||||||
|
call remove(v:errors, 0)
|
||||||
|
|
||||||
bwipe
|
bwipe
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
@@ -195,6 +223,12 @@ func Test_assert_inrange()
|
|||||||
call assert_match("Expected range 5 - 7, but got 8", v:errors[0])
|
call assert_match("Expected range 5 - 7, but got 8", v:errors[0])
|
||||||
call remove(v:errors, 0)
|
call remove(v:errors, 0)
|
||||||
|
|
||||||
|
call assert_equal(0, 5->assert_inrange(5, 7))
|
||||||
|
call assert_equal(0, 7->assert_inrange(5, 7))
|
||||||
|
call assert_equal(1, 8->assert_inrange(5, 7))
|
||||||
|
call assert_match("Expected range 5 - 7, but got 8", v:errors[0])
|
||||||
|
call remove(v:errors, 0)
|
||||||
|
|
||||||
call assert_fails('call assert_inrange(1, 1)', 'E119:')
|
call assert_fails('call assert_inrange(1, 1)', 'E119:')
|
||||||
|
|
||||||
if has('float')
|
if has('float')
|
||||||
|
@@ -769,6 +769,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1861,
|
||||||
/**/
|
/**/
|
||||||
1860,
|
1860,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user