blob: 1252ce3081d549d9937102085fc5c1343599ded9 [file] [log] [blame]
Bram Moolenaareb490412022-06-28 13:44:46 +01001*testing.txt* For Vim version 9.0. Last change: 2022 May 16
Bram Moolenaared997ad2019-07-21 16:42:00 +02002
3
4 VIM REFERENCE MANUAL by Bram Moolenaar
5
6
7Testing Vim and Vim script *testing-support*
8
9Expression evaluation is explained in |eval.txt|. This file goes into details
10about writing tests in Vim script. This can be used for testing Vim itself
11and for testing plugins.
12
131. Testing Vim |testing|
Bram Moolenaar54775062019-07-31 21:07:14 +0200142. Test functions |test-functions-details|
153. Assert functions |assert-functions-details|
Bram Moolenaared997ad2019-07-21 16:42:00 +020016
17==============================================================================
181. Testing Vim *testing*
19
20Vim can be tested after building it, usually with "make test".
21The tests are located in the directory "src/testdir".
22
Bram Moolenaarb96a32e2020-08-13 18:59:55 +020023There are two types of tests added over time:
24 test20.in oldest, only for tiny and small builds
25 test_something.vim new style tests
26
Bram Moolenaared997ad2019-07-21 16:42:00 +020027 *new-style-testing*
Bram Moolenaarf7c4d832020-08-11 20:42:19 +020028New tests should be added as new style tests. The test scripts are named
29test_<feature>.vim (replace <feature> with the feature under test). These use
30functions such as |assert_equal()| to keep the test commands and the expected
31result in one place.
Bram Moolenaarb96a32e2020-08-13 18:59:55 +020032 *old-style-testing*
33These tests are used only for testing Vim without the |+eval| feature.
Bram Moolenaared997ad2019-07-21 16:42:00 +020034
35Find more information in the file src/testdir/README.txt.
36
37==============================================================================
Bram Moolenaar54775062019-07-31 21:07:14 +0200382. Test functions *test-functions-details*
Bram Moolenaared997ad2019-07-21 16:42:00 +020039
40test_alloc_fail({id}, {countdown}, {repeat}) *test_alloc_fail()*
41 This is for testing: If the memory allocation with {id} is
42 called, then decrement {countdown}, and when it reaches zero
43 let memory allocation fail {repeat} times. When {repeat} is
44 smaller than one it fails one time.
45
Bram Moolenaarce90e362019-09-08 18:58:44 +020046 Can also be used as a |method|: >
47 GetAllocId()->test_alloc_fail()
Bram Moolenaared997ad2019-07-21 16:42:00 +020048
Bram Moolenaar89a9c152021-08-29 21:55:35 +020049
Bram Moolenaared997ad2019-07-21 16:42:00 +020050test_autochdir() *test_autochdir()*
51 Set a flag to enable the effect of 'autochdir' before Vim
52 startup has finished.
53
54
55test_feedinput({string}) *test_feedinput()*
56 Characters in {string} are queued for processing as if they
57 were typed by the user. This uses a low level input buffer.
58 This function works only when with |+unix| or GUI is running.
59
Bram Moolenaarce90e362019-09-08 18:58:44 +020060 Can also be used as a |method|: >
61 GetText()->test_feedinput()
Bram Moolenaared997ad2019-07-21 16:42:00 +020062
Bram Moolenaar89a9c152021-08-29 21:55:35 +020063
Bram Moolenaared997ad2019-07-21 16:42:00 +020064test_garbagecollect_now() *test_garbagecollect_now()*
65 Like garbagecollect(), but executed right away. This must
66 only be called directly to avoid any structure to exist
67 internally, and |v:testing| must have been set before calling
Bram Moolenaara2baa732022-02-04 16:09:54 +000068 any function. *E1142*
69 This will not work when called from a :def function, because
70 variables on the stack will be freed.
Bram Moolenaared997ad2019-07-21 16:42:00 +020071
72
73test_garbagecollect_soon() *test_garbagecollect_soon()*
74 Set the flag to call the garbagecollector as if in the main
75 loop. Only to be used in tests.
76
77
78test_getvalue({name}) *test_getvalue()*
79 Get the value of an internal variable. These values for
80 {name} are supported:
81 need_fileinfo
82
Bram Moolenaarce90e362019-09-08 18:58:44 +020083 Can also be used as a |method|: >
84 GetName()->test_getvalue()
Yegappan Lakshmananf1e74492021-06-21 18:44:26 +020085<
Yegappan Lakshmanan06011e12022-01-30 12:37:29 +000086 *test_gui_event()*
87test_gui_event({event}, {args})
88 Generate a GUI {event} with arguments {args} for testing Vim
Yegappan Lakshmananec3637c2022-01-30 18:01:24 +000089 functionality. This function works only when the GUI is
90 running.
Bram Moolenaar22863042021-10-16 15:23:36 +010091
Yegappan Lakshmanan06011e12022-01-30 12:37:29 +000092 {event} is a String and the supported values are:
93 "dropfiles" drop one or more files in a window.
Bram Moolenaar8a3b8052022-06-26 12:21:15 +010094 "findrepl" search and replace text.
Yegappan Lakshmanan06011e12022-01-30 12:37:29 +000095 "mouse" mouse button click event.
Bram Moolenaar8a3b8052022-06-26 12:21:15 +010096 "scrollbar" move or drag the scrollbar.
Yegappan Lakshmanan06011e12022-01-30 12:37:29 +000097 "tabline" select a tab page by mouse click.
98 "tabmenu" select a tabline menu entry.
Yegappan Lakshmanan18d46582021-06-23 20:46:52 +020099
Yegappan Lakshmanan06011e12022-01-30 12:37:29 +0000100 {args} is a Dict and contains the arguments for the event.
101
102 "dropfiles":
103 Drop one or more files in a specified window. The supported
104 items in {args} are:
105 files: List of file names
106 row: window row number
107 col: window column number
108 modifiers: key modifiers. The supported values are:
109 0x4 Shift
110 0x8 Alt
111 0x10 Ctrl
112 The files are added to the |argument-list| and the first
113 file in {files} is edited in the window. See |drag-n-drop|
Yegappan Lakshmananec3637c2022-01-30 18:01:24 +0000114 for more information. This event works only when the
115 |drop_file| feature is present.
116
117 "findrepl":
Bram Moolenaara2baa732022-02-04 16:09:54 +0000118 {only available when the GUI has a find/replace dialog}
Yegappan Lakshmananec3637c2022-01-30 18:01:24 +0000119 Perform a search and replace of text. The supported items
120 in {args} are:
121 find_text: string to find.
Bram Moolenaar8a3b8052022-06-26 12:21:15 +0100122 repl_text: replacement string.
Yegappan Lakshmananec3637c2022-01-30 18:01:24 +0000123 flags: flags controlling the find/replace. Supported
124 values are:
125 1 search next string (find dialog)
126 2 search next string (replace dialog)
127 3 replace string once
128 4 replace all matches
129 8 match whole words only
130 16 match case
131 forward: set to 1 for forward search.
Yegappan Lakshmanan06011e12022-01-30 12:37:29 +0000132
133 "mouse":
Ernie Raelc4cb5442022-04-03 15:47:28 +0100134 Inject either a mouse button click, or a mouse move, event.
135 The supported items in {args} are:
Yegappan Lakshmanan06011e12022-01-30 12:37:29 +0000136 button: mouse button. The supported values are:
137 0 right mouse button
138 1 middle mouse button
139 2 left mouse button
140 3 mouse button release
141 4 scroll wheel down
142 5 scroll wheel up
143 6 scroll wheel left
144 7 scroll wheel right
145 row: mouse click row number. The first row of the
146 Vim window is 1 and the last row is 'lines'.
147 col: mouse click column number. The maximum value
148 of {col} is 'columns'.
149 multiclick: set to 1 to inject a multiclick mouse event.
150 modifiers: key modifiers. The supported values are:
151 4 shift is pressed
152 8 alt is pressed
153 16 ctrl is pressed
Ernie Raelc4cb5442022-04-03 15:47:28 +0100154 move: Optional; if used and TRUE then a mouse move
155 event can be generated.
156 Only {args} row: and col: are used and
Bram Moolenaar7add8d32022-05-16 15:27:46 +0100157 required; they are interpreted as pixels or
158 screen cells, depending on "cell".
Ernie Raelc4cb5442022-04-03 15:47:28 +0100159 Only results in an event when 'mousemoveevent'
160 is set or a popup uses mouse move events.
Bram Moolenaar7add8d32022-05-16 15:27:46 +0100161 cell: Optional: when present and TRUE then "move"
162 uses screen cells instead of pixel positions
Ernie Raelc4cb5442022-04-03 15:47:28 +0100163
164 "scrollbar":
165 Set or drag the left, right or horizontal scrollbar. Only
166 works when the scrollbar actually exists. The supported
167 items in {args} are:
168 which: scrollbar. The supported values are:
169 left Left scrollbar of the current window
170 right Right scrollbar of the current window
171 hor Horizontal scrollbar
172 value: amount to scroll. For the vertical scrollbars
173 the value can be 1 to the line-count of the
174 buffer. For the horizontal scrollbar the
175 value can be between 1 and the maximum line
176 length, assuming 'wrap' is not set.
177 dragging: 1 to drag the scrollbar and 0 to click in the
178 scrollbar.
Yegappan Lakshmanan06011e12022-01-30 12:37:29 +0000179
180 "tabline":
181 Inject a mouse click event on the tabline to select a
182 tabpage. The supported items in {args} are:
183 tabnr: tab page number
184
185 "tabmenu":
186 Inject an event to select a tabline menu entry. The
187 supported items in {args} are:
188 tabnr: tab page number
189 item: tab page menu item number. 1 for the first
190 menu item, 2 for the second item and so on.
191
192 After injecting the GUI events you probably should call
Yegappan Lakshmananf1e74492021-06-21 18:44:26 +0200193 |feedkeys()| to have them processed, e.g.: >
194 call feedkeys("y", 'Lx!')
Yegappan Lakshmanan06011e12022-01-30 12:37:29 +0000195<
Yegappan Lakshmananb0ad2d92022-01-27 13:16:59 +0000196 Returns TRUE if the event is successfully added, FALSE if
Yegappan Lakshmanan06011e12022-01-30 12:37:29 +0000197 there is a failure.
Yegappan Lakshmananb0ad2d92022-01-27 13:16:59 +0000198
Yegappan Lakshmanan06011e12022-01-30 12:37:29 +0000199 Can also be used as a |method|: >
200 GetEvent()->test_gui_event({args})
201<
Bram Moolenaared997ad2019-07-21 16:42:00 +0200202test_ignore_error({expr}) *test_ignore_error()*
203 Ignore any error containing {expr}. A normal message is given
204 instead.
205 This is only meant to be used in tests, where catching the
206 error with try/catch cannot be used (because it skips over
207 following code).
208 {expr} is used literally, not as a pattern.
209 When the {expr} is the string "RESET" then the list of ignored
210 errors is made empty.
211
Bram Moolenaarce90e362019-09-08 18:58:44 +0200212 Can also be used as a |method|: >
213 GetErrorText()->test_ignore_error()
Bram Moolenaared997ad2019-07-21 16:42:00 +0200214
Bram Moolenaar89a9c152021-08-29 21:55:35 +0200215
Bram Moolenaared997ad2019-07-21 16:42:00 +0200216test_null_blob() *test_null_blob()*
217 Return a |Blob| that is null. Only useful for testing.
218
219
220test_null_channel() *test_null_channel()*
221 Return a |Channel| that is null. Only useful for testing.
222 {only available when compiled with the +channel feature}
223
224
225test_null_dict() *test_null_dict()*
226 Return a |Dict| that is null. Only useful for testing.
227
228
Bram Moolenaare69f6d02020-04-01 22:11:01 +0200229test_null_function() *test_null_function()*
Bram Moolenaard1caa942020-04-10 22:10:56 +0200230 Return a |Funcref| that is null. Only useful for testing.
Bram Moolenaare69f6d02020-04-01 22:11:01 +0200231
232
Bram Moolenaared997ad2019-07-21 16:42:00 +0200233test_null_job() *test_null_job()*
234 Return a |Job| that is null. Only useful for testing.
235 {only available when compiled with the +job feature}
236
237
238test_null_list() *test_null_list()*
239 Return a |List| that is null. Only useful for testing.
240
241
242test_null_partial() *test_null_partial()*
243 Return a |Partial| that is null. Only useful for testing.
244
245
246test_null_string() *test_null_string()*
247 Return a |String| that is null. Only useful for testing.
248
249
250test_option_not_set({name}) *test_option_not_set()*
251 Reset the flag that indicates option {name} was set. Thus it
252 looks like it still has the default value. Use like this: >
253 set ambiwidth=double
254 call test_option_not_set('ambiwidth')
255< Now the 'ambiwidth' option behaves like it was never changed,
256 even though the value is "double".
257 Only to be used for testing!
258
Bram Moolenaarce90e362019-09-08 18:58:44 +0200259 Can also be used as a |method|: >
260 GetOptionName()->test_option_not_set()
261
Bram Moolenaared997ad2019-07-21 16:42:00 +0200262
263test_override({name}, {val}) *test_override()*
264 Overrides certain parts of Vim's internal processing to be able
265 to run tests. Only to be used for testing Vim!
266 The override is enabled when {val} is non-zero and removed
267 when {val} is zero.
Bram Moolenaar3e4fa3d2022-01-13 22:05:09 +0000268 Current supported values for {name} are:
Bram Moolenaared997ad2019-07-21 16:42:00 +0200269
Bram Moolenaar3e4fa3d2022-01-13 22:05:09 +0000270 {name} effect when {val} is non-zero ~
271 autoload `import autoload` will load the script right
272 away, not postponed until an item is used
Bram Moolenaared997ad2019-07-21 16:42:00 +0200273 char_avail disable the char_avail() function
Bram Moolenaared997ad2019-07-21 16:42:00 +0200274 nfa_fail makes the NFA regexp engine fail to force a
275 fallback to the old engine
276 no_query_mouse do not query the mouse position for "dec"
277 terminals
278 no_wait_return set the "no_wait_return" flag. Not restored
279 with "ALL".
Bram Moolenaar3e4fa3d2022-01-13 22:05:09 +0000280 redraw disable the redrawing() function
281 redraw_flag ignore the RedrawingDisabled flag
282 starting reset the "starting" variable, see below
Bram Moolenaar0c0eddd2020-06-13 15:47:25 +0200283 term_props reset all terminal properties when the version
284 string is detected
Bram Moolenaar3e4fa3d2022-01-13 22:05:09 +0000285 ui_delay time in msec to use in ui_delay(); overrules a
286 wait time of up to 3 seconds for messages
Bram Moolenaarc8cdf0f2021-03-13 13:28:13 +0100287 uptime overrules sysinfo.uptime
ichizokae1bd872022-01-20 14:57:29 +0000288 vterm_title setting the window title by a job running in a
289 terminal window
Bram Moolenaared997ad2019-07-21 16:42:00 +0200290 ALL clear all overrides ({val} is not used)
291
292 "starting" is to be used when a test should behave like
293 startup was done. Since the tests are run by sourcing a
294 script the "starting" variable is non-zero. This is usually a
295 good thing (tests run faster), but sometimes changes behavior
296 in a way that the test doesn't work properly.
297 When using: >
298 call test_override('starting', 1)
299< The value of "starting" is saved. It is restored by: >
300 call test_override('starting', 0)
301
Bram Moolenaarce90e362019-09-08 18:58:44 +0200302< Can also be used as a |method|: >
303 GetOverrideVal()-> test_override('starting')
Bram Moolenaared997ad2019-07-21 16:42:00 +0200304
Bram Moolenaar89a9c152021-08-29 21:55:35 +0200305
Bram Moolenaared997ad2019-07-21 16:42:00 +0200306test_refcount({expr}) *test_refcount()*
307 Return the reference count of {expr}. When {expr} is of a
308 type that does not have a reference count, returns -1. Only
309 to be used for testing.
310
Bram Moolenaarce90e362019-09-08 18:58:44 +0200311 Can also be used as a |method|: >
312 GetVarname()->test_refcount()
313
Bram Moolenaared997ad2019-07-21 16:42:00 +0200314
Bram Moolenaared997ad2019-07-21 16:42:00 +0200315test_setmouse({row}, {col}) *test_setmouse()*
316 Set the mouse position to be used for the next mouse action.
317 {row} and {col} are one based.
318 For example: >
319 call test_setmouse(4, 20)
320 call feedkeys("\<LeftMouse>", "xt")
321
Bram Moolenaar89a9c152021-08-29 21:55:35 +0200322
Bram Moolenaared997ad2019-07-21 16:42:00 +0200323test_settime({expr}) *test_settime()*
324 Set the time Vim uses internally. Currently only used for
325 timestamps in the history, as they are used in viminfo, and
326 for undo.
327 Using a value of 1 makes Vim not sleep after a warning or
328 error message.
329 {expr} must evaluate to a number. When the value is zero the
330 normal behavior is restored.
331
Bram Moolenaarce90e362019-09-08 18:58:44 +0200332 Can also be used as a |method|: >
333 GetTime()->test_settime()
334
Bram Moolenaar89a9c152021-08-29 21:55:35 +0200335
Bram Moolenaar4f645c52020-02-08 16:40:39 +0100336test_srand_seed([seed]) *test_srand_seed()*
337 When [seed] is given this sets the seed value used by
338 `srand()`. When omitted the test seed is removed.
339
Bram Moolenaar89a9c152021-08-29 21:55:35 +0200340
341test_unknown() *test_unknown()*
342 Return a value with unknown type. Only useful for testing.
343
344
345test_void() *test_void()*
346 Return a value with void type. Only useful for testing.
347
Bram Moolenaared997ad2019-07-21 16:42:00 +0200348==============================================================================
Bram Moolenaar54775062019-07-31 21:07:14 +02003493. Assert functions *assert-functions-details*
Bram Moolenaared997ad2019-07-21 16:42:00 +0200350
351
352assert_beeps({cmd}) *assert_beeps()*
353 Run {cmd} and add an error message to |v:errors| if it does
354 NOT produce a beep or visual bell.
Bram Moolenaar5b8cabf2021-04-02 18:55:57 +0200355 Also see |assert_fails()|, |assert_nobeep()| and
356 |assert-return|.
Bram Moolenaared997ad2019-07-21 16:42:00 +0200357
Bram Moolenaar24278d22019-08-16 21:49:22 +0200358 Can also be used as a |method|: >
359 GetCmd()->assert_beeps()
360<
Bram Moolenaared997ad2019-07-21 16:42:00 +0200361 *assert_equal()*
362assert_equal({expected}, {actual} [, {msg}])
363 When {expected} and {actual} are not equal an error message is
364 added to |v:errors| and 1 is returned. Otherwise zero is
365 returned |assert-return|.
366 There is no automatic conversion, the String "4" is different
367 from the Number 4. And the number 4 is different from the
368 Float 4.0. The value of 'ignorecase' is not used here, case
369 always matters.
370 When {msg} is omitted an error in the form "Expected
371 {expected} but got {actual}" is produced.
372 Example: >
373 assert_equal('foo', 'bar')
374< Will result in a string to be added to |v:errors|:
375 test.vim line 12: Expected 'foo' but got 'bar' ~
376
Bram Moolenaar7ff78462020-07-10 22:00:53 +0200377 Can also be used as a |method|, the base is passed as the
378 second argument: >
Bram Moolenaar25e42232019-08-04 15:04:10 +0200379 mylist->assert_equal([1, 2, 3])
380
Bram Moolenaar25e42232019-08-04 15:04:10 +0200381< *assert_equalfile()*
Bram Moolenaarfb517ba2020-06-03 19:55:35 +0200382assert_equalfile({fname-one}, {fname-two} [, {msg}])
Bram Moolenaared997ad2019-07-21 16:42:00 +0200383 When the files {fname-one} and {fname-two} do not contain
384 exactly the same text an error message is added to |v:errors|.
385 Also see |assert-return|.
386 When {fname-one} or {fname-two} does not exist the error will
387 mention that.
388 Mainly useful with |terminal-diff|.
389
Bram Moolenaare49fbff2019-08-21 22:50:07 +0200390 Can also be used as a |method|: >
391 GetLog()->assert_equalfile('expected.log')
392
Bram Moolenaared997ad2019-07-21 16:42:00 +0200393assert_exception({error} [, {msg}]) *assert_exception()*
394 When v:exception does not contain the string {error} an error
395 message is added to |v:errors|. Also see |assert-return|.
396 This can be used to assert that a command throws an exception.
397 Using the error number, followed by a colon, avoids problems
398 with translations: >
399 try
400 commandthatfails
401 call assert_false(1, 'command should have failed')
402 catch
403 call assert_exception('E492:')
404 endtry
Bram Moolenaar1d634542020-08-18 13:41:50 +0200405<
406 *assert_fails()*
Bram Moolenaar9bd5d872020-09-06 21:47:48 +0200407assert_fails({cmd} [, {error} [, {msg} [, {lnum} [, {context}]]]])
Bram Moolenaared997ad2019-07-21 16:42:00 +0200408 Run {cmd} and add an error message to |v:errors| if it does
Bram Moolenaar9b7bf9e2020-07-11 22:14:59 +0200409 NOT produce an error or when {error} is not found in the
410 error message. Also see |assert-return|.
Bram Moolenaar6f4754b2022-01-23 12:07:04 +0000411 *E856*
Bram Moolenaar9b7bf9e2020-07-11 22:14:59 +0200412 When {error} is a string it must be found literally in the
413 first reported error. Most often this will be the error code,
414 including the colon, e.g. "E123:". >
415 assert_fails('bad cmd', 'E987:')
416<
417 When {error} is a |List| with one or two strings, these are
418 used as patterns. The first pattern is matched against the
419 first reported error: >
420 assert_fails('cmd', ['E987:.*expected bool'])
421< The second pattern, if present, is matched against the last
Bram Moolenaar4072ba52020-12-23 13:56:35 +0100422 reported error.
423 If there is only one error then both patterns must match. This
424 can be used to check that there is only one error.
425 To only match the last error use an empty string for the first
426 error: >
Bram Moolenaar9b7bf9e2020-07-11 22:14:59 +0200427 assert_fails('cmd', ['', 'E987:'])
428<
Bram Moolenaar1d634542020-08-18 13:41:50 +0200429 If {msg} is empty then it is not used. Do this to get the
430 default message when passing the {lnum} argument.
Bram Moolenaarf10911e2022-01-29 22:20:48 +0000431 *E1115*
Bram Moolenaar1d634542020-08-18 13:41:50 +0200432 When {lnum} is present and not negative, and the {error}
433 argument is present and matches, then this is compared with
434 the line number at which the error was reported. That can be
435 the line number in a function or in a script.
Bram Moolenaarf10911e2022-01-29 22:20:48 +0000436 *E1116*
Bram Moolenaar9bd5d872020-09-06 21:47:48 +0200437 When {context} is present it is used as a pattern and matched
438 against the context (script name or function name) where
439 {lnum} is located in.
440
Bram Moolenaared997ad2019-07-21 16:42:00 +0200441 Note that beeping is not considered an error, and some failing
442 commands only beep. Use |assert_beeps()| for those.
443
Bram Moolenaar24278d22019-08-16 21:49:22 +0200444 Can also be used as a |method|: >
445 GetCmd()->assert_fails('E99:')
446
Bram Moolenaar1d634542020-08-18 13:41:50 +0200447assert_false({actual} [, {msg}]) *assert_false()*
Bram Moolenaared997ad2019-07-21 16:42:00 +0200448 When {actual} is not false an error message is added to
449 |v:errors|, like with |assert_equal()|.
450 Also see |assert-return|.
451 A value is false when it is zero. When {actual} is not a
452 number the assert fails.
453 When {msg} is omitted an error in the form
454 "Expected False but got {actual}" is produced.
455
Bram Moolenaar24278d22019-08-16 21:49:22 +0200456 Can also be used as a |method|: >
457 GetResult()->assert_false()
458
Bram Moolenaared997ad2019-07-21 16:42:00 +0200459assert_inrange({lower}, {upper}, {actual} [, {msg}]) *assert_inrange()*
460 This asserts number and |Float| values. When {actual} is lower
461 than {lower} or higher than {upper} an error message is added
462 to |v:errors|. Also see |assert-return|.
463 When {msg} is omitted an error in the form
464 "Expected range {lower} - {upper}, but got {actual}" is
465 produced.
466
467 *assert_match()*
468assert_match({pattern}, {actual} [, {msg}])
469 When {pattern} does not match {actual} an error message is
470 added to |v:errors|. Also see |assert-return|.
471
472 {pattern} is used as with |=~|: The matching is always done
473 like 'magic' was set and 'cpoptions' is empty, no matter what
474 the actual value of 'magic' or 'cpoptions' is.
475
476 {actual} is used as a string, automatic conversion applies.
477 Use "^" and "$" to match with the start and end of the text.
478 Use both to match the whole text.
479
480 When {msg} is omitted an error in the form
481 "Pattern {pattern} does not match {actual}" is produced.
482 Example: >
483 assert_match('^f.*o$', 'foobar')
484< Will result in a string to be added to |v:errors|:
485 test.vim line 12: Pattern '^f.*o$' does not match 'foobar' ~
486
Bram Moolenaar24278d22019-08-16 21:49:22 +0200487 Can also be used as a |method|: >
488 getFile()->assert_match('foo.*')
489<
Bram Moolenaar5b8cabf2021-04-02 18:55:57 +0200490assert_nobeep({cmd}) *assert_nobeep()*
491 Run {cmd} and add an error message to |v:errors| if it
492 produces a beep or visual bell.
493 Also see |assert_beeps()|.
494
495 Can also be used as a |method|: >
496 GetCmd()->assert_nobeep()
497<
Bram Moolenaared997ad2019-07-21 16:42:00 +0200498 *assert_notequal()*
499assert_notequal({expected}, {actual} [, {msg}])
500 The opposite of `assert_equal()`: add an error message to
501 |v:errors| when {expected} and {actual} are equal.
502 Also see |assert-return|.
503
Bram Moolenaar25e42232019-08-04 15:04:10 +0200504 Can also be used as a |method|: >
505 mylist->assert_notequal([1, 2, 3])
506
507< *assert_notmatch()*
Bram Moolenaared997ad2019-07-21 16:42:00 +0200508assert_notmatch({pattern}, {actual} [, {msg}])
509 The opposite of `assert_match()`: add an error message to
510 |v:errors| when {pattern} matches {actual}.
511 Also see |assert-return|.
512
Bram Moolenaar24278d22019-08-16 21:49:22 +0200513 Can also be used as a |method|: >
514 getFile()->assert_notmatch('bar.*')
515
Bram Moolenaare49fbff2019-08-21 22:50:07 +0200516
Bram Moolenaared997ad2019-07-21 16:42:00 +0200517assert_report({msg}) *assert_report()*
Bram Moolenaar6aa57292021-08-14 21:25:52 +0200518 Report a test failure directly, using String {msg}.
Bram Moolenaared997ad2019-07-21 16:42:00 +0200519 Always returns one.
520
Bram Moolenaare49fbff2019-08-21 22:50:07 +0200521 Can also be used as a |method|: >
522 GetMessage()->assert_report()
523
524
Bram Moolenaared997ad2019-07-21 16:42:00 +0200525assert_true({actual} [, {msg}]) *assert_true()*
526 When {actual} is not true an error message is added to
527 |v:errors|, like with |assert_equal()|.
528 Also see |assert-return|.
529 A value is TRUE when it is a non-zero number. When {actual}
530 is not a number the assert fails.
531 When {msg} is omitted an error in the form "Expected True but
532 got {actual}" is produced.
533
Bram Moolenaar24278d22019-08-16 21:49:22 +0200534 Can also be used as a |method|: >
535 GetResult()->assert_true()
536<
Bram Moolenaared997ad2019-07-21 16:42:00 +0200537
538 vim:tw=78:ts=8:noet:ft=help:norl: