xref: /vim-8.2.3635/runtime/doc/testing.txt (revision 4072ba57)
1*4072ba57SBram Moolenaar*testing.txt*	For Vim version 8.2.  Last change: 2020 Dec 12
2ed997adaSBram Moolenaar
3ed997adaSBram Moolenaar
4ed997adaSBram Moolenaar		  VIM REFERENCE MANUAL	  by Bram Moolenaar
5ed997adaSBram Moolenaar
6ed997adaSBram Moolenaar
7ed997adaSBram MoolenaarTesting Vim and Vim script			*testing-support*
8ed997adaSBram Moolenaar
9ed997adaSBram MoolenaarExpression evaluation is explained in |eval.txt|.  This file goes into details
10ed997adaSBram Moolenaarabout writing tests in Vim script.  This can be used for testing Vim itself
11ed997adaSBram Moolenaarand for testing plugins.
12ed997adaSBram Moolenaar
13ed997adaSBram Moolenaar1. Testing Vim				|testing|
145477506aSBram Moolenaar2. Test functions			|test-functions-details|
155477506aSBram Moolenaar3. Assert functions			|assert-functions-details|
16ed997adaSBram Moolenaar
17ed997adaSBram Moolenaar==============================================================================
18ed997adaSBram Moolenaar1. Testing Vim						*testing*
19ed997adaSBram Moolenaar
20ed997adaSBram MoolenaarVim can be tested after building it, usually with "make test".
21ed997adaSBram MoolenaarThe tests are located in the directory "src/testdir".
22ed997adaSBram Moolenaar
23b96a32efSBram MoolenaarThere are two types of tests added over time:
24b96a32efSBram Moolenaar	test20.in		oldest, only for tiny and small builds
25b96a32efSBram Moolenaar	test_something.vim	new style tests
26b96a32efSBram Moolenaar
27ed997adaSBram Moolenaar						*new-style-testing*
28f7c4d836SBram MoolenaarNew tests should be added as new style tests.  The test scripts are named
29f7c4d836SBram Moolenaartest_<feature>.vim (replace <feature> with the feature under test). These use
30f7c4d836SBram Moolenaarfunctions such as |assert_equal()| to keep the test commands and the expected
31f7c4d836SBram Moolenaarresult in one place.
32b96a32efSBram Moolenaar						*old-style-testing*
33b96a32efSBram MoolenaarThese tests are used only for testing Vim without the |+eval| feature.
34ed997adaSBram Moolenaar
35ed997adaSBram MoolenaarFind more information in the file src/testdir/README.txt.
36ed997adaSBram Moolenaar
37ed997adaSBram Moolenaar==============================================================================
385477506aSBram Moolenaar2. Test functions				*test-functions-details*
39ed997adaSBram Moolenaar
40ed997adaSBram Moolenaartest_alloc_fail({id}, {countdown}, {repeat})		*test_alloc_fail()*
41ed997adaSBram Moolenaar		This is for testing: If the memory allocation with {id} is
42ed997adaSBram Moolenaar		called, then decrement {countdown}, and when it reaches zero
43ed997adaSBram Moolenaar		let memory allocation fail {repeat} times.  When {repeat} is
44ed997adaSBram Moolenaar		smaller than one it fails one time.
45ed997adaSBram Moolenaar
46ce90e36fSBram Moolenaar		Can also be used as a |method|: >
47ce90e36fSBram Moolenaar			GetAllocId()->test_alloc_fail()
48ed997adaSBram Moolenaar
49ed997adaSBram Moolenaartest_autochdir()					*test_autochdir()*
50ed997adaSBram Moolenaar		Set a flag to enable the effect of 'autochdir' before Vim
51ed997adaSBram Moolenaar		startup has finished.
52ed997adaSBram Moolenaar
53ed997adaSBram Moolenaar
54ed997adaSBram Moolenaartest_feedinput({string})				*test_feedinput()*
55ed997adaSBram Moolenaar		Characters in {string} are queued for processing as if they
56ed997adaSBram Moolenaar		were typed by the user. This uses a low level input buffer.
57ed997adaSBram Moolenaar		This function works only when with |+unix| or GUI is running.
58ed997adaSBram Moolenaar
59ce90e36fSBram Moolenaar		Can also be used as a |method|: >
60ce90e36fSBram Moolenaar			GetText()->test_feedinput()
61ed997adaSBram Moolenaar
62ed997adaSBram Moolenaartest_garbagecollect_now()			 *test_garbagecollect_now()*
63ed997adaSBram Moolenaar		Like garbagecollect(), but executed right away.  This must
64ed997adaSBram Moolenaar		only be called directly to avoid any structure to exist
65ed997adaSBram Moolenaar		internally, and |v:testing| must have been set before calling
66ed997adaSBram Moolenaar		any function.
67ed997adaSBram Moolenaar
68ed997adaSBram Moolenaar
69ed997adaSBram Moolenaartest_garbagecollect_soon()			 *test_garbagecollect_soon()*
70ed997adaSBram Moolenaar		Set the flag to call the garbagecollector as if in the main
71ed997adaSBram Moolenaar		loop.  Only to be used in tests.
72ed997adaSBram Moolenaar
73ed997adaSBram Moolenaar
74ed997adaSBram Moolenaartest_getvalue({name})					*test_getvalue()*
75ed997adaSBram Moolenaar		Get the value of an internal variable.  These values for
76ed997adaSBram Moolenaar		{name} are supported:
77ed997adaSBram Moolenaar			need_fileinfo
78ed997adaSBram Moolenaar
79ce90e36fSBram Moolenaar		Can also be used as a |method|: >
80ce90e36fSBram Moolenaar			GetName()->test_getvalue()
81ed997adaSBram Moolenaar
82ed997adaSBram Moolenaartest_ignore_error({expr})			 *test_ignore_error()*
83ed997adaSBram Moolenaar		Ignore any error containing {expr}.  A normal message is given
84ed997adaSBram Moolenaar		instead.
85ed997adaSBram Moolenaar		This is only meant to be used in tests, where catching the
86ed997adaSBram Moolenaar		error with try/catch cannot be used (because it skips over
87ed997adaSBram Moolenaar		following code).
88ed997adaSBram Moolenaar		{expr} is used literally, not as a pattern.
89ed997adaSBram Moolenaar		When the {expr} is the string "RESET" then the list of ignored
90ed997adaSBram Moolenaar		errors is made empty.
91ed997adaSBram Moolenaar
92ce90e36fSBram Moolenaar		Can also be used as a |method|: >
93ce90e36fSBram Moolenaar			GetErrorText()->test_ignore_error()
94ed997adaSBram Moolenaar
95ed997adaSBram Moolenaartest_null_blob()					*test_null_blob()*
96ed997adaSBram Moolenaar		Return a |Blob| that is null. Only useful for testing.
97ed997adaSBram Moolenaar
98ed997adaSBram Moolenaar
99ed997adaSBram Moolenaartest_null_channel()					*test_null_channel()*
100ed997adaSBram Moolenaar		Return a |Channel| that is null. Only useful for testing.
101ed997adaSBram Moolenaar		{only available when compiled with the +channel feature}
102ed997adaSBram Moolenaar
103ed997adaSBram Moolenaar
104ed997adaSBram Moolenaartest_null_dict()					*test_null_dict()*
105ed997adaSBram Moolenaar		Return a |Dict| that is null. Only useful for testing.
106ed997adaSBram Moolenaar
107ed997adaSBram Moolenaar
108e69f6d04SBram Moolenaartest_null_function()					*test_null_function()*
109d1caa941SBram Moolenaar		Return a |Funcref| that is null. Only useful for testing.
110e69f6d04SBram Moolenaar
111e69f6d04SBram Moolenaar
112ed997adaSBram Moolenaartest_null_job()						*test_null_job()*
113ed997adaSBram Moolenaar		Return a |Job| that is null. Only useful for testing.
114ed997adaSBram Moolenaar		{only available when compiled with the +job feature}
115ed997adaSBram Moolenaar
116ed997adaSBram Moolenaar
117ed997adaSBram Moolenaartest_null_list()					*test_null_list()*
118ed997adaSBram Moolenaar		Return a |List| that is null. Only useful for testing.
119ed997adaSBram Moolenaar
120ed997adaSBram Moolenaar
121ed997adaSBram Moolenaartest_null_partial()					*test_null_partial()*
122ed997adaSBram Moolenaar		Return a |Partial| that is null. Only useful for testing.
123ed997adaSBram Moolenaar
124ed997adaSBram Moolenaar
125ed997adaSBram Moolenaartest_null_string()					*test_null_string()*
126ed997adaSBram Moolenaar		Return a |String| that is null. Only useful for testing.
127ed997adaSBram Moolenaar
128ed997adaSBram Moolenaar
1298ed04587SBram Moolenaartest_unknown()						*test_unknown()*
1308ed04587SBram Moolenaar		Return a value with unknown type. Only useful for testing.
1318ed04587SBram Moolenaar
1328ed04587SBram Moolenaartest_void()						*test_void()*
1338ed04587SBram Moolenaar		Return a value with void type. Only useful for testing.
1348ed04587SBram Moolenaar
1358ed04587SBram Moolenaar
136ed997adaSBram Moolenaartest_option_not_set({name})				*test_option_not_set()*
137ed997adaSBram Moolenaar		Reset the flag that indicates option {name} was set.  Thus it
138ed997adaSBram Moolenaar		looks like it still has the default value. Use like this: >
139ed997adaSBram Moolenaar			set ambiwidth=double
140ed997adaSBram Moolenaar			call test_option_not_set('ambiwidth')
141ed997adaSBram Moolenaar<		Now the 'ambiwidth' option behaves like it was never changed,
142ed997adaSBram Moolenaar		even though the value is "double".
143ed997adaSBram Moolenaar		Only to be used for testing!
144ed997adaSBram Moolenaar
145ce90e36fSBram Moolenaar		Can also be used as a |method|: >
146ce90e36fSBram Moolenaar			GetOptionName()->test_option_not_set()
147ce90e36fSBram Moolenaar
148ed997adaSBram Moolenaar
149ed997adaSBram Moolenaartest_override({name}, {val})				*test_override()*
150ed997adaSBram Moolenaar		Overrides certain parts of Vim's internal processing to be able
151ed997adaSBram Moolenaar		to run tests. Only to be used for testing Vim!
152ed997adaSBram Moolenaar		The override is enabled when {val} is non-zero and removed
153ed997adaSBram Moolenaar		when {val} is zero.
154ed997adaSBram Moolenaar		Current supported values for name are:
155ed997adaSBram Moolenaar
156ed997adaSBram Moolenaar		name	     effect when {val} is non-zero ~
157ed997adaSBram Moolenaar		redraw       disable the redrawing() function
158ed997adaSBram Moolenaar		redraw_flag  ignore the RedrawingDisabled flag
159ed997adaSBram Moolenaar		char_avail   disable the char_avail() function
160ed997adaSBram Moolenaar		starting     reset the "starting" variable, see below
161ed997adaSBram Moolenaar		nfa_fail     makes the NFA regexp engine fail to force a
162ed997adaSBram Moolenaar			     fallback to the old engine
163ed997adaSBram Moolenaar		no_query_mouse  do not query the mouse position for "dec"
164ed997adaSBram Moolenaar				terminals
165ed997adaSBram Moolenaar		no_wait_return	set the "no_wait_return" flag.  Not restored
166ed997adaSBram Moolenaar				with "ALL".
167b340baedSBram Moolenaar		ui_delay     time in msec to use in ui_delay(); overrules a
168b340baedSBram Moolenaar			     wait time of up to 3 seconds for messages
1690c0eddd3SBram Moolenaar		term_props   reset all terminal properties when the version
1700c0eddd3SBram Moolenaar			     string is detected
171ed997adaSBram Moolenaar		ALL	     clear all overrides ({val} is not used)
172ed997adaSBram Moolenaar
173ed997adaSBram Moolenaar		"starting" is to be used when a test should behave like
174ed997adaSBram Moolenaar		startup was done.  Since the tests are run by sourcing a
175ed997adaSBram Moolenaar		script the "starting" variable is non-zero. This is usually a
176ed997adaSBram Moolenaar		good thing (tests run faster), but sometimes changes behavior
177ed997adaSBram Moolenaar		in a way that the test doesn't work properly.
178ed997adaSBram Moolenaar		When using: >
179ed997adaSBram Moolenaar			call test_override('starting', 1)
180ed997adaSBram Moolenaar<		The value of "starting" is saved.  It is restored by: >
181ed997adaSBram Moolenaar			call test_override('starting', 0)
182ed997adaSBram Moolenaar
183ce90e36fSBram Moolenaar<		Can also be used as a |method|: >
184ce90e36fSBram Moolenaar			GetOverrideVal()-> test_override('starting')
185ed997adaSBram Moolenaar
186ed997adaSBram Moolenaartest_refcount({expr})					*test_refcount()*
187ed997adaSBram Moolenaar		Return the reference count of {expr}.  When {expr} is of a
188ed997adaSBram Moolenaar		type that does not have a reference count, returns -1.  Only
189ed997adaSBram Moolenaar		to be used for testing.
190ed997adaSBram Moolenaar
191ce90e36fSBram Moolenaar		Can also be used as a |method|: >
192ce90e36fSBram Moolenaar			GetVarname()->test_refcount()
193ce90e36fSBram Moolenaar
194ed997adaSBram Moolenaar
195ed997adaSBram Moolenaartest_scrollbar({which}, {value}, {dragging})		*test_scrollbar()*
196ed997adaSBram Moolenaar		Pretend using scrollbar {which} to move it to position
197ed997adaSBram Moolenaar		{value}.  {which} can be:
198ed997adaSBram Moolenaar			left	Left scrollbar of the current window
199ed997adaSBram Moolenaar			right	Right scrollbar of the current window
200ed997adaSBram Moolenaar			hor	Horizontal scrollbar
201ed997adaSBram Moolenaar
202ed997adaSBram Moolenaar		For the vertical scrollbars {value} can be 1 to the
203ed997adaSBram Moolenaar		line-count of the buffer.  For the horizontal scrollbar the
204ed997adaSBram Moolenaar		{value} can be between 1 and the maximum line length, assuming
205ed997adaSBram Moolenaar		'wrap' is not set.
206ed997adaSBram Moolenaar
207ed997adaSBram Moolenaar		When {dragging} is non-zero it's like dragging the scrollbar,
208ed997adaSBram Moolenaar		otherwise it's like clicking in the scrollbar.
209ed997adaSBram Moolenaar		Only works when the {which} scrollbar actually exists,
210ed997adaSBram Moolenaar		obviously only when using the GUI.
211ed997adaSBram Moolenaar
212ce90e36fSBram Moolenaar		Can also be used as a |method|: >
213ce90e36fSBram Moolenaar			GetValue()->test_scrollbar('right', 0)
214ed997adaSBram Moolenaar
215ed997adaSBram Moolenaartest_setmouse({row}, {col})				*test_setmouse()*
216ed997adaSBram Moolenaar		Set the mouse position to be used for the next mouse action.
217ed997adaSBram Moolenaar		{row} and {col} are one based.
218ed997adaSBram Moolenaar		For example: >
219ed997adaSBram Moolenaar			call test_setmouse(4, 20)
220ed997adaSBram Moolenaar			call feedkeys("\<LeftMouse>", "xt")
221ed997adaSBram Moolenaar
222ed997adaSBram Moolenaartest_settime({expr})					*test_settime()*
223ed997adaSBram Moolenaar		Set the time Vim uses internally.  Currently only used for
224ed997adaSBram Moolenaar		timestamps in the history, as they are used in viminfo, and
225ed997adaSBram Moolenaar		for undo.
226ed997adaSBram Moolenaar		Using a value of 1 makes Vim not sleep after a warning or
227ed997adaSBram Moolenaar		error message.
228ed997adaSBram Moolenaar		{expr} must evaluate to a number.  When the value is zero the
229ed997adaSBram Moolenaar		normal behavior is restored.
230ed997adaSBram Moolenaar
231ce90e36fSBram Moolenaar		Can also be used as a |method|: >
232ce90e36fSBram Moolenaar			GetTime()->test_settime()
233ce90e36fSBram Moolenaar
2344f645c54SBram Moolenaartest_srand_seed([seed])					*test_srand_seed()*
2354f645c54SBram Moolenaar		When [seed] is given this sets the seed value used by
2364f645c54SBram Moolenaar		`srand()`.  When omitted the test seed is removed.
2374f645c54SBram Moolenaar
238ed997adaSBram Moolenaar==============================================================================
2395477506aSBram Moolenaar3. Assert functions				*assert-functions-details*
240ed997adaSBram Moolenaar
241ed997adaSBram Moolenaar
242ed997adaSBram Moolenaarassert_beeps({cmd})					*assert_beeps()*
243ed997adaSBram Moolenaar		Run {cmd} and add an error message to |v:errors| if it does
244ed997adaSBram Moolenaar		NOT produce a beep or visual bell.
245ed997adaSBram Moolenaar		Also see |assert_fails()| and |assert-return|.
246ed997adaSBram Moolenaar
24724278d24SBram Moolenaar		Can also be used as a |method|: >
24824278d24SBram Moolenaar			GetCmd()->assert_beeps()
24924278d24SBram Moolenaar<
250ed997adaSBram Moolenaar							*assert_equal()*
251ed997adaSBram Moolenaarassert_equal({expected}, {actual} [, {msg}])
252ed997adaSBram Moolenaar		When {expected} and {actual} are not equal an error message is
253ed997adaSBram Moolenaar		added to |v:errors| and 1 is returned.  Otherwise zero is
254ed997adaSBram Moolenaar		returned |assert-return|.
255ed997adaSBram Moolenaar		There is no automatic conversion, the String "4" is different
256ed997adaSBram Moolenaar		from the Number 4.  And the number 4 is different from the
257ed997adaSBram Moolenaar		Float 4.0.  The value of 'ignorecase' is not used here, case
258ed997adaSBram Moolenaar		always matters.
259ed997adaSBram Moolenaar		When {msg} is omitted an error in the form "Expected
260ed997adaSBram Moolenaar		{expected} but got {actual}" is produced.
261ed997adaSBram Moolenaar		Example: >
262ed997adaSBram Moolenaar	assert_equal('foo', 'bar')
263ed997adaSBram Moolenaar<		Will result in a string to be added to |v:errors|:
264ed997adaSBram Moolenaar	test.vim line 12: Expected 'foo' but got 'bar' ~
265ed997adaSBram Moolenaar
2667ff78465SBram Moolenaar		Can also be used as a |method|, the base is passed as the
2677ff78465SBram Moolenaar		second argument: >
26825e42231SBram Moolenaar			mylist->assert_equal([1, 2, 3])
26925e42231SBram Moolenaar
27025e42231SBram Moolenaar<							*assert_equalfile()*
271fb517bacSBram Moolenaarassert_equalfile({fname-one}, {fname-two} [, {msg}])
272ed997adaSBram Moolenaar		When the files {fname-one} and {fname-two} do not contain
273ed997adaSBram Moolenaar		exactly the same text an error message is added to |v:errors|.
274ed997adaSBram Moolenaar		Also see |assert-return|.
275ed997adaSBram Moolenaar		When {fname-one} or {fname-two} does not exist the error will
276ed997adaSBram Moolenaar		mention that.
277ed997adaSBram Moolenaar		Mainly useful with |terminal-diff|.
278ed997adaSBram Moolenaar
279e49fbff3SBram Moolenaar		Can also be used as a |method|: >
280e49fbff3SBram Moolenaar			GetLog()->assert_equalfile('expected.log')
281e49fbff3SBram Moolenaar
282ed997adaSBram Moolenaarassert_exception({error} [, {msg}])			*assert_exception()*
283ed997adaSBram Moolenaar		When v:exception does not contain the string {error} an error
284ed997adaSBram Moolenaar		message is added to |v:errors|.  Also see |assert-return|.
285ed997adaSBram Moolenaar		This can be used to assert that a command throws an exception.
286ed997adaSBram Moolenaar		Using the error number, followed by a colon, avoids problems
287ed997adaSBram Moolenaar		with translations: >
288ed997adaSBram Moolenaar			try
289ed997adaSBram Moolenaar			  commandthatfails
290ed997adaSBram Moolenaar			  call assert_false(1, 'command should have failed')
291ed997adaSBram Moolenaar			catch
292ed997adaSBram Moolenaar			  call assert_exception('E492:')
293ed997adaSBram Moolenaar			endtry
2941d634542SBram Moolenaar<
2951d634542SBram Moolenaar							*assert_fails()*
2969bd5d879SBram Moolenaarassert_fails({cmd} [, {error} [, {msg} [, {lnum} [, {context}]]]])
297ed997adaSBram Moolenaar		Run {cmd} and add an error message to |v:errors| if it does
2989b7bf9e9SBram Moolenaar		NOT produce an error or when {error} is not found in the
2999b7bf9e9SBram Moolenaar		error message.  Also see |assert-return|.
3009b7bf9e9SBram Moolenaar
3019b7bf9e9SBram Moolenaar		When {error} is a string it must be found literally in the
3029b7bf9e9SBram Moolenaar		first reported error. Most often this will be the error code,
3039b7bf9e9SBram Moolenaar		including the colon, e.g. "E123:". >
3049b7bf9e9SBram Moolenaar			assert_fails('bad cmd', 'E987:')
3059b7bf9e9SBram Moolenaar<
3069b7bf9e9SBram Moolenaar		When {error} is a |List| with one or two strings, these are
3079b7bf9e9SBram Moolenaar		used as patterns.  The first pattern is matched against the
3089b7bf9e9SBram Moolenaar		first reported error: >
3099b7bf9e9SBram Moolenaar			assert_fails('cmd', ['E987:.*expected bool'])
3109b7bf9e9SBram Moolenaar<		The second pattern, if present, is matched against the last
311*4072ba57SBram Moolenaar		reported error.
312*4072ba57SBram Moolenaar		If there is only one error then both patterns must match. This
313*4072ba57SBram Moolenaar		can be used to check that there is only one error.
314*4072ba57SBram Moolenaar		To only match the last error use an empty string for the first
315*4072ba57SBram Moolenaar		error: >
3169b7bf9e9SBram Moolenaar			assert_fails('cmd', ['', 'E987:'])
3179b7bf9e9SBram Moolenaar<
3181d634542SBram Moolenaar		If {msg} is empty then it is not used.  Do this to get the
3191d634542SBram Moolenaar		default message when passing the {lnum} argument.
3201d634542SBram Moolenaar
3211d634542SBram Moolenaar		When {lnum} is present and not negative, and the {error}
3221d634542SBram Moolenaar		argument is present and matches, then this is compared with
3231d634542SBram Moolenaar		the line number at which the error was reported. That can be
3241d634542SBram Moolenaar		the line number in a function or in a script.
3251d634542SBram Moolenaar
3269bd5d879SBram Moolenaar		When {context} is present it is used as a pattern and matched
3279bd5d879SBram Moolenaar		against the context (script name or function name) where
3289bd5d879SBram Moolenaar		{lnum} is located in.
3299bd5d879SBram Moolenaar
330ed997adaSBram Moolenaar		Note that beeping is not considered an error, and some failing
331ed997adaSBram Moolenaar		commands only beep.  Use |assert_beeps()| for those.
332ed997adaSBram Moolenaar
33324278d24SBram Moolenaar		Can also be used as a |method|: >
33424278d24SBram Moolenaar			GetCmd()->assert_fails('E99:')
33524278d24SBram Moolenaar
336ed997adaSBram Moolenaarassert_false({actual} [, {msg}])			*assert_false()*
337ed997adaSBram Moolenaar		When {actual} is not false an error message is added to
338ed997adaSBram Moolenaar		|v:errors|, like with |assert_equal()|.
339ed997adaSBram Moolenaar		Also see |assert-return|.
340ed997adaSBram Moolenaar		A value is false when it is zero. When {actual} is not a
341ed997adaSBram Moolenaar		number the assert fails.
342ed997adaSBram Moolenaar		When {msg} is omitted an error in the form
343ed997adaSBram Moolenaar		"Expected False but got {actual}" is produced.
344ed997adaSBram Moolenaar
34524278d24SBram Moolenaar		Can also be used as a |method|: >
34624278d24SBram Moolenaar			GetResult()->assert_false()
34724278d24SBram Moolenaar
348ed997adaSBram Moolenaarassert_inrange({lower}, {upper}, {actual} [, {msg}])	 *assert_inrange()*
349ed997adaSBram Moolenaar		This asserts number and |Float| values.  When {actual}  is lower
350ed997adaSBram Moolenaar		than {lower} or higher than {upper} an error message is added
351ed997adaSBram Moolenaar		to |v:errors|.  Also see |assert-return|.
352ed997adaSBram Moolenaar		When {msg} is omitted an error in the form
353ed997adaSBram Moolenaar		"Expected range {lower} - {upper}, but got {actual}" is
354ed997adaSBram Moolenaar		produced.
355ed997adaSBram Moolenaar
356ed997adaSBram Moolenaar								*assert_match()*
357ed997adaSBram Moolenaarassert_match({pattern}, {actual} [, {msg}])
358ed997adaSBram Moolenaar		When {pattern} does not match {actual} an error message is
359ed997adaSBram Moolenaar		added to |v:errors|.  Also see |assert-return|.
360ed997adaSBram Moolenaar
361ed997adaSBram Moolenaar		{pattern} is used as with |=~|: The matching is always done
362ed997adaSBram Moolenaar		like 'magic' was set and 'cpoptions' is empty, no matter what
363ed997adaSBram Moolenaar		the actual value of 'magic' or 'cpoptions' is.
364ed997adaSBram Moolenaar
365ed997adaSBram Moolenaar		{actual} is used as a string, automatic conversion applies.
366ed997adaSBram Moolenaar		Use "^" and "$" to match with the start and end of the text.
367ed997adaSBram Moolenaar		Use both to match the whole text.
368ed997adaSBram Moolenaar
369ed997adaSBram Moolenaar		When {msg} is omitted an error in the form
370ed997adaSBram Moolenaar		"Pattern {pattern} does not match {actual}" is produced.
371ed997adaSBram Moolenaar		Example: >
372ed997adaSBram Moolenaar	assert_match('^f.*o$', 'foobar')
373ed997adaSBram Moolenaar<		Will result in a string to be added to |v:errors|:
374ed997adaSBram Moolenaar	test.vim line 12: Pattern '^f.*o$' does not match 'foobar' ~
375ed997adaSBram Moolenaar
37624278d24SBram Moolenaar		Can also be used as a |method|: >
37724278d24SBram Moolenaar			getFile()->assert_match('foo.*')
37824278d24SBram Moolenaar<
379ed997adaSBram Moolenaar							*assert_notequal()*
380ed997adaSBram Moolenaarassert_notequal({expected}, {actual} [, {msg}])
381ed997adaSBram Moolenaar		The opposite of `assert_equal()`: add an error message to
382ed997adaSBram Moolenaar		|v:errors| when {expected} and {actual} are equal.
383ed997adaSBram Moolenaar		Also see |assert-return|.
384ed997adaSBram Moolenaar
38525e42231SBram Moolenaar		Can also be used as a |method|: >
38625e42231SBram Moolenaar			mylist->assert_notequal([1, 2, 3])
38725e42231SBram Moolenaar
38825e42231SBram Moolenaar<							*assert_notmatch()*
389ed997adaSBram Moolenaarassert_notmatch({pattern}, {actual} [, {msg}])
390ed997adaSBram Moolenaar		The opposite of `assert_match()`: add an error message to
391ed997adaSBram Moolenaar		|v:errors| when {pattern} matches {actual}.
392ed997adaSBram Moolenaar		Also see |assert-return|.
393ed997adaSBram Moolenaar
39424278d24SBram Moolenaar		Can also be used as a |method|: >
39524278d24SBram Moolenaar			getFile()->assert_notmatch('bar.*')
39624278d24SBram Moolenaar
397e49fbff3SBram Moolenaar
398ed997adaSBram Moolenaarassert_report({msg})					*assert_report()*
399ed997adaSBram Moolenaar		Report a test failure directly, using {msg}.
400ed997adaSBram Moolenaar		Always returns one.
401ed997adaSBram Moolenaar
402e49fbff3SBram Moolenaar		Can also be used as a |method|: >
403e49fbff3SBram Moolenaar			GetMessage()->assert_report()
404e49fbff3SBram Moolenaar
405e49fbff3SBram Moolenaar
406ed997adaSBram Moolenaarassert_true({actual} [, {msg}])				*assert_true()*
407ed997adaSBram Moolenaar		When {actual} is not true an error message is added to
408ed997adaSBram Moolenaar		|v:errors|, like with |assert_equal()|.
409ed997adaSBram Moolenaar		Also see |assert-return|.
410ed997adaSBram Moolenaar		A value is TRUE when it is a non-zero number.  When {actual}
411ed997adaSBram Moolenaar		is not a number the assert fails.
412ed997adaSBram Moolenaar		When {msg} is omitted an error in the form "Expected True but
413ed997adaSBram Moolenaar		got {actual}" is produced.
414ed997adaSBram Moolenaar
41524278d24SBram Moolenaar		Can also be used as a |method|: >
41624278d24SBram Moolenaar			GetResult()->assert_true()
41724278d24SBram Moolenaar<
418ed997adaSBram Moolenaar
419ed997adaSBram Moolenaar vim:tw=78:ts=8:noet:ft=help:norl:
420