blob: 6998a6edc28970c4ae1a3dd6bb702be94d1c3e13 [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 ~
Bram Moolenaarfa4873c2022-06-30 22:13:59 +0100271 alloc_lines make a copy of every buffer line into allocated
272 memory, so that memory access errors can be found
273 by valgrind
Bram Moolenaar3e4fa3d2022-01-13 22:05:09 +0000274 autoload `import autoload` will load the script right
275 away, not postponed until an item is used
Bram Moolenaared997ad2019-07-21 16:42:00 +0200276 char_avail disable the char_avail() function
Bram Moolenaared997ad2019-07-21 16:42:00 +0200277 nfa_fail makes the NFA regexp engine fail to force a
278 fallback to the old engine
279 no_query_mouse do not query the mouse position for "dec"
280 terminals
281 no_wait_return set the "no_wait_return" flag. Not restored
282 with "ALL".
Bram Moolenaar3e4fa3d2022-01-13 22:05:09 +0000283 redraw disable the redrawing() function
284 redraw_flag ignore the RedrawingDisabled flag
285 starting reset the "starting" variable, see below
Bram Moolenaar0c0eddd2020-06-13 15:47:25 +0200286 term_props reset all terminal properties when the version
287 string is detected
Bram Moolenaar3e4fa3d2022-01-13 22:05:09 +0000288 ui_delay time in msec to use in ui_delay(); overrules a
289 wait time of up to 3 seconds for messages
Bram Moolenaarc8cdf0f2021-03-13 13:28:13 +0100290 uptime overrules sysinfo.uptime
ichizokae1bd872022-01-20 14:57:29 +0000291 vterm_title setting the window title by a job running in a
292 terminal window
Bram Moolenaarfa4873c2022-06-30 22:13:59 +0100293 ALL clear all overrides, except alloc_lines ({val} is
294 not used)
Bram Moolenaared997ad2019-07-21 16:42:00 +0200295
296 "starting" is to be used when a test should behave like
297 startup was done. Since the tests are run by sourcing a
298 script the "starting" variable is non-zero. This is usually a
299 good thing (tests run faster), but sometimes changes behavior
300 in a way that the test doesn't work properly.
301 When using: >
302 call test_override('starting', 1)
303< The value of "starting" is saved. It is restored by: >
304 call test_override('starting', 0)
305
Bram Moolenaarce90e362019-09-08 18:58:44 +0200306< Can also be used as a |method|: >
307 GetOverrideVal()-> test_override('starting')
Bram Moolenaared997ad2019-07-21 16:42:00 +0200308
Bram Moolenaar89a9c152021-08-29 21:55:35 +0200309
Bram Moolenaared997ad2019-07-21 16:42:00 +0200310test_refcount({expr}) *test_refcount()*
311 Return the reference count of {expr}. When {expr} is of a
312 type that does not have a reference count, returns -1. Only
313 to be used for testing.
314
Bram Moolenaarce90e362019-09-08 18:58:44 +0200315 Can also be used as a |method|: >
316 GetVarname()->test_refcount()
317
Bram Moolenaared997ad2019-07-21 16:42:00 +0200318
Bram Moolenaared997ad2019-07-21 16:42:00 +0200319test_setmouse({row}, {col}) *test_setmouse()*
320 Set the mouse position to be used for the next mouse action.
321 {row} and {col} are one based.
322 For example: >
323 call test_setmouse(4, 20)
324 call feedkeys("\<LeftMouse>", "xt")
325
Bram Moolenaar89a9c152021-08-29 21:55:35 +0200326
Bram Moolenaared997ad2019-07-21 16:42:00 +0200327test_settime({expr}) *test_settime()*
328 Set the time Vim uses internally. Currently only used for
329 timestamps in the history, as they are used in viminfo, and
330 for undo.
331 Using a value of 1 makes Vim not sleep after a warning or
332 error message.
333 {expr} must evaluate to a number. When the value is zero the
334 normal behavior is restored.
335
Bram Moolenaarce90e362019-09-08 18:58:44 +0200336 Can also be used as a |method|: >
337 GetTime()->test_settime()
338
Bram Moolenaar89a9c152021-08-29 21:55:35 +0200339
Bram Moolenaar4f645c52020-02-08 16:40:39 +0100340test_srand_seed([seed]) *test_srand_seed()*
341 When [seed] is given this sets the seed value used by
342 `srand()`. When omitted the test seed is removed.
343
Bram Moolenaar89a9c152021-08-29 21:55:35 +0200344
345test_unknown() *test_unknown()*
346 Return a value with unknown type. Only useful for testing.
347
348
349test_void() *test_void()*
350 Return a value with void type. Only useful for testing.
351
Bram Moolenaared997ad2019-07-21 16:42:00 +0200352==============================================================================
Bram Moolenaar54775062019-07-31 21:07:14 +02003533. Assert functions *assert-functions-details*
Bram Moolenaared997ad2019-07-21 16:42:00 +0200354
355
356assert_beeps({cmd}) *assert_beeps()*
357 Run {cmd} and add an error message to |v:errors| if it does
358 NOT produce a beep or visual bell.
Bram Moolenaar5b8cabf2021-04-02 18:55:57 +0200359 Also see |assert_fails()|, |assert_nobeep()| and
360 |assert-return|.
Bram Moolenaared997ad2019-07-21 16:42:00 +0200361
Bram Moolenaar24278d22019-08-16 21:49:22 +0200362 Can also be used as a |method|: >
363 GetCmd()->assert_beeps()
364<
Bram Moolenaared997ad2019-07-21 16:42:00 +0200365 *assert_equal()*
366assert_equal({expected}, {actual} [, {msg}])
367 When {expected} and {actual} are not equal an error message is
368 added to |v:errors| and 1 is returned. Otherwise zero is
369 returned |assert-return|.
370 There is no automatic conversion, the String "4" is different
371 from the Number 4. And the number 4 is different from the
372 Float 4.0. The value of 'ignorecase' is not used here, case
373 always matters.
374 When {msg} is omitted an error in the form "Expected
375 {expected} but got {actual}" is produced.
376 Example: >
377 assert_equal('foo', 'bar')
378< Will result in a string to be added to |v:errors|:
379 test.vim line 12: Expected 'foo' but got 'bar' ~
380
Bram Moolenaar7ff78462020-07-10 22:00:53 +0200381 Can also be used as a |method|, the base is passed as the
382 second argument: >
Bram Moolenaar25e42232019-08-04 15:04:10 +0200383 mylist->assert_equal([1, 2, 3])
384
Bram Moolenaar25e42232019-08-04 15:04:10 +0200385< *assert_equalfile()*
Bram Moolenaarfb517ba2020-06-03 19:55:35 +0200386assert_equalfile({fname-one}, {fname-two} [, {msg}])
Bram Moolenaared997ad2019-07-21 16:42:00 +0200387 When the files {fname-one} and {fname-two} do not contain
388 exactly the same text an error message is added to |v:errors|.
389 Also see |assert-return|.
390 When {fname-one} or {fname-two} does not exist the error will
391 mention that.
392 Mainly useful with |terminal-diff|.
393
Bram Moolenaare49fbff2019-08-21 22:50:07 +0200394 Can also be used as a |method|: >
395 GetLog()->assert_equalfile('expected.log')
396
Bram Moolenaared997ad2019-07-21 16:42:00 +0200397assert_exception({error} [, {msg}]) *assert_exception()*
398 When v:exception does not contain the string {error} an error
399 message is added to |v:errors|. Also see |assert-return|.
400 This can be used to assert that a command throws an exception.
401 Using the error number, followed by a colon, avoids problems
402 with translations: >
403 try
404 commandthatfails
405 call assert_false(1, 'command should have failed')
406 catch
407 call assert_exception('E492:')
408 endtry
Bram Moolenaar1d634542020-08-18 13:41:50 +0200409<
410 *assert_fails()*
Bram Moolenaar9bd5d872020-09-06 21:47:48 +0200411assert_fails({cmd} [, {error} [, {msg} [, {lnum} [, {context}]]]])
Bram Moolenaared997ad2019-07-21 16:42:00 +0200412 Run {cmd} and add an error message to |v:errors| if it does
Bram Moolenaar9b7bf9e2020-07-11 22:14:59 +0200413 NOT produce an error or when {error} is not found in the
414 error message. Also see |assert-return|.
Bram Moolenaar6f4754b2022-01-23 12:07:04 +0000415 *E856*
Bram Moolenaar9b7bf9e2020-07-11 22:14:59 +0200416 When {error} is a string it must be found literally in the
417 first reported error. Most often this will be the error code,
418 including the colon, e.g. "E123:". >
419 assert_fails('bad cmd', 'E987:')
420<
421 When {error} is a |List| with one or two strings, these are
422 used as patterns. The first pattern is matched against the
423 first reported error: >
424 assert_fails('cmd', ['E987:.*expected bool'])
425< The second pattern, if present, is matched against the last
Bram Moolenaar4072ba52020-12-23 13:56:35 +0100426 reported error.
427 If there is only one error then both patterns must match. This
428 can be used to check that there is only one error.
429 To only match the last error use an empty string for the first
430 error: >
Bram Moolenaar9b7bf9e2020-07-11 22:14:59 +0200431 assert_fails('cmd', ['', 'E987:'])
432<
Bram Moolenaar1d634542020-08-18 13:41:50 +0200433 If {msg} is empty then it is not used. Do this to get the
434 default message when passing the {lnum} argument.
Bram Moolenaarf10911e2022-01-29 22:20:48 +0000435 *E1115*
Bram Moolenaar1d634542020-08-18 13:41:50 +0200436 When {lnum} is present and not negative, and the {error}
437 argument is present and matches, then this is compared with
438 the line number at which the error was reported. That can be
439 the line number in a function or in a script.
Bram Moolenaarf10911e2022-01-29 22:20:48 +0000440 *E1116*
Bram Moolenaar9bd5d872020-09-06 21:47:48 +0200441 When {context} is present it is used as a pattern and matched
442 against the context (script name or function name) where
443 {lnum} is located in.
444
Bram Moolenaared997ad2019-07-21 16:42:00 +0200445 Note that beeping is not considered an error, and some failing
446 commands only beep. Use |assert_beeps()| for those.
447
Bram Moolenaar24278d22019-08-16 21:49:22 +0200448 Can also be used as a |method|: >
449 GetCmd()->assert_fails('E99:')
450
Bram Moolenaar1d634542020-08-18 13:41:50 +0200451assert_false({actual} [, {msg}]) *assert_false()*
Bram Moolenaared997ad2019-07-21 16:42:00 +0200452 When {actual} is not false an error message is added to
453 |v:errors|, like with |assert_equal()|.
454 Also see |assert-return|.
455 A value is false when it is zero. When {actual} is not a
456 number the assert fails.
457 When {msg} is omitted an error in the form
458 "Expected False but got {actual}" is produced.
459
Bram Moolenaar24278d22019-08-16 21:49:22 +0200460 Can also be used as a |method|: >
461 GetResult()->assert_false()
462
Bram Moolenaared997ad2019-07-21 16:42:00 +0200463assert_inrange({lower}, {upper}, {actual} [, {msg}]) *assert_inrange()*
464 This asserts number and |Float| values. When {actual} is lower
465 than {lower} or higher than {upper} an error message is added
466 to |v:errors|. Also see |assert-return|.
467 When {msg} is omitted an error in the form
468 "Expected range {lower} - {upper}, but got {actual}" is
469 produced.
470
471 *assert_match()*
472assert_match({pattern}, {actual} [, {msg}])
473 When {pattern} does not match {actual} an error message is
474 added to |v:errors|. Also see |assert-return|.
475
476 {pattern} is used as with |=~|: The matching is always done
477 like 'magic' was set and 'cpoptions' is empty, no matter what
478 the actual value of 'magic' or 'cpoptions' is.
479
480 {actual} is used as a string, automatic conversion applies.
481 Use "^" and "$" to match with the start and end of the text.
482 Use both to match the whole text.
483
484 When {msg} is omitted an error in the form
485 "Pattern {pattern} does not match {actual}" is produced.
486 Example: >
487 assert_match('^f.*o$', 'foobar')
488< Will result in a string to be added to |v:errors|:
489 test.vim line 12: Pattern '^f.*o$' does not match 'foobar' ~
490
Bram Moolenaar24278d22019-08-16 21:49:22 +0200491 Can also be used as a |method|: >
492 getFile()->assert_match('foo.*')
493<
Bram Moolenaar5b8cabf2021-04-02 18:55:57 +0200494assert_nobeep({cmd}) *assert_nobeep()*
495 Run {cmd} and add an error message to |v:errors| if it
496 produces a beep or visual bell.
497 Also see |assert_beeps()|.
498
499 Can also be used as a |method|: >
500 GetCmd()->assert_nobeep()
501<
Bram Moolenaared997ad2019-07-21 16:42:00 +0200502 *assert_notequal()*
503assert_notequal({expected}, {actual} [, {msg}])
504 The opposite of `assert_equal()`: add an error message to
505 |v:errors| when {expected} and {actual} are equal.
506 Also see |assert-return|.
507
Bram Moolenaar25e42232019-08-04 15:04:10 +0200508 Can also be used as a |method|: >
509 mylist->assert_notequal([1, 2, 3])
510
511< *assert_notmatch()*
Bram Moolenaared997ad2019-07-21 16:42:00 +0200512assert_notmatch({pattern}, {actual} [, {msg}])
513 The opposite of `assert_match()`: add an error message to
514 |v:errors| when {pattern} matches {actual}.
515 Also see |assert-return|.
516
Bram Moolenaar24278d22019-08-16 21:49:22 +0200517 Can also be used as a |method|: >
518 getFile()->assert_notmatch('bar.*')
519
Bram Moolenaare49fbff2019-08-21 22:50:07 +0200520
Bram Moolenaared997ad2019-07-21 16:42:00 +0200521assert_report({msg}) *assert_report()*
Bram Moolenaar6aa57292021-08-14 21:25:52 +0200522 Report a test failure directly, using String {msg}.
Bram Moolenaared997ad2019-07-21 16:42:00 +0200523 Always returns one.
524
Bram Moolenaare49fbff2019-08-21 22:50:07 +0200525 Can also be used as a |method|: >
526 GetMessage()->assert_report()
527
528
Bram Moolenaared997ad2019-07-21 16:42:00 +0200529assert_true({actual} [, {msg}]) *assert_true()*
530 When {actual} is not true an error message is added to
531 |v:errors|, like with |assert_equal()|.
532 Also see |assert-return|.
533 A value is TRUE when it is a non-zero number. When {actual}
534 is not a number the assert fails.
535 When {msg} is omitted an error in the form "Expected True but
536 got {actual}" is produced.
537
Bram Moolenaar24278d22019-08-16 21:49:22 +0200538 Can also be used as a |method|: >
539 GetResult()->assert_true()
540<
Bram Moolenaared997ad2019-07-21 16:42:00 +0200541
542 vim:tw=78:ts=8:noet:ft=help:norl: