1207f0093SBram Moolenaar*testing.txt* For Vim version 8.2. Last change: 2020 Aug 17 2ed997adaSBram Moolenaar 3ed997adaSBram Moolenaar 4ed997adaSBram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar 5ed997adaSBram Moolenaar 6ed997adaSBram Moolenaar 7ed997adaSBram MoolenaarTesting Vim and Vim script *testing-support* 8ed997adaSBram Moolenaar 9ed997adaSBram MoolenaarExpression evaluation is explained in |eval.txt|. This file goes into details 10ed997adaSBram Moolenaarabout writing tests in Vim script. This can be used for testing Vim itself 11ed997adaSBram Moolenaarand for testing plugins. 12ed997adaSBram Moolenaar 13ed997adaSBram Moolenaar1. Testing Vim |testing| 145477506aSBram Moolenaar2. Test functions |test-functions-details| 155477506aSBram Moolenaar3. Assert functions |assert-functions-details| 16ed997adaSBram Moolenaar 17ed997adaSBram Moolenaar============================================================================== 18ed997adaSBram Moolenaar1. Testing Vim *testing* 19ed997adaSBram Moolenaar 20ed997adaSBram MoolenaarVim can be tested after building it, usually with "make test". 21ed997adaSBram MoolenaarThe tests are located in the directory "src/testdir". 22ed997adaSBram Moolenaar 23b96a32efSBram MoolenaarThere are two types of tests added over time: 24b96a32efSBram Moolenaar test20.in oldest, only for tiny and small builds 25b96a32efSBram Moolenaar test_something.vim new style tests 26b96a32efSBram Moolenaar 27ed997adaSBram Moolenaar *new-style-testing* 28f7c4d836SBram MoolenaarNew tests should be added as new style tests. The test scripts are named 29f7c4d836SBram Moolenaartest_<feature>.vim (replace <feature> with the feature under test). These use 30f7c4d836SBram Moolenaarfunctions such as |assert_equal()| to keep the test commands and the expected 31f7c4d836SBram Moolenaarresult in one place. 32b96a32efSBram Moolenaar *old-style-testing* 33b96a32efSBram MoolenaarThese tests are used only for testing Vim without the |+eval| feature. 34ed997adaSBram Moolenaar 35ed997adaSBram MoolenaarFind more information in the file src/testdir/README.txt. 36ed997adaSBram Moolenaar 37ed997adaSBram Moolenaar============================================================================== 385477506aSBram Moolenaar2. Test functions *test-functions-details* 39ed997adaSBram Moolenaar 40ed997adaSBram Moolenaartest_alloc_fail({id}, {countdown}, {repeat}) *test_alloc_fail()* 41ed997adaSBram Moolenaar This is for testing: If the memory allocation with {id} is 42ed997adaSBram Moolenaar called, then decrement {countdown}, and when it reaches zero 43ed997adaSBram Moolenaar let memory allocation fail {repeat} times. When {repeat} is 44ed997adaSBram Moolenaar smaller than one it fails one time. 45ed997adaSBram Moolenaar 46ce90e36fSBram Moolenaar Can also be used as a |method|: > 47ce90e36fSBram Moolenaar GetAllocId()->test_alloc_fail() 48ed997adaSBram Moolenaar 49ed997adaSBram Moolenaartest_autochdir() *test_autochdir()* 50ed997adaSBram Moolenaar Set a flag to enable the effect of 'autochdir' before Vim 51ed997adaSBram Moolenaar startup has finished. 52ed997adaSBram Moolenaar 53ed997adaSBram Moolenaar 54ed997adaSBram Moolenaartest_feedinput({string}) *test_feedinput()* 55ed997adaSBram Moolenaar Characters in {string} are queued for processing as if they 56ed997adaSBram Moolenaar were typed by the user. This uses a low level input buffer. 57ed997adaSBram Moolenaar This function works only when with |+unix| or GUI is running. 58ed997adaSBram Moolenaar 59ce90e36fSBram Moolenaar Can also be used as a |method|: > 60ce90e36fSBram Moolenaar GetText()->test_feedinput() 61ed997adaSBram Moolenaar 62ed997adaSBram Moolenaartest_garbagecollect_now() *test_garbagecollect_now()* 63ed997adaSBram Moolenaar Like garbagecollect(), but executed right away. This must 64ed997adaSBram Moolenaar only be called directly to avoid any structure to exist 65ed997adaSBram Moolenaar internally, and |v:testing| must have been set before calling 66ed997adaSBram Moolenaar any function. 67ed997adaSBram Moolenaar 68ed997adaSBram Moolenaar 69ed997adaSBram Moolenaartest_garbagecollect_soon() *test_garbagecollect_soon()* 70ed997adaSBram Moolenaar Set the flag to call the garbagecollector as if in the main 71ed997adaSBram Moolenaar loop. Only to be used in tests. 72ed997adaSBram Moolenaar 73ed997adaSBram Moolenaar 74ed997adaSBram Moolenaartest_getvalue({name}) *test_getvalue()* 75ed997adaSBram Moolenaar Get the value of an internal variable. These values for 76ed997adaSBram Moolenaar {name} are supported: 77ed997adaSBram Moolenaar need_fileinfo 78ed997adaSBram Moolenaar 79ce90e36fSBram Moolenaar Can also be used as a |method|: > 80ce90e36fSBram Moolenaar GetName()->test_getvalue() 81ed997adaSBram Moolenaar 82ed997adaSBram Moolenaartest_ignore_error({expr}) *test_ignore_error()* 83ed997adaSBram Moolenaar Ignore any error containing {expr}. A normal message is given 84ed997adaSBram Moolenaar instead. 85ed997adaSBram Moolenaar This is only meant to be used in tests, where catching the 86ed997adaSBram Moolenaar error with try/catch cannot be used (because it skips over 87ed997adaSBram Moolenaar following code). 88ed997adaSBram Moolenaar {expr} is used literally, not as a pattern. 89ed997adaSBram Moolenaar When the {expr} is the string "RESET" then the list of ignored 90ed997adaSBram Moolenaar errors is made empty. 91ed997adaSBram Moolenaar 92ce90e36fSBram Moolenaar Can also be used as a |method|: > 93ce90e36fSBram Moolenaar GetErrorText()->test_ignore_error() 94ed997adaSBram Moolenaar 95ed997adaSBram Moolenaartest_null_blob() *test_null_blob()* 96ed997adaSBram Moolenaar Return a |Blob| that is null. Only useful for testing. 97ed997adaSBram Moolenaar 98ed997adaSBram Moolenaar 99ed997adaSBram Moolenaartest_null_channel() *test_null_channel()* 100ed997adaSBram Moolenaar Return a |Channel| that is null. Only useful for testing. 101ed997adaSBram Moolenaar {only available when compiled with the +channel feature} 102ed997adaSBram Moolenaar 103ed997adaSBram Moolenaar 104ed997adaSBram Moolenaartest_null_dict() *test_null_dict()* 105ed997adaSBram Moolenaar Return a |Dict| that is null. Only useful for testing. 106ed997adaSBram Moolenaar 107ed997adaSBram Moolenaar 108e69f6d04SBram Moolenaartest_null_function() *test_null_function()* 109d1caa941SBram Moolenaar Return a |Funcref| that is null. Only useful for testing. 110e69f6d04SBram Moolenaar 111e69f6d04SBram Moolenaar 112ed997adaSBram Moolenaartest_null_job() *test_null_job()* 113ed997adaSBram Moolenaar Return a |Job| that is null. Only useful for testing. 114ed997adaSBram Moolenaar {only available when compiled with the +job feature} 115ed997adaSBram Moolenaar 116ed997adaSBram Moolenaar 117ed997adaSBram Moolenaartest_null_list() *test_null_list()* 118ed997adaSBram Moolenaar Return a |List| that is null. Only useful for testing. 119ed997adaSBram Moolenaar 120ed997adaSBram Moolenaar 121ed997adaSBram Moolenaartest_null_partial() *test_null_partial()* 122ed997adaSBram Moolenaar Return a |Partial| that is null. Only useful for testing. 123ed997adaSBram Moolenaar 124ed997adaSBram Moolenaar 125ed997adaSBram Moolenaartest_null_string() *test_null_string()* 126ed997adaSBram Moolenaar Return a |String| that is null. Only useful for testing. 127ed997adaSBram Moolenaar 128ed997adaSBram Moolenaar 1298ed04587SBram Moolenaartest_unknown() *test_unknown()* 1308ed04587SBram Moolenaar Return a value with unknown type. Only useful for testing. 1318ed04587SBram Moolenaar 1328ed04587SBram Moolenaartest_void() *test_void()* 1338ed04587SBram Moolenaar Return a value with void type. Only useful for testing. 1348ed04587SBram Moolenaar 1358ed04587SBram Moolenaar 136ed997adaSBram Moolenaartest_option_not_set({name}) *test_option_not_set()* 137ed997adaSBram Moolenaar Reset the flag that indicates option {name} was set. Thus it 138ed997adaSBram Moolenaar looks like it still has the default value. Use like this: > 139ed997adaSBram Moolenaar set ambiwidth=double 140ed997adaSBram Moolenaar call test_option_not_set('ambiwidth') 141ed997adaSBram Moolenaar< Now the 'ambiwidth' option behaves like it was never changed, 142ed997adaSBram Moolenaar even though the value is "double". 143ed997adaSBram Moolenaar Only to be used for testing! 144ed997adaSBram Moolenaar 145ce90e36fSBram Moolenaar Can also be used as a |method|: > 146ce90e36fSBram Moolenaar GetOptionName()->test_option_not_set() 147ce90e36fSBram Moolenaar 148ed997adaSBram Moolenaar 149ed997adaSBram Moolenaartest_override({name}, {val}) *test_override()* 150ed997adaSBram Moolenaar Overrides certain parts of Vim's internal processing to be able 151ed997adaSBram Moolenaar to run tests. Only to be used for testing Vim! 152ed997adaSBram Moolenaar The override is enabled when {val} is non-zero and removed 153ed997adaSBram Moolenaar when {val} is zero. 154ed997adaSBram Moolenaar Current supported values for name are: 155ed997adaSBram Moolenaar 156ed997adaSBram Moolenaar name effect when {val} is non-zero ~ 157ed997adaSBram Moolenaar redraw disable the redrawing() function 158ed997adaSBram Moolenaar redraw_flag ignore the RedrawingDisabled flag 159ed997adaSBram Moolenaar char_avail disable the char_avail() function 160ed997adaSBram Moolenaar starting reset the "starting" variable, see below 161ed997adaSBram Moolenaar nfa_fail makes the NFA regexp engine fail to force a 162ed997adaSBram Moolenaar fallback to the old engine 163ed997adaSBram Moolenaar no_query_mouse do not query the mouse position for "dec" 164ed997adaSBram Moolenaar terminals 165ed997adaSBram Moolenaar no_wait_return set the "no_wait_return" flag. Not restored 166ed997adaSBram Moolenaar with "ALL". 167b340baedSBram Moolenaar ui_delay time in msec to use in ui_delay(); overrules a 168b340baedSBram Moolenaar wait time of up to 3 seconds for messages 1690c0eddd3SBram Moolenaar term_props reset all terminal properties when the version 1700c0eddd3SBram Moolenaar string is detected 171ed997adaSBram Moolenaar ALL clear all overrides ({val} is not used) 172ed997adaSBram Moolenaar 173ed997adaSBram Moolenaar "starting" is to be used when a test should behave like 174ed997adaSBram Moolenaar startup was done. Since the tests are run by sourcing a 175ed997adaSBram Moolenaar script the "starting" variable is non-zero. This is usually a 176ed997adaSBram Moolenaar good thing (tests run faster), but sometimes changes behavior 177ed997adaSBram Moolenaar in a way that the test doesn't work properly. 178ed997adaSBram Moolenaar When using: > 179ed997adaSBram Moolenaar call test_override('starting', 1) 180ed997adaSBram Moolenaar< The value of "starting" is saved. It is restored by: > 181ed997adaSBram Moolenaar call test_override('starting', 0) 182ed997adaSBram Moolenaar 183ce90e36fSBram Moolenaar< Can also be used as a |method|: > 184ce90e36fSBram Moolenaar GetOverrideVal()-> test_override('starting') 185ed997adaSBram Moolenaar 186ed997adaSBram Moolenaartest_refcount({expr}) *test_refcount()* 187ed997adaSBram Moolenaar Return the reference count of {expr}. When {expr} is of a 188ed997adaSBram Moolenaar type that does not have a reference count, returns -1. Only 189ed997adaSBram Moolenaar to be used for testing. 190ed997adaSBram Moolenaar 191ce90e36fSBram Moolenaar Can also be used as a |method|: > 192ce90e36fSBram Moolenaar GetVarname()->test_refcount() 193ce90e36fSBram Moolenaar 194ed997adaSBram Moolenaar 195ed997adaSBram Moolenaartest_scrollbar({which}, {value}, {dragging}) *test_scrollbar()* 196ed997adaSBram Moolenaar Pretend using scrollbar {which} to move it to position 197ed997adaSBram Moolenaar {value}. {which} can be: 198ed997adaSBram Moolenaar left Left scrollbar of the current window 199ed997adaSBram Moolenaar right Right scrollbar of the current window 200ed997adaSBram Moolenaar hor Horizontal scrollbar 201ed997adaSBram Moolenaar 202ed997adaSBram Moolenaar For the vertical scrollbars {value} can be 1 to the 203ed997adaSBram Moolenaar line-count of the buffer. For the horizontal scrollbar the 204ed997adaSBram Moolenaar {value} can be between 1 and the maximum line length, assuming 205ed997adaSBram Moolenaar 'wrap' is not set. 206ed997adaSBram Moolenaar 207ed997adaSBram Moolenaar When {dragging} is non-zero it's like dragging the scrollbar, 208ed997adaSBram Moolenaar otherwise it's like clicking in the scrollbar. 209ed997adaSBram Moolenaar Only works when the {which} scrollbar actually exists, 210ed997adaSBram Moolenaar obviously only when using the GUI. 211ed997adaSBram Moolenaar 212ce90e36fSBram Moolenaar Can also be used as a |method|: > 213ce90e36fSBram Moolenaar GetValue()->test_scrollbar('right', 0) 214ed997adaSBram Moolenaar 215ed997adaSBram Moolenaartest_setmouse({row}, {col}) *test_setmouse()* 216ed997adaSBram Moolenaar Set the mouse position to be used for the next mouse action. 217ed997adaSBram Moolenaar {row} and {col} are one based. 218ed997adaSBram Moolenaar For example: > 219ed997adaSBram Moolenaar call test_setmouse(4, 20) 220ed997adaSBram Moolenaar call feedkeys("\<LeftMouse>", "xt") 221ed997adaSBram Moolenaar 222ed997adaSBram Moolenaartest_settime({expr}) *test_settime()* 223ed997adaSBram Moolenaar Set the time Vim uses internally. Currently only used for 224ed997adaSBram Moolenaar timestamps in the history, as they are used in viminfo, and 225ed997adaSBram Moolenaar for undo. 226ed997adaSBram Moolenaar Using a value of 1 makes Vim not sleep after a warning or 227ed997adaSBram Moolenaar error message. 228ed997adaSBram Moolenaar {expr} must evaluate to a number. When the value is zero the 229ed997adaSBram Moolenaar normal behavior is restored. 230ed997adaSBram Moolenaar 231ce90e36fSBram Moolenaar Can also be used as a |method|: > 232ce90e36fSBram Moolenaar GetTime()->test_settime() 233ce90e36fSBram Moolenaar 2344f645c54SBram Moolenaartest_srand_seed([seed]) *test_srand_seed()* 2354f645c54SBram Moolenaar When [seed] is given this sets the seed value used by 2364f645c54SBram Moolenaar `srand()`. When omitted the test seed is removed. 2374f645c54SBram Moolenaar 238ed997adaSBram Moolenaar============================================================================== 2395477506aSBram Moolenaar3. Assert functions *assert-functions-details* 240ed997adaSBram Moolenaar 241ed997adaSBram Moolenaar 242ed997adaSBram Moolenaarassert_beeps({cmd}) *assert_beeps()* 243ed997adaSBram Moolenaar Run {cmd} and add an error message to |v:errors| if it does 244ed997adaSBram Moolenaar NOT produce a beep or visual bell. 245ed997adaSBram Moolenaar Also see |assert_fails()| and |assert-return|. 246ed997adaSBram Moolenaar 24724278d24SBram Moolenaar Can also be used as a |method|: > 24824278d24SBram Moolenaar GetCmd()->assert_beeps() 24924278d24SBram Moolenaar< 250ed997adaSBram Moolenaar *assert_equal()* 251ed997adaSBram Moolenaarassert_equal({expected}, {actual} [, {msg}]) 252ed997adaSBram Moolenaar When {expected} and {actual} are not equal an error message is 253ed997adaSBram Moolenaar added to |v:errors| and 1 is returned. Otherwise zero is 254ed997adaSBram Moolenaar returned |assert-return|. 255ed997adaSBram Moolenaar There is no automatic conversion, the String "4" is different 256ed997adaSBram Moolenaar from the Number 4. And the number 4 is different from the 257ed997adaSBram Moolenaar Float 4.0. The value of 'ignorecase' is not used here, case 258ed997adaSBram Moolenaar always matters. 259ed997adaSBram Moolenaar When {msg} is omitted an error in the form "Expected 260ed997adaSBram Moolenaar {expected} but got {actual}" is produced. 261ed997adaSBram Moolenaar Example: > 262ed997adaSBram Moolenaar assert_equal('foo', 'bar') 263ed997adaSBram Moolenaar< Will result in a string to be added to |v:errors|: 264ed997adaSBram Moolenaar test.vim line 12: Expected 'foo' but got 'bar' ~ 265ed997adaSBram Moolenaar 2667ff78465SBram Moolenaar Can also be used as a |method|, the base is passed as the 2677ff78465SBram Moolenaar second argument: > 26825e42231SBram Moolenaar mylist->assert_equal([1, 2, 3]) 26925e42231SBram Moolenaar 27025e42231SBram Moolenaar< *assert_equalfile()* 271fb517bacSBram Moolenaarassert_equalfile({fname-one}, {fname-two} [, {msg}]) 272ed997adaSBram Moolenaar When the files {fname-one} and {fname-two} do not contain 273ed997adaSBram Moolenaar exactly the same text an error message is added to |v:errors|. 274ed997adaSBram Moolenaar Also see |assert-return|. 275ed997adaSBram Moolenaar When {fname-one} or {fname-two} does not exist the error will 276ed997adaSBram Moolenaar mention that. 277ed997adaSBram Moolenaar Mainly useful with |terminal-diff|. 278ed997adaSBram Moolenaar 279e49fbff3SBram Moolenaar Can also be used as a |method|: > 280e49fbff3SBram Moolenaar GetLog()->assert_equalfile('expected.log') 281e49fbff3SBram Moolenaar 282ed997adaSBram Moolenaarassert_exception({error} [, {msg}]) *assert_exception()* 283ed997adaSBram Moolenaar When v:exception does not contain the string {error} an error 284ed997adaSBram Moolenaar message is added to |v:errors|. Also see |assert-return|. 285ed997adaSBram Moolenaar This can be used to assert that a command throws an exception. 286ed997adaSBram Moolenaar Using the error number, followed by a colon, avoids problems 287ed997adaSBram Moolenaar with translations: > 288ed997adaSBram Moolenaar try 289ed997adaSBram Moolenaar commandthatfails 290ed997adaSBram Moolenaar call assert_false(1, 'command should have failed') 291ed997adaSBram Moolenaar catch 292ed997adaSBram Moolenaar call assert_exception('E492:') 293ed997adaSBram Moolenaar endtry 2941d634542SBram Moolenaar< 2951d634542SBram Moolenaar *assert_fails()* 296*9bd5d879SBram Moolenaarassert_fails({cmd} [, {error} [, {msg} [, {lnum} [, {context}]]]]) 297ed997adaSBram Moolenaar Run {cmd} and add an error message to |v:errors| if it does 2989b7bf9e9SBram Moolenaar NOT produce an error or when {error} is not found in the 2999b7bf9e9SBram Moolenaar error message. Also see |assert-return|. 3009b7bf9e9SBram Moolenaar 3019b7bf9e9SBram Moolenaar When {error} is a string it must be found literally in the 3029b7bf9e9SBram Moolenaar first reported error. Most often this will be the error code, 3039b7bf9e9SBram Moolenaar including the colon, e.g. "E123:". > 3049b7bf9e9SBram Moolenaar assert_fails('bad cmd', 'E987:') 3059b7bf9e9SBram Moolenaar< 3069b7bf9e9SBram Moolenaar When {error} is a |List| with one or two strings, these are 3079b7bf9e9SBram Moolenaar used as patterns. The first pattern is matched against the 3089b7bf9e9SBram Moolenaar first reported error: > 3099b7bf9e9SBram Moolenaar assert_fails('cmd', ['E987:.*expected bool']) 3109b7bf9e9SBram Moolenaar< The second pattern, if present, is matched against the last 3119b7bf9e9SBram Moolenaar reported error. To only match the last error use an empty 3129b7bf9e9SBram Moolenaar string for the first error: > 3139b7bf9e9SBram Moolenaar assert_fails('cmd', ['', 'E987:']) 3149b7bf9e9SBram Moolenaar< 3151d634542SBram Moolenaar If {msg} is empty then it is not used. Do this to get the 3161d634542SBram Moolenaar default message when passing the {lnum} argument. 3171d634542SBram Moolenaar 3181d634542SBram Moolenaar When {lnum} is present and not negative, and the {error} 3191d634542SBram Moolenaar argument is present and matches, then this is compared with 3201d634542SBram Moolenaar the line number at which the error was reported. That can be 3211d634542SBram Moolenaar the line number in a function or in a script. 3221d634542SBram Moolenaar 323*9bd5d879SBram Moolenaar When {context} is present it is used as a pattern and matched 324*9bd5d879SBram Moolenaar against the context (script name or function name) where 325*9bd5d879SBram Moolenaar {lnum} is located in. 326*9bd5d879SBram Moolenaar 327ed997adaSBram Moolenaar Note that beeping is not considered an error, and some failing 328ed997adaSBram Moolenaar commands only beep. Use |assert_beeps()| for those. 329ed997adaSBram Moolenaar 33024278d24SBram Moolenaar Can also be used as a |method|: > 33124278d24SBram Moolenaar GetCmd()->assert_fails('E99:') 33224278d24SBram Moolenaar 333ed997adaSBram Moolenaarassert_false({actual} [, {msg}]) *assert_false()* 334ed997adaSBram Moolenaar When {actual} is not false an error message is added to 335ed997adaSBram Moolenaar |v:errors|, like with |assert_equal()|. 336ed997adaSBram Moolenaar Also see |assert-return|. 337ed997adaSBram Moolenaar A value is false when it is zero. When {actual} is not a 338ed997adaSBram Moolenaar number the assert fails. 339ed997adaSBram Moolenaar When {msg} is omitted an error in the form 340ed997adaSBram Moolenaar "Expected False but got {actual}" is produced. 341ed997adaSBram Moolenaar 34224278d24SBram Moolenaar Can also be used as a |method|: > 34324278d24SBram Moolenaar GetResult()->assert_false() 34424278d24SBram Moolenaar 345ed997adaSBram Moolenaarassert_inrange({lower}, {upper}, {actual} [, {msg}]) *assert_inrange()* 346ed997adaSBram Moolenaar This asserts number and |Float| values. When {actual} is lower 347ed997adaSBram Moolenaar than {lower} or higher than {upper} an error message is added 348ed997adaSBram Moolenaar to |v:errors|. Also see |assert-return|. 349ed997adaSBram Moolenaar When {msg} is omitted an error in the form 350ed997adaSBram Moolenaar "Expected range {lower} - {upper}, but got {actual}" is 351ed997adaSBram Moolenaar produced. 352ed997adaSBram Moolenaar 353ed997adaSBram Moolenaar *assert_match()* 354ed997adaSBram Moolenaarassert_match({pattern}, {actual} [, {msg}]) 355ed997adaSBram Moolenaar When {pattern} does not match {actual} an error message is 356ed997adaSBram Moolenaar added to |v:errors|. Also see |assert-return|. 357ed997adaSBram Moolenaar 358ed997adaSBram Moolenaar {pattern} is used as with |=~|: The matching is always done 359ed997adaSBram Moolenaar like 'magic' was set and 'cpoptions' is empty, no matter what 360ed997adaSBram Moolenaar the actual value of 'magic' or 'cpoptions' is. 361ed997adaSBram Moolenaar 362ed997adaSBram Moolenaar {actual} is used as a string, automatic conversion applies. 363ed997adaSBram Moolenaar Use "^" and "$" to match with the start and end of the text. 364ed997adaSBram Moolenaar Use both to match the whole text. 365ed997adaSBram Moolenaar 366ed997adaSBram Moolenaar When {msg} is omitted an error in the form 367ed997adaSBram Moolenaar "Pattern {pattern} does not match {actual}" is produced. 368ed997adaSBram Moolenaar Example: > 369ed997adaSBram Moolenaar assert_match('^f.*o$', 'foobar') 370ed997adaSBram Moolenaar< Will result in a string to be added to |v:errors|: 371ed997adaSBram Moolenaar test.vim line 12: Pattern '^f.*o$' does not match 'foobar' ~ 372ed997adaSBram Moolenaar 37324278d24SBram Moolenaar Can also be used as a |method|: > 37424278d24SBram Moolenaar getFile()->assert_match('foo.*') 37524278d24SBram Moolenaar< 376ed997adaSBram Moolenaar *assert_notequal()* 377ed997adaSBram Moolenaarassert_notequal({expected}, {actual} [, {msg}]) 378ed997adaSBram Moolenaar The opposite of `assert_equal()`: add an error message to 379ed997adaSBram Moolenaar |v:errors| when {expected} and {actual} are equal. 380ed997adaSBram Moolenaar Also see |assert-return|. 381ed997adaSBram Moolenaar 38225e42231SBram Moolenaar Can also be used as a |method|: > 38325e42231SBram Moolenaar mylist->assert_notequal([1, 2, 3]) 38425e42231SBram Moolenaar 38525e42231SBram Moolenaar< *assert_notmatch()* 386ed997adaSBram Moolenaarassert_notmatch({pattern}, {actual} [, {msg}]) 387ed997adaSBram Moolenaar The opposite of `assert_match()`: add an error message to 388ed997adaSBram Moolenaar |v:errors| when {pattern} matches {actual}. 389ed997adaSBram Moolenaar Also see |assert-return|. 390ed997adaSBram Moolenaar 39124278d24SBram Moolenaar Can also be used as a |method|: > 39224278d24SBram Moolenaar getFile()->assert_notmatch('bar.*') 39324278d24SBram Moolenaar 394e49fbff3SBram Moolenaar 395ed997adaSBram Moolenaarassert_report({msg}) *assert_report()* 396ed997adaSBram Moolenaar Report a test failure directly, using {msg}. 397ed997adaSBram Moolenaar Always returns one. 398ed997adaSBram Moolenaar 399e49fbff3SBram Moolenaar Can also be used as a |method|: > 400e49fbff3SBram Moolenaar GetMessage()->assert_report() 401e49fbff3SBram Moolenaar 402e49fbff3SBram Moolenaar 403ed997adaSBram Moolenaarassert_true({actual} [, {msg}]) *assert_true()* 404ed997adaSBram Moolenaar When {actual} is not true an error message is added to 405ed997adaSBram Moolenaar |v:errors|, like with |assert_equal()|. 406ed997adaSBram Moolenaar Also see |assert-return|. 407ed997adaSBram Moolenaar A value is TRUE when it is a non-zero number. When {actual} 408ed997adaSBram Moolenaar is not a number the assert fails. 409ed997adaSBram Moolenaar When {msg} is omitted an error in the form "Expected True but 410ed997adaSBram Moolenaar got {actual}" is produced. 411ed997adaSBram Moolenaar 41224278d24SBram Moolenaar Can also be used as a |method|: > 41324278d24SBram Moolenaar GetResult()->assert_true() 41424278d24SBram Moolenaar< 415ed997adaSBram Moolenaar 416ed997adaSBram Moolenaar vim:tw=78:ts=8:noet:ft=help:norl: 417