1*90df4b9dSBram Moolenaar*testing.txt* For Vim version 8.2. Last change: 2021 Jul 07 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() 81f1e7449dSYegappan Lakshmanan< 8218d46587SYegappan Lakshmanan *test_gui_drop_files()* 8318d46587SYegappan Lakshmanantest_gui_drop_files({list}, {row}, {col}, {mods}) 8418d46587SYegappan Lakshmanan Drop one or more files in {list} in the window at {row}, {col}. 85*90df4b9dSBram Moolenaar This function only works when the GUI is running and the 86*90df4b9dSBram Moolenaar |drag-n-drop| feature is present. 8718d46587SYegappan Lakshmanan 8818d46587SYegappan Lakshmanan The supported values for {mods} are: 8918d46587SYegappan Lakshmanan 0x4 Shift 9018d46587SYegappan Lakshmanan 0x8 Alt 9118d46587SYegappan Lakshmanan 0x10 Ctrl 9218d46587SYegappan Lakshmanan The files are added to the argument list and the first file in 9318d46587SYegappan Lakshmanan {list} is edited in the window. See |drag-n-drop| for more 9418d46587SYegappan Lakshmanan information. 9518d46587SYegappan Lakshmanan 96f1e7449dSYegappan Lakshmanan *test_gui_mouse_event()* 97f1e7449dSYegappan Lakshmanantest_gui_mouse_event({button}, {row}, {col}, {multiclick}, {modifiers}) 9818d46587SYegappan Lakshmanan Inject a mouse button click event. This function only works 9918d46587SYegappan Lakshmanan when the GUI is running. 100f1e7449dSYegappan Lakshmanan The supported values for {button} are: 101f1e7449dSYegappan Lakshmanan 0 right mouse button 102f1e7449dSYegappan Lakshmanan 1 middle mouse button 103f1e7449dSYegappan Lakshmanan 2 left mouse button 104f1e7449dSYegappan Lakshmanan 3 mouse button release 105f1e7449dSYegappan Lakshmanan 4 scroll wheel down 106f1e7449dSYegappan Lakshmanan 5 scroll wheel up 107f1e7449dSYegappan Lakshmanan 6 scroll wheel left 108f1e7449dSYegappan Lakshmanan 7 scroll wheel right 10918d46587SYegappan Lakshmanan {row} and {col} specify the location of the mouse click. The 11018d46587SYegappan Lakshmanan first row of the Vim window is 1 and the last row is 'lines'. 11118d46587SYegappan Lakshmanan The maximum value of {col} is 'columns'. 112f1e7449dSYegappan Lakshmanan To inject a multiclick event, set {multiclick} to 1. 113f1e7449dSYegappan Lakshmanan The supported values for {modifiers} are: 114f1e7449dSYegappan Lakshmanan 4 shift is pressed 115f1e7449dSYegappan Lakshmanan 8 alt is pressed 116f1e7449dSYegappan Lakshmanan 16 ctrl is pressed 117f1e7449dSYegappan Lakshmanan After injecting the mouse event you probably should call 118f1e7449dSYegappan Lakshmanan |feedkeys()| to have them processed, e.g.: > 119f1e7449dSYegappan Lakshmanan call feedkeys("y", 'Lx!') 120f1e7449dSYegappan Lakshmanan 121ed997adaSBram Moolenaar 122ed997adaSBram Moolenaartest_ignore_error({expr}) *test_ignore_error()* 123ed997adaSBram Moolenaar Ignore any error containing {expr}. A normal message is given 124ed997adaSBram Moolenaar instead. 125ed997adaSBram Moolenaar This is only meant to be used in tests, where catching the 126ed997adaSBram Moolenaar error with try/catch cannot be used (because it skips over 127ed997adaSBram Moolenaar following code). 128ed997adaSBram Moolenaar {expr} is used literally, not as a pattern. 129ed997adaSBram Moolenaar When the {expr} is the string "RESET" then the list of ignored 130ed997adaSBram Moolenaar errors is made empty. 131ed997adaSBram Moolenaar 132ce90e36fSBram Moolenaar Can also be used as a |method|: > 133ce90e36fSBram Moolenaar GetErrorText()->test_ignore_error() 134ed997adaSBram Moolenaar 135ed997adaSBram Moolenaartest_null_blob() *test_null_blob()* 136ed997adaSBram Moolenaar Return a |Blob| that is null. Only useful for testing. 137ed997adaSBram Moolenaar 138ed997adaSBram Moolenaar 139ed997adaSBram Moolenaartest_null_channel() *test_null_channel()* 140ed997adaSBram Moolenaar Return a |Channel| that is null. Only useful for testing. 141ed997adaSBram Moolenaar {only available when compiled with the +channel feature} 142ed997adaSBram Moolenaar 143ed997adaSBram Moolenaar 144ed997adaSBram Moolenaartest_null_dict() *test_null_dict()* 145ed997adaSBram Moolenaar Return a |Dict| that is null. Only useful for testing. 146ed997adaSBram Moolenaar 147ed997adaSBram Moolenaar 148e69f6d04SBram Moolenaartest_null_function() *test_null_function()* 149d1caa941SBram Moolenaar Return a |Funcref| that is null. Only useful for testing. 150e69f6d04SBram Moolenaar 151e69f6d04SBram Moolenaar 152ed997adaSBram Moolenaartest_null_job() *test_null_job()* 153ed997adaSBram Moolenaar Return a |Job| that is null. Only useful for testing. 154ed997adaSBram Moolenaar {only available when compiled with the +job feature} 155ed997adaSBram Moolenaar 156ed997adaSBram Moolenaar 157ed997adaSBram Moolenaartest_null_list() *test_null_list()* 158ed997adaSBram Moolenaar Return a |List| that is null. Only useful for testing. 159ed997adaSBram Moolenaar 160ed997adaSBram Moolenaar 161ed997adaSBram Moolenaartest_null_partial() *test_null_partial()* 162ed997adaSBram Moolenaar Return a |Partial| that is null. Only useful for testing. 163ed997adaSBram Moolenaar 164ed997adaSBram Moolenaar 165ed997adaSBram Moolenaartest_null_string() *test_null_string()* 166ed997adaSBram Moolenaar Return a |String| that is null. Only useful for testing. 167ed997adaSBram Moolenaar 168ed997adaSBram Moolenaar 1698ed04587SBram Moolenaartest_unknown() *test_unknown()* 1708ed04587SBram Moolenaar Return a value with unknown type. Only useful for testing. 1718ed04587SBram Moolenaar 1728ed04587SBram Moolenaartest_void() *test_void()* 1738ed04587SBram Moolenaar Return a value with void type. Only useful for testing. 1748ed04587SBram Moolenaar 1758ed04587SBram Moolenaar 176ed997adaSBram Moolenaartest_option_not_set({name}) *test_option_not_set()* 177ed997adaSBram Moolenaar Reset the flag that indicates option {name} was set. Thus it 178ed997adaSBram Moolenaar looks like it still has the default value. Use like this: > 179ed997adaSBram Moolenaar set ambiwidth=double 180ed997adaSBram Moolenaar call test_option_not_set('ambiwidth') 181ed997adaSBram Moolenaar< Now the 'ambiwidth' option behaves like it was never changed, 182ed997adaSBram Moolenaar even though the value is "double". 183ed997adaSBram Moolenaar Only to be used for testing! 184ed997adaSBram Moolenaar 185ce90e36fSBram Moolenaar Can also be used as a |method|: > 186ce90e36fSBram Moolenaar GetOptionName()->test_option_not_set() 187ce90e36fSBram Moolenaar 188ed997adaSBram Moolenaar 189ed997adaSBram Moolenaartest_override({name}, {val}) *test_override()* 190ed997adaSBram Moolenaar Overrides certain parts of Vim's internal processing to be able 191ed997adaSBram Moolenaar to run tests. Only to be used for testing Vim! 192ed997adaSBram Moolenaar The override is enabled when {val} is non-zero and removed 193ed997adaSBram Moolenaar when {val} is zero. 194ed997adaSBram Moolenaar Current supported values for name are: 195ed997adaSBram Moolenaar 196ed997adaSBram Moolenaar name effect when {val} is non-zero ~ 197ed997adaSBram Moolenaar redraw disable the redrawing() function 198ed997adaSBram Moolenaar redraw_flag ignore the RedrawingDisabled flag 199ed997adaSBram Moolenaar char_avail disable the char_avail() function 200ed997adaSBram Moolenaar starting reset the "starting" variable, see below 201ed997adaSBram Moolenaar nfa_fail makes the NFA regexp engine fail to force a 202ed997adaSBram Moolenaar fallback to the old engine 203ed997adaSBram Moolenaar no_query_mouse do not query the mouse position for "dec" 204ed997adaSBram Moolenaar terminals 205ed997adaSBram Moolenaar no_wait_return set the "no_wait_return" flag. Not restored 206ed997adaSBram Moolenaar with "ALL". 207b340baedSBram Moolenaar ui_delay time in msec to use in ui_delay(); overrules a 208b340baedSBram Moolenaar wait time of up to 3 seconds for messages 2090c0eddd3SBram Moolenaar term_props reset all terminal properties when the version 2100c0eddd3SBram Moolenaar string is detected 211c8cdf0f8SBram Moolenaar uptime overrules sysinfo.uptime 212ed997adaSBram Moolenaar ALL clear all overrides ({val} is not used) 213ed997adaSBram Moolenaar 214ed997adaSBram Moolenaar "starting" is to be used when a test should behave like 215ed997adaSBram Moolenaar startup was done. Since the tests are run by sourcing a 216ed997adaSBram Moolenaar script the "starting" variable is non-zero. This is usually a 217ed997adaSBram Moolenaar good thing (tests run faster), but sometimes changes behavior 218ed997adaSBram Moolenaar in a way that the test doesn't work properly. 219ed997adaSBram Moolenaar When using: > 220ed997adaSBram Moolenaar call test_override('starting', 1) 221ed997adaSBram Moolenaar< The value of "starting" is saved. It is restored by: > 222ed997adaSBram Moolenaar call test_override('starting', 0) 223ed997adaSBram Moolenaar 224ce90e36fSBram Moolenaar< Can also be used as a |method|: > 225ce90e36fSBram Moolenaar GetOverrideVal()-> test_override('starting') 226ed997adaSBram Moolenaar 227ed997adaSBram Moolenaartest_refcount({expr}) *test_refcount()* 228ed997adaSBram Moolenaar Return the reference count of {expr}. When {expr} is of a 229ed997adaSBram Moolenaar type that does not have a reference count, returns -1. Only 230ed997adaSBram Moolenaar to be used for testing. 231ed997adaSBram Moolenaar 232ce90e36fSBram Moolenaar Can also be used as a |method|: > 233ce90e36fSBram Moolenaar GetVarname()->test_refcount() 234ce90e36fSBram Moolenaar 235ed997adaSBram Moolenaar 236ed997adaSBram Moolenaartest_scrollbar({which}, {value}, {dragging}) *test_scrollbar()* 237ed997adaSBram Moolenaar Pretend using scrollbar {which} to move it to position 238ed997adaSBram Moolenaar {value}. {which} can be: 239ed997adaSBram Moolenaar left Left scrollbar of the current window 240ed997adaSBram Moolenaar right Right scrollbar of the current window 241ed997adaSBram Moolenaar hor Horizontal scrollbar 242ed997adaSBram Moolenaar 243ed997adaSBram Moolenaar For the vertical scrollbars {value} can be 1 to the 244ed997adaSBram Moolenaar line-count of the buffer. For the horizontal scrollbar the 245ed997adaSBram Moolenaar {value} can be between 1 and the maximum line length, assuming 246ed997adaSBram Moolenaar 'wrap' is not set. 247ed997adaSBram Moolenaar 248ed997adaSBram Moolenaar When {dragging} is non-zero it's like dragging the scrollbar, 249ed997adaSBram Moolenaar otherwise it's like clicking in the scrollbar. 250ed997adaSBram Moolenaar Only works when the {which} scrollbar actually exists, 251ed997adaSBram Moolenaar obviously only when using the GUI. 252ed997adaSBram Moolenaar 253ce90e36fSBram Moolenaar Can also be used as a |method|: > 254ce90e36fSBram Moolenaar GetValue()->test_scrollbar('right', 0) 255ed997adaSBram Moolenaar 256ed997adaSBram Moolenaartest_setmouse({row}, {col}) *test_setmouse()* 257ed997adaSBram Moolenaar Set the mouse position to be used for the next mouse action. 258ed997adaSBram Moolenaar {row} and {col} are one based. 259ed997adaSBram Moolenaar For example: > 260ed997adaSBram Moolenaar call test_setmouse(4, 20) 261ed997adaSBram Moolenaar call feedkeys("\<LeftMouse>", "xt") 262ed997adaSBram Moolenaar 263ed997adaSBram Moolenaartest_settime({expr}) *test_settime()* 264ed997adaSBram Moolenaar Set the time Vim uses internally. Currently only used for 265ed997adaSBram Moolenaar timestamps in the history, as they are used in viminfo, and 266ed997adaSBram Moolenaar for undo. 267ed997adaSBram Moolenaar Using a value of 1 makes Vim not sleep after a warning or 268ed997adaSBram Moolenaar error message. 269ed997adaSBram Moolenaar {expr} must evaluate to a number. When the value is zero the 270ed997adaSBram Moolenaar normal behavior is restored. 271ed997adaSBram Moolenaar 272ce90e36fSBram Moolenaar Can also be used as a |method|: > 273ce90e36fSBram Moolenaar GetTime()->test_settime() 274ce90e36fSBram Moolenaar 2754f645c54SBram Moolenaartest_srand_seed([seed]) *test_srand_seed()* 2764f645c54SBram Moolenaar When [seed] is given this sets the seed value used by 2774f645c54SBram Moolenaar `srand()`. When omitted the test seed is removed. 2784f645c54SBram Moolenaar 279ed997adaSBram Moolenaar============================================================================== 2805477506aSBram Moolenaar3. Assert functions *assert-functions-details* 281ed997adaSBram Moolenaar 282ed997adaSBram Moolenaar 283ed997adaSBram Moolenaarassert_beeps({cmd}) *assert_beeps()* 284ed997adaSBram Moolenaar Run {cmd} and add an error message to |v:errors| if it does 285ed997adaSBram Moolenaar NOT produce a beep or visual bell. 2865b8cabfeSBram Moolenaar Also see |assert_fails()|, |assert_nobeep()| and 2875b8cabfeSBram Moolenaar |assert-return|. 288ed997adaSBram Moolenaar 28924278d24SBram Moolenaar Can also be used as a |method|: > 29024278d24SBram Moolenaar GetCmd()->assert_beeps() 29124278d24SBram Moolenaar< 292ed997adaSBram Moolenaar *assert_equal()* 293ed997adaSBram Moolenaarassert_equal({expected}, {actual} [, {msg}]) 294ed997adaSBram Moolenaar When {expected} and {actual} are not equal an error message is 295ed997adaSBram Moolenaar added to |v:errors| and 1 is returned. Otherwise zero is 296ed997adaSBram Moolenaar returned |assert-return|. 297ed997adaSBram Moolenaar There is no automatic conversion, the String "4" is different 298ed997adaSBram Moolenaar from the Number 4. And the number 4 is different from the 299ed997adaSBram Moolenaar Float 4.0. The value of 'ignorecase' is not used here, case 300ed997adaSBram Moolenaar always matters. 301ed997adaSBram Moolenaar When {msg} is omitted an error in the form "Expected 302ed997adaSBram Moolenaar {expected} but got {actual}" is produced. 303ed997adaSBram Moolenaar Example: > 304ed997adaSBram Moolenaar assert_equal('foo', 'bar') 305ed997adaSBram Moolenaar< Will result in a string to be added to |v:errors|: 306ed997adaSBram Moolenaar test.vim line 12: Expected 'foo' but got 'bar' ~ 307ed997adaSBram Moolenaar 3087ff78465SBram Moolenaar Can also be used as a |method|, the base is passed as the 3097ff78465SBram Moolenaar second argument: > 31025e42231SBram Moolenaar mylist->assert_equal([1, 2, 3]) 31125e42231SBram Moolenaar 31225e42231SBram Moolenaar< *assert_equalfile()* 313fb517bacSBram Moolenaarassert_equalfile({fname-one}, {fname-two} [, {msg}]) 314ed997adaSBram Moolenaar When the files {fname-one} and {fname-two} do not contain 315ed997adaSBram Moolenaar exactly the same text an error message is added to |v:errors|. 316ed997adaSBram Moolenaar Also see |assert-return|. 317ed997adaSBram Moolenaar When {fname-one} or {fname-two} does not exist the error will 318ed997adaSBram Moolenaar mention that. 319ed997adaSBram Moolenaar Mainly useful with |terminal-diff|. 320ed997adaSBram Moolenaar 321e49fbff3SBram Moolenaar Can also be used as a |method|: > 322e49fbff3SBram Moolenaar GetLog()->assert_equalfile('expected.log') 323e49fbff3SBram Moolenaar 324ed997adaSBram Moolenaarassert_exception({error} [, {msg}]) *assert_exception()* 325ed997adaSBram Moolenaar When v:exception does not contain the string {error} an error 326ed997adaSBram Moolenaar message is added to |v:errors|. Also see |assert-return|. 327ed997adaSBram Moolenaar This can be used to assert that a command throws an exception. 328ed997adaSBram Moolenaar Using the error number, followed by a colon, avoids problems 329ed997adaSBram Moolenaar with translations: > 330ed997adaSBram Moolenaar try 331ed997adaSBram Moolenaar commandthatfails 332ed997adaSBram Moolenaar call assert_false(1, 'command should have failed') 333ed997adaSBram Moolenaar catch 334ed997adaSBram Moolenaar call assert_exception('E492:') 335ed997adaSBram Moolenaar endtry 3361d634542SBram Moolenaar< 3371d634542SBram Moolenaar *assert_fails()* 3389bd5d879SBram Moolenaarassert_fails({cmd} [, {error} [, {msg} [, {lnum} [, {context}]]]]) 339ed997adaSBram Moolenaar Run {cmd} and add an error message to |v:errors| if it does 3409b7bf9e9SBram Moolenaar NOT produce an error or when {error} is not found in the 3419b7bf9e9SBram Moolenaar error message. Also see |assert-return|. 3429b7bf9e9SBram Moolenaar 3439b7bf9e9SBram Moolenaar When {error} is a string it must be found literally in the 3449b7bf9e9SBram Moolenaar first reported error. Most often this will be the error code, 3459b7bf9e9SBram Moolenaar including the colon, e.g. "E123:". > 3469b7bf9e9SBram Moolenaar assert_fails('bad cmd', 'E987:') 3479b7bf9e9SBram Moolenaar< 3489b7bf9e9SBram Moolenaar When {error} is a |List| with one or two strings, these are 3499b7bf9e9SBram Moolenaar used as patterns. The first pattern is matched against the 3509b7bf9e9SBram Moolenaar first reported error: > 3519b7bf9e9SBram Moolenaar assert_fails('cmd', ['E987:.*expected bool']) 3529b7bf9e9SBram Moolenaar< The second pattern, if present, is matched against the last 3534072ba57SBram Moolenaar reported error. 3544072ba57SBram Moolenaar If there is only one error then both patterns must match. This 3554072ba57SBram Moolenaar can be used to check that there is only one error. 3564072ba57SBram Moolenaar To only match the last error use an empty string for the first 3574072ba57SBram Moolenaar error: > 3589b7bf9e9SBram Moolenaar assert_fails('cmd', ['', 'E987:']) 3599b7bf9e9SBram Moolenaar< 3601d634542SBram Moolenaar If {msg} is empty then it is not used. Do this to get the 3611d634542SBram Moolenaar default message when passing the {lnum} argument. 3621d634542SBram Moolenaar 3631d634542SBram Moolenaar When {lnum} is present and not negative, and the {error} 3641d634542SBram Moolenaar argument is present and matches, then this is compared with 3651d634542SBram Moolenaar the line number at which the error was reported. That can be 3661d634542SBram Moolenaar the line number in a function or in a script. 3671d634542SBram Moolenaar 3689bd5d879SBram Moolenaar When {context} is present it is used as a pattern and matched 3699bd5d879SBram Moolenaar against the context (script name or function name) where 3709bd5d879SBram Moolenaar {lnum} is located in. 3719bd5d879SBram Moolenaar 372ed997adaSBram Moolenaar Note that beeping is not considered an error, and some failing 373ed997adaSBram Moolenaar commands only beep. Use |assert_beeps()| for those. 374ed997adaSBram Moolenaar 37524278d24SBram Moolenaar Can also be used as a |method|: > 37624278d24SBram Moolenaar GetCmd()->assert_fails('E99:') 37724278d24SBram Moolenaar 378ed997adaSBram Moolenaarassert_false({actual} [, {msg}]) *assert_false()* 379ed997adaSBram Moolenaar When {actual} is not false an error message is added to 380ed997adaSBram Moolenaar |v:errors|, like with |assert_equal()|. 381ed997adaSBram Moolenaar Also see |assert-return|. 382ed997adaSBram Moolenaar A value is false when it is zero. When {actual} is not a 383ed997adaSBram Moolenaar number the assert fails. 384ed997adaSBram Moolenaar When {msg} is omitted an error in the form 385ed997adaSBram Moolenaar "Expected False but got {actual}" is produced. 386ed997adaSBram Moolenaar 38724278d24SBram Moolenaar Can also be used as a |method|: > 38824278d24SBram Moolenaar GetResult()->assert_false() 38924278d24SBram Moolenaar 390ed997adaSBram Moolenaarassert_inrange({lower}, {upper}, {actual} [, {msg}]) *assert_inrange()* 391ed997adaSBram Moolenaar This asserts number and |Float| values. When {actual} is lower 392ed997adaSBram Moolenaar than {lower} or higher than {upper} an error message is added 393ed997adaSBram Moolenaar to |v:errors|. Also see |assert-return|. 394ed997adaSBram Moolenaar When {msg} is omitted an error in the form 395ed997adaSBram Moolenaar "Expected range {lower} - {upper}, but got {actual}" is 396ed997adaSBram Moolenaar produced. 397ed997adaSBram Moolenaar 398ed997adaSBram Moolenaar *assert_match()* 399ed997adaSBram Moolenaarassert_match({pattern}, {actual} [, {msg}]) 400ed997adaSBram Moolenaar When {pattern} does not match {actual} an error message is 401ed997adaSBram Moolenaar added to |v:errors|. Also see |assert-return|. 402ed997adaSBram Moolenaar 403ed997adaSBram Moolenaar {pattern} is used as with |=~|: The matching is always done 404ed997adaSBram Moolenaar like 'magic' was set and 'cpoptions' is empty, no matter what 405ed997adaSBram Moolenaar the actual value of 'magic' or 'cpoptions' is. 406ed997adaSBram Moolenaar 407ed997adaSBram Moolenaar {actual} is used as a string, automatic conversion applies. 408ed997adaSBram Moolenaar Use "^" and "$" to match with the start and end of the text. 409ed997adaSBram Moolenaar Use both to match the whole text. 410ed997adaSBram Moolenaar 411ed997adaSBram Moolenaar When {msg} is omitted an error in the form 412ed997adaSBram Moolenaar "Pattern {pattern} does not match {actual}" is produced. 413ed997adaSBram Moolenaar Example: > 414ed997adaSBram Moolenaar assert_match('^f.*o$', 'foobar') 415ed997adaSBram Moolenaar< Will result in a string to be added to |v:errors|: 416ed997adaSBram Moolenaar test.vim line 12: Pattern '^f.*o$' does not match 'foobar' ~ 417ed997adaSBram Moolenaar 41824278d24SBram Moolenaar Can also be used as a |method|: > 41924278d24SBram Moolenaar getFile()->assert_match('foo.*') 42024278d24SBram Moolenaar< 4215b8cabfeSBram Moolenaarassert_nobeep({cmd}) *assert_nobeep()* 4225b8cabfeSBram Moolenaar Run {cmd} and add an error message to |v:errors| if it 4235b8cabfeSBram Moolenaar produces a beep or visual bell. 4245b8cabfeSBram Moolenaar Also see |assert_beeps()|. 4255b8cabfeSBram Moolenaar 4265b8cabfeSBram Moolenaar Can also be used as a |method|: > 4275b8cabfeSBram Moolenaar GetCmd()->assert_nobeep() 4285b8cabfeSBram Moolenaar< 429ed997adaSBram Moolenaar *assert_notequal()* 430ed997adaSBram Moolenaarassert_notequal({expected}, {actual} [, {msg}]) 431ed997adaSBram Moolenaar The opposite of `assert_equal()`: add an error message to 432ed997adaSBram Moolenaar |v:errors| when {expected} and {actual} are equal. 433ed997adaSBram Moolenaar Also see |assert-return|. 434ed997adaSBram Moolenaar 43525e42231SBram Moolenaar Can also be used as a |method|: > 43625e42231SBram Moolenaar mylist->assert_notequal([1, 2, 3]) 43725e42231SBram Moolenaar 43825e42231SBram Moolenaar< *assert_notmatch()* 439ed997adaSBram Moolenaarassert_notmatch({pattern}, {actual} [, {msg}]) 440ed997adaSBram Moolenaar The opposite of `assert_match()`: add an error message to 441ed997adaSBram Moolenaar |v:errors| when {pattern} matches {actual}. 442ed997adaSBram Moolenaar Also see |assert-return|. 443ed997adaSBram Moolenaar 44424278d24SBram Moolenaar Can also be used as a |method|: > 44524278d24SBram Moolenaar getFile()->assert_notmatch('bar.*') 44624278d24SBram Moolenaar 447e49fbff3SBram Moolenaar 448ed997adaSBram Moolenaarassert_report({msg}) *assert_report()* 449ed997adaSBram Moolenaar Report a test failure directly, using {msg}. 450ed997adaSBram Moolenaar Always returns one. 451ed997adaSBram Moolenaar 452e49fbff3SBram Moolenaar Can also be used as a |method|: > 453e49fbff3SBram Moolenaar GetMessage()->assert_report() 454e49fbff3SBram Moolenaar 455e49fbff3SBram Moolenaar 456ed997adaSBram Moolenaarassert_true({actual} [, {msg}]) *assert_true()* 457ed997adaSBram Moolenaar When {actual} is not true an error message is added to 458ed997adaSBram Moolenaar |v:errors|, like with |assert_equal()|. 459ed997adaSBram Moolenaar Also see |assert-return|. 460ed997adaSBram Moolenaar A value is TRUE when it is a non-zero number. When {actual} 461ed997adaSBram Moolenaar is not a number the assert fails. 462ed997adaSBram Moolenaar When {msg} is omitted an error in the form "Expected True but 463ed997adaSBram Moolenaar got {actual}" is produced. 464ed997adaSBram Moolenaar 46524278d24SBram Moolenaar Can also be used as a |method|: > 46624278d24SBram Moolenaar GetResult()->assert_true() 46724278d24SBram Moolenaar< 468ed997adaSBram Moolenaar 469ed997adaSBram Moolenaar vim:tw=78:ts=8:noet:ft=help:norl: 470