blob: 1b726f7390efbc375a520475b1c5d9e58ea98c38 [file] [log] [blame]
Bram Moolenaar92f645b2022-02-11 13:29:40 +00001*testing.txt* For Vim version 8.2. Last change: 2022 Feb 10
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
Bram Moolenaara2baa732022-02-04 16:09:54 +0000177 "scrollbar":
178 Set or drag the left, right or horizontal scrollbar. Only
179 works when the scrollbar actually exists. The supported
180 items in {args} are:
181 which: scrollbar. The supported values are:
182 left Left scrollbar of the current window
183 right Right scrollbar of the current window
184 hor Horizontal scrollbar
185 value: amount to scroll. For the vertical scrollbars
186 the value can be 1 to the line-count of the
187 buffer. For the horizontal scrollbar the
188 value can be between 1 and the maximum line
189 length, assuming 'wrap' is not set.
190 dragging: 1 to drag the scrollbar and 0 to click in the
191 scrollbar.
192
Yegappan Lakshmanan06011e12022-01-30 12:37:29 +0000193 "tabline":
194 Inject a mouse click event on the tabline to select a
195 tabpage. The supported items in {args} are:
196 tabnr: tab page number
197
198 "tabmenu":
199 Inject an event to select a tabline menu entry. The
200 supported items in {args} are:
201 tabnr: tab page number
202 item: tab page menu item number. 1 for the first
203 menu item, 2 for the second item and so on.
204
205 After injecting the GUI events you probably should call
Yegappan Lakshmananf1e74492021-06-21 18:44:26 +0200206 |feedkeys()| to have them processed, e.g.: >
207 call feedkeys("y", 'Lx!')
Yegappan Lakshmanan06011e12022-01-30 12:37:29 +0000208<
Yegappan Lakshmananb0ad2d92022-01-27 13:16:59 +0000209 Returns TRUE if the event is successfully added, FALSE if
Yegappan Lakshmanan06011e12022-01-30 12:37:29 +0000210 there is a failure.
Yegappan Lakshmananb0ad2d92022-01-27 13:16:59 +0000211
Yegappan Lakshmanan06011e12022-01-30 12:37:29 +0000212 Can also be used as a |method|: >
213 GetEvent()->test_gui_event({args})
214<
Bram Moolenaared997ad2019-07-21 16:42:00 +0200215test_ignore_error({expr}) *test_ignore_error()*
216 Ignore any error containing {expr}. A normal message is given
217 instead.
218 This is only meant to be used in tests, where catching the
219 error with try/catch cannot be used (because it skips over
220 following code).
221 {expr} is used literally, not as a pattern.
222 When the {expr} is the string "RESET" then the list of ignored
223 errors is made empty.
224
Bram Moolenaarce90e362019-09-08 18:58:44 +0200225 Can also be used as a |method|: >
226 GetErrorText()->test_ignore_error()
Bram Moolenaared997ad2019-07-21 16:42:00 +0200227
Bram Moolenaar89a9c152021-08-29 21:55:35 +0200228
Bram Moolenaared997ad2019-07-21 16:42:00 +0200229test_null_blob() *test_null_blob()*
230 Return a |Blob| that is null. Only useful for testing.
231
232
233test_null_channel() *test_null_channel()*
234 Return a |Channel| that is null. Only useful for testing.
235 {only available when compiled with the +channel feature}
236
237
238test_null_dict() *test_null_dict()*
239 Return a |Dict| that is null. Only useful for testing.
240
241
Bram Moolenaare69f6d02020-04-01 22:11:01 +0200242test_null_function() *test_null_function()*
Bram Moolenaard1caa942020-04-10 22:10:56 +0200243 Return a |Funcref| that is null. Only useful for testing.
Bram Moolenaare69f6d02020-04-01 22:11:01 +0200244
245
Bram Moolenaared997ad2019-07-21 16:42:00 +0200246test_null_job() *test_null_job()*
247 Return a |Job| that is null. Only useful for testing.
248 {only available when compiled with the +job feature}
249
250
251test_null_list() *test_null_list()*
252 Return a |List| that is null. Only useful for testing.
253
254
255test_null_partial() *test_null_partial()*
256 Return a |Partial| that is null. Only useful for testing.
257
258
259test_null_string() *test_null_string()*
260 Return a |String| that is null. Only useful for testing.
261
262
263test_option_not_set({name}) *test_option_not_set()*
264 Reset the flag that indicates option {name} was set. Thus it
265 looks like it still has the default value. Use like this: >
266 set ambiwidth=double
267 call test_option_not_set('ambiwidth')
268< Now the 'ambiwidth' option behaves like it was never changed,
269 even though the value is "double".
270 Only to be used for testing!
271
Bram Moolenaarce90e362019-09-08 18:58:44 +0200272 Can also be used as a |method|: >
273 GetOptionName()->test_option_not_set()
274
Bram Moolenaared997ad2019-07-21 16:42:00 +0200275
276test_override({name}, {val}) *test_override()*
277 Overrides certain parts of Vim's internal processing to be able
278 to run tests. Only to be used for testing Vim!
279 The override is enabled when {val} is non-zero and removed
280 when {val} is zero.
Bram Moolenaar3e4fa3d2022-01-13 22:05:09 +0000281 Current supported values for {name} are:
Bram Moolenaared997ad2019-07-21 16:42:00 +0200282
Bram Moolenaar3e4fa3d2022-01-13 22:05:09 +0000283 {name} effect when {val} is non-zero ~
284 autoload `import autoload` will load the script right
285 away, not postponed until an item is used
Bram Moolenaared997ad2019-07-21 16:42:00 +0200286 char_avail disable the char_avail() function
Bram Moolenaared997ad2019-07-21 16:42:00 +0200287 nfa_fail makes the NFA regexp engine fail to force a
288 fallback to the old engine
289 no_query_mouse do not query the mouse position for "dec"
290 terminals
291 no_wait_return set the "no_wait_return" flag. Not restored
292 with "ALL".
Bram Moolenaar3e4fa3d2022-01-13 22:05:09 +0000293 redraw disable the redrawing() function
294 redraw_flag ignore the RedrawingDisabled flag
295 starting reset the "starting" variable, see below
Bram Moolenaar0c0eddd2020-06-13 15:47:25 +0200296 term_props reset all terminal properties when the version
297 string is detected
Bram Moolenaar3e4fa3d2022-01-13 22:05:09 +0000298 ui_delay time in msec to use in ui_delay(); overrules a
299 wait time of up to 3 seconds for messages
Bram Moolenaarc8cdf0f2021-03-13 13:28:13 +0100300 uptime overrules sysinfo.uptime
ichizokae1bd872022-01-20 14:57:29 +0000301 vterm_title setting the window title by a job running in a
302 terminal window
Bram Moolenaared997ad2019-07-21 16:42:00 +0200303 ALL clear all overrides ({val} is not used)
304
305 "starting" is to be used when a test should behave like
306 startup was done. Since the tests are run by sourcing a
307 script the "starting" variable is non-zero. This is usually a
308 good thing (tests run faster), but sometimes changes behavior
309 in a way that the test doesn't work properly.
310 When using: >
311 call test_override('starting', 1)
312< The value of "starting" is saved. It is restored by: >
313 call test_override('starting', 0)
314
Bram Moolenaarce90e362019-09-08 18:58:44 +0200315< Can also be used as a |method|: >
316 GetOverrideVal()-> test_override('starting')
Bram Moolenaared997ad2019-07-21 16:42:00 +0200317
Bram Moolenaar89a9c152021-08-29 21:55:35 +0200318
Bram Moolenaared997ad2019-07-21 16:42:00 +0200319test_refcount({expr}) *test_refcount()*
320 Return the reference count of {expr}. When {expr} is of a
321 type that does not have a reference count, returns -1. Only
322 to be used for testing.
323
Bram Moolenaarce90e362019-09-08 18:58:44 +0200324 Can also be used as a |method|: >
325 GetVarname()->test_refcount()
326
Bram Moolenaared997ad2019-07-21 16:42:00 +0200327
Bram Moolenaared997ad2019-07-21 16:42:00 +0200328test_setmouse({row}, {col}) *test_setmouse()*
329 Set the mouse position to be used for the next mouse action.
330 {row} and {col} are one based.
331 For example: >
332 call test_setmouse(4, 20)
333 call feedkeys("\<LeftMouse>", "xt")
334
Bram Moolenaar89a9c152021-08-29 21:55:35 +0200335
Bram Moolenaared997ad2019-07-21 16:42:00 +0200336test_settime({expr}) *test_settime()*
337 Set the time Vim uses internally. Currently only used for
338 timestamps in the history, as they are used in viminfo, and
339 for undo.
340 Using a value of 1 makes Vim not sleep after a warning or
341 error message.
342 {expr} must evaluate to a number. When the value is zero the
343 normal behavior is restored.
344
Bram Moolenaarce90e362019-09-08 18:58:44 +0200345 Can also be used as a |method|: >
346 GetTime()->test_settime()
347
Bram Moolenaar89a9c152021-08-29 21:55:35 +0200348
Bram Moolenaar4f645c52020-02-08 16:40:39 +0100349test_srand_seed([seed]) *test_srand_seed()*
350 When [seed] is given this sets the seed value used by
351 `srand()`. When omitted the test seed is removed.
352
Bram Moolenaar89a9c152021-08-29 21:55:35 +0200353
354test_unknown() *test_unknown()*
355 Return a value with unknown type. Only useful for testing.
356
357
358test_void() *test_void()*
359 Return a value with void type. Only useful for testing.
360
Bram Moolenaared997ad2019-07-21 16:42:00 +0200361==============================================================================
Bram Moolenaar54775062019-07-31 21:07:14 +02003623. Assert functions *assert-functions-details*
Bram Moolenaared997ad2019-07-21 16:42:00 +0200363
364
365assert_beeps({cmd}) *assert_beeps()*
366 Run {cmd} and add an error message to |v:errors| if it does
367 NOT produce a beep or visual bell.
Bram Moolenaar5b8cabf2021-04-02 18:55:57 +0200368 Also see |assert_fails()|, |assert_nobeep()| and
369 |assert-return|.
Bram Moolenaared997ad2019-07-21 16:42:00 +0200370
Bram Moolenaar24278d22019-08-16 21:49:22 +0200371 Can also be used as a |method|: >
372 GetCmd()->assert_beeps()
373<
Bram Moolenaared997ad2019-07-21 16:42:00 +0200374 *assert_equal()*
375assert_equal({expected}, {actual} [, {msg}])
376 When {expected} and {actual} are not equal an error message is
377 added to |v:errors| and 1 is returned. Otherwise zero is
378 returned |assert-return|.
379 There is no automatic conversion, the String "4" is different
380 from the Number 4. And the number 4 is different from the
381 Float 4.0. The value of 'ignorecase' is not used here, case
382 always matters.
383 When {msg} is omitted an error in the form "Expected
384 {expected} but got {actual}" is produced.
385 Example: >
386 assert_equal('foo', 'bar')
387< Will result in a string to be added to |v:errors|:
388 test.vim line 12: Expected 'foo' but got 'bar' ~
389
Bram Moolenaar7ff78462020-07-10 22:00:53 +0200390 Can also be used as a |method|, the base is passed as the
391 second argument: >
Bram Moolenaar25e42232019-08-04 15:04:10 +0200392 mylist->assert_equal([1, 2, 3])
393
Bram Moolenaar25e42232019-08-04 15:04:10 +0200394< *assert_equalfile()*
Bram Moolenaarfb517ba2020-06-03 19:55:35 +0200395assert_equalfile({fname-one}, {fname-two} [, {msg}])
Bram Moolenaared997ad2019-07-21 16:42:00 +0200396 When the files {fname-one} and {fname-two} do not contain
397 exactly the same text an error message is added to |v:errors|.
398 Also see |assert-return|.
399 When {fname-one} or {fname-two} does not exist the error will
400 mention that.
401 Mainly useful with |terminal-diff|.
402
Bram Moolenaare49fbff2019-08-21 22:50:07 +0200403 Can also be used as a |method|: >
404 GetLog()->assert_equalfile('expected.log')
405
Bram Moolenaared997ad2019-07-21 16:42:00 +0200406assert_exception({error} [, {msg}]) *assert_exception()*
407 When v:exception does not contain the string {error} an error
408 message is added to |v:errors|. Also see |assert-return|.
409 This can be used to assert that a command throws an exception.
410 Using the error number, followed by a colon, avoids problems
411 with translations: >
412 try
413 commandthatfails
414 call assert_false(1, 'command should have failed')
415 catch
416 call assert_exception('E492:')
417 endtry
Bram Moolenaar1d634542020-08-18 13:41:50 +0200418<
419 *assert_fails()*
Bram Moolenaar9bd5d872020-09-06 21:47:48 +0200420assert_fails({cmd} [, {error} [, {msg} [, {lnum} [, {context}]]]])
Bram Moolenaared997ad2019-07-21 16:42:00 +0200421 Run {cmd} and add an error message to |v:errors| if it does
Bram Moolenaar9b7bf9e2020-07-11 22:14:59 +0200422 NOT produce an error or when {error} is not found in the
423 error message. Also see |assert-return|.
Bram Moolenaar6f4754b2022-01-23 12:07:04 +0000424 *E856*
Bram Moolenaar9b7bf9e2020-07-11 22:14:59 +0200425 When {error} is a string it must be found literally in the
426 first reported error. Most often this will be the error code,
427 including the colon, e.g. "E123:". >
428 assert_fails('bad cmd', 'E987:')
429<
430 When {error} is a |List| with one or two strings, these are
431 used as patterns. The first pattern is matched against the
432 first reported error: >
433 assert_fails('cmd', ['E987:.*expected bool'])
434< The second pattern, if present, is matched against the last
Bram Moolenaar4072ba52020-12-23 13:56:35 +0100435 reported error.
436 If there is only one error then both patterns must match. This
437 can be used to check that there is only one error.
438 To only match the last error use an empty string for the first
439 error: >
Bram Moolenaar9b7bf9e2020-07-11 22:14:59 +0200440 assert_fails('cmd', ['', 'E987:'])
441<
Bram Moolenaar1d634542020-08-18 13:41:50 +0200442 If {msg} is empty then it is not used. Do this to get the
443 default message when passing the {lnum} argument.
Bram Moolenaarf10911e2022-01-29 22:20:48 +0000444 *E1115*
Bram Moolenaar1d634542020-08-18 13:41:50 +0200445 When {lnum} is present and not negative, and the {error}
446 argument is present and matches, then this is compared with
447 the line number at which the error was reported. That can be
448 the line number in a function or in a script.
Bram Moolenaarf10911e2022-01-29 22:20:48 +0000449 *E1116*
Bram Moolenaar9bd5d872020-09-06 21:47:48 +0200450 When {context} is present it is used as a pattern and matched
451 against the context (script name or function name) where
452 {lnum} is located in.
453
Bram Moolenaared997ad2019-07-21 16:42:00 +0200454 Note that beeping is not considered an error, and some failing
455 commands only beep. Use |assert_beeps()| for those.
456
Bram Moolenaar24278d22019-08-16 21:49:22 +0200457 Can also be used as a |method|: >
458 GetCmd()->assert_fails('E99:')
459
Bram Moolenaar1d634542020-08-18 13:41:50 +0200460assert_false({actual} [, {msg}]) *assert_false()*
Bram Moolenaared997ad2019-07-21 16:42:00 +0200461 When {actual} is not false an error message is added to
462 |v:errors|, like with |assert_equal()|.
463 Also see |assert-return|.
464 A value is false when it is zero. When {actual} is not a
465 number the assert fails.
466 When {msg} is omitted an error in the form
467 "Expected False but got {actual}" is produced.
468
Bram Moolenaar24278d22019-08-16 21:49:22 +0200469 Can also be used as a |method|: >
470 GetResult()->assert_false()
471
Bram Moolenaared997ad2019-07-21 16:42:00 +0200472assert_inrange({lower}, {upper}, {actual} [, {msg}]) *assert_inrange()*
473 This asserts number and |Float| values. When {actual} is lower
474 than {lower} or higher than {upper} an error message is added
475 to |v:errors|. Also see |assert-return|.
476 When {msg} is omitted an error in the form
477 "Expected range {lower} - {upper}, but got {actual}" is
478 produced.
479
480 *assert_match()*
481assert_match({pattern}, {actual} [, {msg}])
482 When {pattern} does not match {actual} an error message is
483 added to |v:errors|. Also see |assert-return|.
484
485 {pattern} is used as with |=~|: The matching is always done
486 like 'magic' was set and 'cpoptions' is empty, no matter what
487 the actual value of 'magic' or 'cpoptions' is.
488
489 {actual} is used as a string, automatic conversion applies.
490 Use "^" and "$" to match with the start and end of the text.
491 Use both to match the whole text.
492
493 When {msg} is omitted an error in the form
494 "Pattern {pattern} does not match {actual}" is produced.
495 Example: >
496 assert_match('^f.*o$', 'foobar')
497< Will result in a string to be added to |v:errors|:
498 test.vim line 12: Pattern '^f.*o$' does not match 'foobar' ~
499
Bram Moolenaar24278d22019-08-16 21:49:22 +0200500 Can also be used as a |method|: >
501 getFile()->assert_match('foo.*')
502<
Bram Moolenaar5b8cabf2021-04-02 18:55:57 +0200503assert_nobeep({cmd}) *assert_nobeep()*
504 Run {cmd} and add an error message to |v:errors| if it
505 produces a beep or visual bell.
506 Also see |assert_beeps()|.
507
508 Can also be used as a |method|: >
509 GetCmd()->assert_nobeep()
510<
Bram Moolenaared997ad2019-07-21 16:42:00 +0200511 *assert_notequal()*
512assert_notequal({expected}, {actual} [, {msg}])
513 The opposite of `assert_equal()`: add an error message to
514 |v:errors| when {expected} and {actual} are equal.
515 Also see |assert-return|.
516
Bram Moolenaar25e42232019-08-04 15:04:10 +0200517 Can also be used as a |method|: >
518 mylist->assert_notequal([1, 2, 3])
519
520< *assert_notmatch()*
Bram Moolenaared997ad2019-07-21 16:42:00 +0200521assert_notmatch({pattern}, {actual} [, {msg}])
522 The opposite of `assert_match()`: add an error message to
523 |v:errors| when {pattern} matches {actual}.
524 Also see |assert-return|.
525
Bram Moolenaar24278d22019-08-16 21:49:22 +0200526 Can also be used as a |method|: >
527 getFile()->assert_notmatch('bar.*')
528
Bram Moolenaare49fbff2019-08-21 22:50:07 +0200529
Bram Moolenaared997ad2019-07-21 16:42:00 +0200530assert_report({msg}) *assert_report()*
Bram Moolenaar6aa57292021-08-14 21:25:52 +0200531 Report a test failure directly, using String {msg}.
Bram Moolenaared997ad2019-07-21 16:42:00 +0200532 Always returns one.
533
Bram Moolenaare49fbff2019-08-21 22:50:07 +0200534 Can also be used as a |method|: >
535 GetMessage()->assert_report()
536
537
Bram Moolenaared997ad2019-07-21 16:42:00 +0200538assert_true({actual} [, {msg}]) *assert_true()*
539 When {actual} is not true an error message is added to
540 |v:errors|, like with |assert_equal()|.
541 Also see |assert-return|.
542 A value is TRUE when it is a non-zero number. When {actual}
543 is not a number the assert fails.
544 When {msg} is omitted an error in the form "Expected True but
545 got {actual}" is produced.
546
Bram Moolenaar24278d22019-08-16 21:49:22 +0200547 Can also be used as a |method|: >
548 GetResult()->assert_true()
549<
Bram Moolenaared997ad2019-07-21 16:42:00 +0200550
551 vim:tw=78:ts=8:noet:ft=help:norl: