blob: f2f04a2aecea49c9e8b68cf69a2a1211a1742cb3 [file] [log] [blame]
Bram Moolenaarcbaff5e2022-04-08 17:45:08 +01001*testing.txt* For Vim version 8.2. Last change: 2022 Apr 03
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.
Yegappan Lakshmananec3637c2022-01-30 18:01:24 +000094 "findrepl" search and replace text
Yegappan Lakshmanan06011e12022-01-30 12:37:29 +000095 "mouse" mouse button click event.
Bram Moolenaara2baa732022-02-04 16:09:54 +000096 "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.
122 repl_text: replacement string
123 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
157 required; they are interpreted as pixels.
158 Only results in an event when 'mousemoveevent'
159 is set or a popup uses mouse move events.
160
161 "scrollbar":
162 Set or drag the left, right or horizontal scrollbar. Only
163 works when the scrollbar actually exists. The supported
164 items in {args} are:
165 which: scrollbar. The supported values are:
166 left Left scrollbar of the current window
167 right Right scrollbar of the current window
168 hor Horizontal scrollbar
169 value: amount to scroll. For the vertical scrollbars
170 the value can be 1 to the line-count of the
171 buffer. For the horizontal scrollbar the
172 value can be between 1 and the maximum line
173 length, assuming 'wrap' is not set.
174 dragging: 1 to drag the scrollbar and 0 to click in the
175 scrollbar.
Yegappan Lakshmanan06011e12022-01-30 12:37:29 +0000176
177 "tabline":
178 Inject a mouse click event on the tabline to select a
179 tabpage. The supported items in {args} are:
180 tabnr: tab page number
181
182 "tabmenu":
183 Inject an event to select a tabline menu entry. The
184 supported items in {args} are:
185 tabnr: tab page number
186 item: tab page menu item number. 1 for the first
187 menu item, 2 for the second item and so on.
188
189 After injecting the GUI events you probably should call
Yegappan Lakshmananf1e74492021-06-21 18:44:26 +0200190 |feedkeys()| to have them processed, e.g.: >
191 call feedkeys("y", 'Lx!')
Yegappan Lakshmanan06011e12022-01-30 12:37:29 +0000192<
Yegappan Lakshmananb0ad2d92022-01-27 13:16:59 +0000193 Returns TRUE if the event is successfully added, FALSE if
Yegappan Lakshmanan06011e12022-01-30 12:37:29 +0000194 there is a failure.
Yegappan Lakshmananb0ad2d92022-01-27 13:16:59 +0000195
Yegappan Lakshmanan06011e12022-01-30 12:37:29 +0000196 Can also be used as a |method|: >
197 GetEvent()->test_gui_event({args})
198<
Bram Moolenaared997ad2019-07-21 16:42:00 +0200199test_ignore_error({expr}) *test_ignore_error()*
200 Ignore any error containing {expr}. A normal message is given
201 instead.
202 This is only meant to be used in tests, where catching the
203 error with try/catch cannot be used (because it skips over
204 following code).
205 {expr} is used literally, not as a pattern.
206 When the {expr} is the string "RESET" then the list of ignored
207 errors is made empty.
208
Bram Moolenaarce90e362019-09-08 18:58:44 +0200209 Can also be used as a |method|: >
210 GetErrorText()->test_ignore_error()
Bram Moolenaared997ad2019-07-21 16:42:00 +0200211
Bram Moolenaar89a9c152021-08-29 21:55:35 +0200212
Bram Moolenaared997ad2019-07-21 16:42:00 +0200213test_null_blob() *test_null_blob()*
214 Return a |Blob| that is null. Only useful for testing.
215
216
217test_null_channel() *test_null_channel()*
218 Return a |Channel| that is null. Only useful for testing.
219 {only available when compiled with the +channel feature}
220
221
222test_null_dict() *test_null_dict()*
223 Return a |Dict| that is null. Only useful for testing.
224
225
Bram Moolenaare69f6d02020-04-01 22:11:01 +0200226test_null_function() *test_null_function()*
Bram Moolenaard1caa942020-04-10 22:10:56 +0200227 Return a |Funcref| that is null. Only useful for testing.
Bram Moolenaare69f6d02020-04-01 22:11:01 +0200228
229
Bram Moolenaared997ad2019-07-21 16:42:00 +0200230test_null_job() *test_null_job()*
231 Return a |Job| that is null. Only useful for testing.
232 {only available when compiled with the +job feature}
233
234
235test_null_list() *test_null_list()*
236 Return a |List| that is null. Only useful for testing.
237
238
239test_null_partial() *test_null_partial()*
240 Return a |Partial| that is null. Only useful for testing.
241
242
243test_null_string() *test_null_string()*
244 Return a |String| that is null. Only useful for testing.
245
246
247test_option_not_set({name}) *test_option_not_set()*
248 Reset the flag that indicates option {name} was set. Thus it
249 looks like it still has the default value. Use like this: >
250 set ambiwidth=double
251 call test_option_not_set('ambiwidth')
252< Now the 'ambiwidth' option behaves like it was never changed,
253 even though the value is "double".
254 Only to be used for testing!
255
Bram Moolenaarce90e362019-09-08 18:58:44 +0200256 Can also be used as a |method|: >
257 GetOptionName()->test_option_not_set()
258
Bram Moolenaared997ad2019-07-21 16:42:00 +0200259
260test_override({name}, {val}) *test_override()*
261 Overrides certain parts of Vim's internal processing to be able
262 to run tests. Only to be used for testing Vim!
263 The override is enabled when {val} is non-zero and removed
264 when {val} is zero.
Bram Moolenaar3e4fa3d2022-01-13 22:05:09 +0000265 Current supported values for {name} are:
Bram Moolenaared997ad2019-07-21 16:42:00 +0200266
Bram Moolenaar3e4fa3d2022-01-13 22:05:09 +0000267 {name} effect when {val} is non-zero ~
268 autoload `import autoload` will load the script right
269 away, not postponed until an item is used
Bram Moolenaared997ad2019-07-21 16:42:00 +0200270 char_avail disable the char_avail() function
Bram Moolenaared997ad2019-07-21 16:42:00 +0200271 nfa_fail makes the NFA regexp engine fail to force a
272 fallback to the old engine
273 no_query_mouse do not query the mouse position for "dec"
274 terminals
275 no_wait_return set the "no_wait_return" flag. Not restored
276 with "ALL".
Bram Moolenaar3e4fa3d2022-01-13 22:05:09 +0000277 redraw disable the redrawing() function
278 redraw_flag ignore the RedrawingDisabled flag
279 starting reset the "starting" variable, see below
Bram Moolenaar0c0eddd2020-06-13 15:47:25 +0200280 term_props reset all terminal properties when the version
281 string is detected
Bram Moolenaar3e4fa3d2022-01-13 22:05:09 +0000282 ui_delay time in msec to use in ui_delay(); overrules a
283 wait time of up to 3 seconds for messages
Bram Moolenaarc8cdf0f2021-03-13 13:28:13 +0100284 uptime overrules sysinfo.uptime
ichizokae1bd872022-01-20 14:57:29 +0000285 vterm_title setting the window title by a job running in a
286 terminal window
Bram Moolenaared997ad2019-07-21 16:42:00 +0200287 ALL clear all overrides ({val} is not used)
288
289 "starting" is to be used when a test should behave like
290 startup was done. Since the tests are run by sourcing a
291 script the "starting" variable is non-zero. This is usually a
292 good thing (tests run faster), but sometimes changes behavior
293 in a way that the test doesn't work properly.
294 When using: >
295 call test_override('starting', 1)
296< The value of "starting" is saved. It is restored by: >
297 call test_override('starting', 0)
298
Bram Moolenaarce90e362019-09-08 18:58:44 +0200299< Can also be used as a |method|: >
300 GetOverrideVal()-> test_override('starting')
Bram Moolenaared997ad2019-07-21 16:42:00 +0200301
Bram Moolenaar89a9c152021-08-29 21:55:35 +0200302
Bram Moolenaared997ad2019-07-21 16:42:00 +0200303test_refcount({expr}) *test_refcount()*
304 Return the reference count of {expr}. When {expr} is of a
305 type that does not have a reference count, returns -1. Only
306 to be used for testing.
307
Bram Moolenaarce90e362019-09-08 18:58:44 +0200308 Can also be used as a |method|: >
309 GetVarname()->test_refcount()
310
Bram Moolenaared997ad2019-07-21 16:42:00 +0200311
Bram Moolenaared997ad2019-07-21 16:42:00 +0200312test_setmouse({row}, {col}) *test_setmouse()*
313 Set the mouse position to be used for the next mouse action.
314 {row} and {col} are one based.
315 For example: >
316 call test_setmouse(4, 20)
317 call feedkeys("\<LeftMouse>", "xt")
318
Bram Moolenaar89a9c152021-08-29 21:55:35 +0200319
Bram Moolenaared997ad2019-07-21 16:42:00 +0200320test_settime({expr}) *test_settime()*
321 Set the time Vim uses internally. Currently only used for
322 timestamps in the history, as they are used in viminfo, and
323 for undo.
324 Using a value of 1 makes Vim not sleep after a warning or
325 error message.
326 {expr} must evaluate to a number. When the value is zero the
327 normal behavior is restored.
328
Bram Moolenaarce90e362019-09-08 18:58:44 +0200329 Can also be used as a |method|: >
330 GetTime()->test_settime()
331
Bram Moolenaar89a9c152021-08-29 21:55:35 +0200332
Bram Moolenaar4f645c52020-02-08 16:40:39 +0100333test_srand_seed([seed]) *test_srand_seed()*
334 When [seed] is given this sets the seed value used by
335 `srand()`. When omitted the test seed is removed.
336
Bram Moolenaar89a9c152021-08-29 21:55:35 +0200337
338test_unknown() *test_unknown()*
339 Return a value with unknown type. Only useful for testing.
340
341
342test_void() *test_void()*
343 Return a value with void type. Only useful for testing.
344
Bram Moolenaared997ad2019-07-21 16:42:00 +0200345==============================================================================
Bram Moolenaar54775062019-07-31 21:07:14 +02003463. Assert functions *assert-functions-details*
Bram Moolenaared997ad2019-07-21 16:42:00 +0200347
348
349assert_beeps({cmd}) *assert_beeps()*
350 Run {cmd} and add an error message to |v:errors| if it does
351 NOT produce a beep or visual bell.
Bram Moolenaar5b8cabf2021-04-02 18:55:57 +0200352 Also see |assert_fails()|, |assert_nobeep()| and
353 |assert-return|.
Bram Moolenaared997ad2019-07-21 16:42:00 +0200354
Bram Moolenaar24278d22019-08-16 21:49:22 +0200355 Can also be used as a |method|: >
356 GetCmd()->assert_beeps()
357<
Bram Moolenaared997ad2019-07-21 16:42:00 +0200358 *assert_equal()*
359assert_equal({expected}, {actual} [, {msg}])
360 When {expected} and {actual} are not equal an error message is
361 added to |v:errors| and 1 is returned. Otherwise zero is
362 returned |assert-return|.
363 There is no automatic conversion, the String "4" is different
364 from the Number 4. And the number 4 is different from the
365 Float 4.0. The value of 'ignorecase' is not used here, case
366 always matters.
367 When {msg} is omitted an error in the form "Expected
368 {expected} but got {actual}" is produced.
369 Example: >
370 assert_equal('foo', 'bar')
371< Will result in a string to be added to |v:errors|:
372 test.vim line 12: Expected 'foo' but got 'bar' ~
373
Bram Moolenaar7ff78462020-07-10 22:00:53 +0200374 Can also be used as a |method|, the base is passed as the
375 second argument: >
Bram Moolenaar25e42232019-08-04 15:04:10 +0200376 mylist->assert_equal([1, 2, 3])
377
Bram Moolenaar25e42232019-08-04 15:04:10 +0200378< *assert_equalfile()*
Bram Moolenaarfb517ba2020-06-03 19:55:35 +0200379assert_equalfile({fname-one}, {fname-two} [, {msg}])
Bram Moolenaared997ad2019-07-21 16:42:00 +0200380 When the files {fname-one} and {fname-two} do not contain
381 exactly the same text an error message is added to |v:errors|.
382 Also see |assert-return|.
383 When {fname-one} or {fname-two} does not exist the error will
384 mention that.
385 Mainly useful with |terminal-diff|.
386
Bram Moolenaare49fbff2019-08-21 22:50:07 +0200387 Can also be used as a |method|: >
388 GetLog()->assert_equalfile('expected.log')
389
Bram Moolenaared997ad2019-07-21 16:42:00 +0200390assert_exception({error} [, {msg}]) *assert_exception()*
391 When v:exception does not contain the string {error} an error
392 message is added to |v:errors|. Also see |assert-return|.
393 This can be used to assert that a command throws an exception.
394 Using the error number, followed by a colon, avoids problems
395 with translations: >
396 try
397 commandthatfails
398 call assert_false(1, 'command should have failed')
399 catch
400 call assert_exception('E492:')
401 endtry
Bram Moolenaar1d634542020-08-18 13:41:50 +0200402<
403 *assert_fails()*
Bram Moolenaar9bd5d872020-09-06 21:47:48 +0200404assert_fails({cmd} [, {error} [, {msg} [, {lnum} [, {context}]]]])
Bram Moolenaared997ad2019-07-21 16:42:00 +0200405 Run {cmd} and add an error message to |v:errors| if it does
Bram Moolenaar9b7bf9e2020-07-11 22:14:59 +0200406 NOT produce an error or when {error} is not found in the
407 error message. Also see |assert-return|.
Bram Moolenaar6f4754b2022-01-23 12:07:04 +0000408 *E856*
Bram Moolenaar9b7bf9e2020-07-11 22:14:59 +0200409 When {error} is a string it must be found literally in the
410 first reported error. Most often this will be the error code,
411 including the colon, e.g. "E123:". >
412 assert_fails('bad cmd', 'E987:')
413<
414 When {error} is a |List| with one or two strings, these are
415 used as patterns. The first pattern is matched against the
416 first reported error: >
417 assert_fails('cmd', ['E987:.*expected bool'])
418< The second pattern, if present, is matched against the last
Bram Moolenaar4072ba52020-12-23 13:56:35 +0100419 reported error.
420 If there is only one error then both patterns must match. This
421 can be used to check that there is only one error.
422 To only match the last error use an empty string for the first
423 error: >
Bram Moolenaar9b7bf9e2020-07-11 22:14:59 +0200424 assert_fails('cmd', ['', 'E987:'])
425<
Bram Moolenaar1d634542020-08-18 13:41:50 +0200426 If {msg} is empty then it is not used. Do this to get the
427 default message when passing the {lnum} argument.
Bram Moolenaarf10911e2022-01-29 22:20:48 +0000428 *E1115*
Bram Moolenaar1d634542020-08-18 13:41:50 +0200429 When {lnum} is present and not negative, and the {error}
430 argument is present and matches, then this is compared with
431 the line number at which the error was reported. That can be
432 the line number in a function or in a script.
Bram Moolenaarf10911e2022-01-29 22:20:48 +0000433 *E1116*
Bram Moolenaar9bd5d872020-09-06 21:47:48 +0200434 When {context} is present it is used as a pattern and matched
435 against the context (script name or function name) where
436 {lnum} is located in.
437
Bram Moolenaared997ad2019-07-21 16:42:00 +0200438 Note that beeping is not considered an error, and some failing
439 commands only beep. Use |assert_beeps()| for those.
440
Bram Moolenaar24278d22019-08-16 21:49:22 +0200441 Can also be used as a |method|: >
442 GetCmd()->assert_fails('E99:')
443
Bram Moolenaar1d634542020-08-18 13:41:50 +0200444assert_false({actual} [, {msg}]) *assert_false()*
Bram Moolenaared997ad2019-07-21 16:42:00 +0200445 When {actual} is not false an error message is added to
446 |v:errors|, like with |assert_equal()|.
447 Also see |assert-return|.
448 A value is false when it is zero. When {actual} is not a
449 number the assert fails.
450 When {msg} is omitted an error in the form
451 "Expected False but got {actual}" is produced.
452
Bram Moolenaar24278d22019-08-16 21:49:22 +0200453 Can also be used as a |method|: >
454 GetResult()->assert_false()
455
Bram Moolenaared997ad2019-07-21 16:42:00 +0200456assert_inrange({lower}, {upper}, {actual} [, {msg}]) *assert_inrange()*
457 This asserts number and |Float| values. When {actual} is lower
458 than {lower} or higher than {upper} an error message is added
459 to |v:errors|. Also see |assert-return|.
460 When {msg} is omitted an error in the form
461 "Expected range {lower} - {upper}, but got {actual}" is
462 produced.
463
464 *assert_match()*
465assert_match({pattern}, {actual} [, {msg}])
466 When {pattern} does not match {actual} an error message is
467 added to |v:errors|. Also see |assert-return|.
468
469 {pattern} is used as with |=~|: The matching is always done
470 like 'magic' was set and 'cpoptions' is empty, no matter what
471 the actual value of 'magic' or 'cpoptions' is.
472
473 {actual} is used as a string, automatic conversion applies.
474 Use "^" and "$" to match with the start and end of the text.
475 Use both to match the whole text.
476
477 When {msg} is omitted an error in the form
478 "Pattern {pattern} does not match {actual}" is produced.
479 Example: >
480 assert_match('^f.*o$', 'foobar')
481< Will result in a string to be added to |v:errors|:
482 test.vim line 12: Pattern '^f.*o$' does not match 'foobar' ~
483
Bram Moolenaar24278d22019-08-16 21:49:22 +0200484 Can also be used as a |method|: >
485 getFile()->assert_match('foo.*')
486<
Bram Moolenaar5b8cabf2021-04-02 18:55:57 +0200487assert_nobeep({cmd}) *assert_nobeep()*
488 Run {cmd} and add an error message to |v:errors| if it
489 produces a beep or visual bell.
490 Also see |assert_beeps()|.
491
492 Can also be used as a |method|: >
493 GetCmd()->assert_nobeep()
494<
Bram Moolenaared997ad2019-07-21 16:42:00 +0200495 *assert_notequal()*
496assert_notequal({expected}, {actual} [, {msg}])
497 The opposite of `assert_equal()`: add an error message to
498 |v:errors| when {expected} and {actual} are equal.
499 Also see |assert-return|.
500
Bram Moolenaar25e42232019-08-04 15:04:10 +0200501 Can also be used as a |method|: >
502 mylist->assert_notequal([1, 2, 3])
503
504< *assert_notmatch()*
Bram Moolenaared997ad2019-07-21 16:42:00 +0200505assert_notmatch({pattern}, {actual} [, {msg}])
506 The opposite of `assert_match()`: add an error message to
507 |v:errors| when {pattern} matches {actual}.
508 Also see |assert-return|.
509
Bram Moolenaar24278d22019-08-16 21:49:22 +0200510 Can also be used as a |method|: >
511 getFile()->assert_notmatch('bar.*')
512
Bram Moolenaare49fbff2019-08-21 22:50:07 +0200513
Bram Moolenaared997ad2019-07-21 16:42:00 +0200514assert_report({msg}) *assert_report()*
Bram Moolenaar6aa57292021-08-14 21:25:52 +0200515 Report a test failure directly, using String {msg}.
Bram Moolenaared997ad2019-07-21 16:42:00 +0200516 Always returns one.
517
Bram Moolenaare49fbff2019-08-21 22:50:07 +0200518 Can also be used as a |method|: >
519 GetMessage()->assert_report()
520
521
Bram Moolenaared997ad2019-07-21 16:42:00 +0200522assert_true({actual} [, {msg}]) *assert_true()*
523 When {actual} is not true an error message is added to
524 |v:errors|, like with |assert_equal()|.
525 Also see |assert-return|.
526 A value is TRUE when it is a non-zero number. When {actual}
527 is not a number the assert fails.
528 When {msg} is omitted an error in the form "Expected True but
529 got {actual}" is produced.
530
Bram Moolenaar24278d22019-08-16 21:49:22 +0200531 Can also be used as a |method|: >
532 GetResult()->assert_true()
533<
Bram Moolenaared997ad2019-07-21 16:42:00 +0200534
535 vim:tw=78:ts=8:noet:ft=help:norl: