xref: /vim-8.2.3635/src/testdir/test_assert.vim (revision 2b6ef856)
143345546SBram Moolenaar" Test that the methods used for testing work.
243345546SBram Moolenaar
3683fa185SBram Moolenaarfunc Test_assert_false()
465a54649SBram Moolenaar  call assert_equal(0, assert_false(0))
565a54649SBram Moolenaar  call assert_equal(0, assert_false(v:false))
624278d24SBram Moolenaar  call assert_equal(0, v:false->assert_false())
765a54649SBram Moolenaar
865a54649SBram Moolenaar  call assert_equal(1, assert_false(123))
965a54649SBram Moolenaar  call assert_match("Expected False but got 123", v:errors[0])
1065a54649SBram Moolenaar  call remove(v:errors, 0)
1124278d24SBram Moolenaar
1224278d24SBram Moolenaar  call assert_equal(1, 123->assert_false())
1324278d24SBram Moolenaar  call assert_match("Expected False but got 123", v:errors[0])
1424278d24SBram Moolenaar  call remove(v:errors, 0)
1543345546SBram Moolenaarendfunc
1643345546SBram Moolenaar
17683fa185SBram Moolenaarfunc Test_assert_true()
1865a54649SBram Moolenaar  call assert_equal(0, assert_true(1))
1965a54649SBram Moolenaar  call assert_equal(0, assert_true(123))
2065a54649SBram Moolenaar  call assert_equal(0, assert_true(v:true))
2124278d24SBram Moolenaar  call assert_equal(0, v:true->assert_true())
2265a54649SBram Moolenaar
2365a54649SBram Moolenaar  call assert_equal(1, assert_true(0))
2465a54649SBram Moolenaar  call assert_match("Expected True but got 0", v:errors[0])
2565a54649SBram Moolenaar  call remove(v:errors, 0)
2624278d24SBram Moolenaar
2724278d24SBram Moolenaar  call assert_equal(1, 0->assert_true())
2824278d24SBram Moolenaar  call assert_match("Expected True but got 0", v:errors[0])
2924278d24SBram Moolenaar  call remove(v:errors, 0)
3043345546SBram Moolenaarendfunc
3143345546SBram Moolenaar
32683fa185SBram Moolenaarfunc Test_assert_equal()
3343345546SBram Moolenaar  let s = 'foo'
3465a54649SBram Moolenaar  call assert_equal(0, assert_equal('foo', s))
3543345546SBram Moolenaar  let n = 4
3665a54649SBram Moolenaar  call assert_equal(0, assert_equal(4, n))
3743345546SBram Moolenaar  let l = [1, 2, 3]
3865a54649SBram Moolenaar  call assert_equal(0, assert_equal([1, 2, 3], l))
397b293c73SBram Moolenaar  call assert_equal(test_null_list(), test_null_list())
407b293c73SBram Moolenaar  call assert_equal(test_null_list(), [])
417b293c73SBram Moolenaar  call assert_equal([], test_null_list())
42b50e5f56SBram Moolenaar
43b50e5f56SBram Moolenaar  let s = 'foo'
4465a54649SBram Moolenaar  call assert_equal(1, assert_equal('bar', s))
45b50e5f56SBram Moolenaar  call assert_match("Expected 'bar' but got 'foo'", v:errors[0])
46b50e5f56SBram Moolenaar  call remove(v:errors, 0)
4786576712SBram Moolenaar
4886576712SBram Moolenaar  call assert_equal('XxxxxxxxxxxxxxxxxxxxxxX', 'XyyyyyyyyyyyyyyyyyyyyyyyyyX')
4986576712SBram Moolenaar  call assert_match("Expected 'X\\\\\\[x occurs 21 times]X' but got 'X\\\\\\[y occurs 25 times]X'", v:errors[0])
5086576712SBram Moolenaar  call remove(v:errors, 0)
51b50e5f56SBram Moolenaarendfunc
52b50e5f56SBram Moolenaar
534a021dfbSBram Moolenaarfunc Test_assert_equal_dict()
544a021dfbSBram Moolenaar  call assert_equal(0, assert_equal(#{one: 1, two: 2}, #{two: 2, one: 1}))
554a021dfbSBram Moolenaar
564a021dfbSBram Moolenaar  call assert_equal(1, assert_equal(#{one: 1, two: 2}, #{two: 2, one: 3}))
574a021dfbSBram Moolenaar  call assert_match("Expected {'one': 1} but got {'one': 3} - 1 equal item omitted", v:errors[0])
584a021dfbSBram Moolenaar  call remove(v:errors, 0)
594a021dfbSBram Moolenaar
604a021dfbSBram Moolenaar  call assert_equal(1, assert_equal(#{one: 1, two: 2}, #{two: 22, one: 11}))
614a021dfbSBram Moolenaar  call assert_match("Expected {'one': 1, 'two': 2} but got {'one': 11, 'two': 22}", v:errors[0])
624a021dfbSBram Moolenaar  call remove(v:errors, 0)
634a021dfbSBram Moolenaar
644a021dfbSBram Moolenaar  call assert_equal(1, assert_equal(#{}, #{two: 2, one: 1}))
654a021dfbSBram Moolenaar  call assert_match("Expected {} but got {'one': 1, 'two': 2}", v:errors[0])
664a021dfbSBram Moolenaar  call remove(v:errors, 0)
674a021dfbSBram Moolenaar
684a021dfbSBram Moolenaar  call assert_equal(1, assert_equal(#{two: 2, one: 1}, #{}))
694a021dfbSBram Moolenaar  call assert_match("Expected {'one': 1, 'two': 2} but got {}", v:errors[0])
704a021dfbSBram Moolenaar  call remove(v:errors, 0)
714a021dfbSBram Moolenaarendfunc
724a021dfbSBram Moolenaar
73d96ff165SBram Moolenaarfunc Test_assert_equalfile()
7465a54649SBram Moolenaar  call assert_equal(1, assert_equalfile('abcabc', 'xyzxyz'))
75d96ff165SBram Moolenaar  call assert_match("E485: Can't read file abcabc", v:errors[0])
76d96ff165SBram Moolenaar  call remove(v:errors, 0)
77d96ff165SBram Moolenaar
78d96ff165SBram Moolenaar  let goodtext = ["one", "two", "three"]
79d96ff165SBram Moolenaar  call writefile(goodtext, 'Xone')
80e49fbff3SBram Moolenaar  call assert_equal(1, 'Xone'->assert_equalfile('xyzxyz'))
81d96ff165SBram Moolenaar  call assert_match("E485: Can't read file xyzxyz", v:errors[0])
82d96ff165SBram Moolenaar  call remove(v:errors, 0)
83d96ff165SBram Moolenaar
84d96ff165SBram Moolenaar  call writefile(goodtext, 'Xtwo')
8565a54649SBram Moolenaar  call assert_equal(0, assert_equalfile('Xone', 'Xtwo'))
86d96ff165SBram Moolenaar
87d96ff165SBram Moolenaar  call writefile([goodtext[0]], 'Xone')
8865a54649SBram Moolenaar  call assert_equal(1, assert_equalfile('Xone', 'Xtwo'))
89d96ff165SBram Moolenaar  call assert_match("first file is shorter", v:errors[0])
90d96ff165SBram Moolenaar  call remove(v:errors, 0)
91d96ff165SBram Moolenaar
92d96ff165SBram Moolenaar  call writefile(goodtext, 'Xone')
93d96ff165SBram Moolenaar  call writefile([goodtext[0]], 'Xtwo')
9465a54649SBram Moolenaar  call assert_equal(1, assert_equalfile('Xone', 'Xtwo'))
95d96ff165SBram Moolenaar  call assert_match("second file is shorter", v:errors[0])
96d96ff165SBram Moolenaar  call remove(v:errors, 0)
97d96ff165SBram Moolenaar
98d96ff165SBram Moolenaar  call writefile(['1234X89'], 'Xone')
99d96ff165SBram Moolenaar  call writefile(['1234Y89'], 'Xtwo')
10065a54649SBram Moolenaar  call assert_equal(1, assert_equalfile('Xone', 'Xtwo'))
10130cc44a9SBram Moolenaar  call assert_match('difference at byte 4, line 1 after "1234X" vs "1234Y"', v:errors[0])
10230cc44a9SBram Moolenaar  call remove(v:errors, 0)
10330cc44a9SBram Moolenaar
10430cc44a9SBram Moolenaar  call writefile([repeat('x', 234) .. 'X'], 'Xone')
10530cc44a9SBram Moolenaar  call writefile([repeat('x', 234) .. 'Y'], 'Xtwo')
10630cc44a9SBram Moolenaar  call assert_equal(1, assert_equalfile('Xone', 'Xtwo'))
10730cc44a9SBram Moolenaar  let xes = repeat('x', 134)
10830cc44a9SBram Moolenaar  call assert_match('difference at byte 234, line 1 after "' .. xes .. 'X" vs "' .. xes .. 'Y"', v:errors[0])
109d96ff165SBram Moolenaar  call remove(v:errors, 0)
110d96ff165SBram Moolenaar
111fb517bacSBram Moolenaar  call assert_equal(1, assert_equalfile('Xone', 'Xtwo', 'a message'))
11230cc44a9SBram Moolenaar  call assert_match("a message: difference at byte 234, line 1 after", v:errors[0])
113fb517bacSBram Moolenaar  call remove(v:errors, 0)
114fb517bacSBram Moolenaar
115d96ff165SBram Moolenaar  call delete('Xone')
116d96ff165SBram Moolenaar  call delete('Xtwo')
117d96ff165SBram Moolenaarendfunc
118d96ff165SBram Moolenaar
119b50e5f56SBram Moolenaarfunc Test_assert_notequal()
120b50e5f56SBram Moolenaar  let n = 4
12165a54649SBram Moolenaar  call assert_equal(0, assert_notequal('foo', n))
122b50e5f56SBram Moolenaar  let s = 'foo'
12365a54649SBram Moolenaar  call assert_equal(0, assert_notequal([1, 2, 3], s))
124b50e5f56SBram Moolenaar
12565a54649SBram Moolenaar  call assert_equal(1, assert_notequal('foo', s))
1265869cf06SBram Moolenaar  call assert_match("Expected not equal to 'foo'", v:errors[0])
127b50e5f56SBram Moolenaar  call remove(v:errors, 0)
12843345546SBram Moolenaarendfunc
1292d820808SBram Moolenaar
13037175409SBram Moolenaarfunc Test_assert_report()
13165a54649SBram Moolenaar  call assert_equal(1, assert_report('something is wrong'))
13237175409SBram Moolenaar  call assert_match('something is wrong', v:errors[0])
13337175409SBram Moolenaar  call remove(v:errors, 0)
134e49fbff3SBram Moolenaar  call assert_equal(1, 'also wrong'->assert_report())
135e49fbff3SBram Moolenaar  call assert_match('also wrong', v:errors[0])
136e49fbff3SBram Moolenaar  call remove(v:errors, 0)
13737175409SBram Moolenaarendfunc
13837175409SBram Moolenaar
139da5dcd93SBram Moolenaarfunc Test_assert_exception()
140da5dcd93SBram Moolenaar  try
141da5dcd93SBram Moolenaar    nocommand
142da5dcd93SBram Moolenaar  catch
14365a54649SBram Moolenaar    call assert_equal(0, assert_exception('E492:'))
144da5dcd93SBram Moolenaar  endtry
145da5dcd93SBram Moolenaar
146da5dcd93SBram Moolenaar  try
147da5dcd93SBram Moolenaar    nocommand
148da5dcd93SBram Moolenaar  catch
149da5dcd93SBram Moolenaar    try
150da5dcd93SBram Moolenaar      " illegal argument, get NULL for error
15165a54649SBram Moolenaar      call assert_equal(1, assert_exception([]))
152da5dcd93SBram Moolenaar    catch
15365a54649SBram Moolenaar      call assert_equal(0, assert_exception('E730:'))
154da5dcd93SBram Moolenaar    endtry
155da5dcd93SBram Moolenaar  endtry
156da5dcd93SBram Moolenaarendfunc
157da5dcd93SBram Moolenaar
158a542c680SBram Moolenaarfunc Test_wrong_error_type()
159a542c680SBram Moolenaar  let save_verrors = v:errors
160a542c680SBram Moolenaar  let v:['errors'] = {'foo': 3}
161a542c680SBram Moolenaar  call assert_equal('yes', 'no')
162a542c680SBram Moolenaar  let verrors = v:errors
163a542c680SBram Moolenaar  let v:errors = save_verrors
164a542c680SBram Moolenaar  call assert_equal(type([]), type(verrors))
165a542c680SBram Moolenaarendfunc
166a542c680SBram Moolenaar
167f1551964SBram Moolenaarfunc Test_compare_fail()
168f1551964SBram Moolenaar  let s:v = {}
169f1551964SBram Moolenaar  let s:x = {"a": s:v}
170f1551964SBram Moolenaar  let s:v["b"] = s:x
171f1551964SBram Moolenaar  let s:w = {"c": s:x, "d": ''}
172f1551964SBram Moolenaar  try
173f1551964SBram Moolenaar    call assert_equal(s:w, '')
174f1551964SBram Moolenaar  catch
17565a54649SBram Moolenaar    call assert_equal(0, assert_exception('E724:'))
176ea6553beSBram Moolenaar    call assert_match("Expected NULL but got ''", v:errors[0])
177f1551964SBram Moolenaar    call remove(v:errors, 0)
178f1551964SBram Moolenaar  endtry
179f1551964SBram Moolenaarendfunc
180f1551964SBram Moolenaar
181ea6553beSBram Moolenaarfunc Test_match()
18265a54649SBram Moolenaar  call assert_equal(0, assert_match('^f.*b.*r$', 'foobar'))
183ea6553beSBram Moolenaar
18465a54649SBram Moolenaar  call assert_equal(1, assert_match('bar.*foo', 'foobar'))
185ea6553beSBram Moolenaar  call assert_match("Pattern 'bar.*foo' does not match 'foobar'", v:errors[0])
186ea6553beSBram Moolenaar  call remove(v:errors, 0)
187ea6553beSBram Moolenaar
18865a54649SBram Moolenaar  call assert_equal(1, assert_match('bar.*foo', 'foobar', 'wrong'))
189ea6553beSBram Moolenaar  call assert_match('wrong', v:errors[0])
190ea6553beSBram Moolenaar  call remove(v:errors, 0)
19124278d24SBram Moolenaar
19224278d24SBram Moolenaar  call assert_equal(1, 'foobar'->assert_match('bar.*foo', 'wrong'))
19324278d24SBram Moolenaar  call assert_match('wrong', v:errors[0])
19424278d24SBram Moolenaar  call remove(v:errors, 0)
195ea6553beSBram Moolenaarendfunc
196ea6553beSBram Moolenaar
197b50e5f56SBram Moolenaarfunc Test_notmatch()
19865a54649SBram Moolenaar  call assert_equal(0, assert_notmatch('foo', 'bar'))
19965a54649SBram Moolenaar  call assert_equal(0, assert_notmatch('^foobar$', 'foobars'))
200b50e5f56SBram Moolenaar
20165a54649SBram Moolenaar  call assert_equal(1, assert_notmatch('foo', 'foobar'))
202b50e5f56SBram Moolenaar  call assert_match("Pattern 'foo' does match 'foobar'", v:errors[0])
203b50e5f56SBram Moolenaar  call remove(v:errors, 0)
20424278d24SBram Moolenaar
20524278d24SBram Moolenaar  call assert_equal(1, 'foobar'->assert_notmatch('foo'))
20624278d24SBram Moolenaar  call assert_match("Pattern 'foo' does match 'foobar'", v:errors[0])
20724278d24SBram Moolenaar  call remove(v:errors, 0)
208b50e5f56SBram Moolenaarendfunc
209b50e5f56SBram Moolenaar
2101abb5026SBram Moolenaarfunc Test_assert_fail_fails()
211*2b6ef856SBram Moolenaar  call assert_equal(1, assert_fails('xxx', 'E12345'))
212*2b6ef856SBram Moolenaar  call assert_match("Expected 'E12345' but got 'E492:", v:errors[0])
2131abb5026SBram Moolenaar  call remove(v:errors, 0)
2141307d1c0SBram Moolenaar
215*2b6ef856SBram Moolenaar  call assert_equal(1, assert_fails('xxx', 'E9876', 'stupid'))
216*2b6ef856SBram Moolenaar  call assert_match("stupid: Expected 'E9876' but got 'E492:", v:errors[0])
2171307d1c0SBram Moolenaar  call remove(v:errors, 0)
2181307d1c0SBram Moolenaar
2191307d1c0SBram Moolenaar  call assert_equal(1, assert_fails('echo', '', 'echo command'))
2201307d1c0SBram Moolenaar  call assert_match("command did not fail: echo command", v:errors[0])
2211307d1c0SBram Moolenaar  call remove(v:errors, 0)
22224278d24SBram Moolenaar
22324278d24SBram Moolenaar  call assert_equal(1, 'echo'->assert_fails('', 'echo command'))
22424278d24SBram Moolenaar  call assert_match("command did not fail: echo command", v:errors[0])
22524278d24SBram Moolenaar  call remove(v:errors, 0)
2261abb5026SBram Moolenaarendfunc
2271abb5026SBram Moolenaar
2287780e5c1SBram Moolenaarfunc Test_assert_fails_in_try_block()
2297780e5c1SBram Moolenaar  try
2307780e5c1SBram Moolenaar    call assert_equal(0, assert_fails('throw "error"'))
2317780e5c1SBram Moolenaar  endtry
2327780e5c1SBram Moolenaarendfunc
2337780e5c1SBram Moolenaar
234b48e96f6SBram Moolenaarfunc Test_assert_beeps()
235b48e96f6SBram Moolenaar  new
23665a54649SBram Moolenaar  call assert_equal(0, assert_beeps('normal h'))
237b48e96f6SBram Moolenaar
23865a54649SBram Moolenaar  call assert_equal(1, assert_beeps('normal 0'))
239b48e96f6SBram Moolenaar  call assert_match("command did not beep: normal 0", v:errors[0])
240b48e96f6SBram Moolenaar  call remove(v:errors, 0)
24124278d24SBram Moolenaar
24224278d24SBram Moolenaar  call assert_equal(0, 'normal h'->assert_beeps())
24324278d24SBram Moolenaar  call assert_equal(1, 'normal 0'->assert_beeps())
24424278d24SBram Moolenaar  call assert_match("command did not beep: normal 0", v:errors[0])
24524278d24SBram Moolenaar  call remove(v:errors, 0)
24624278d24SBram Moolenaar
247b48e96f6SBram Moolenaar  bwipe
248b48e96f6SBram Moolenaarendfunc
249b48e96f6SBram Moolenaar
25061c04493SBram Moolenaarfunc Test_assert_inrange()
25165a54649SBram Moolenaar  call assert_equal(0, assert_inrange(7, 7, 7))
25265a54649SBram Moolenaar  call assert_equal(0, assert_inrange(5, 7, 5))
25365a54649SBram Moolenaar  call assert_equal(0, assert_inrange(5, 7, 6))
25465a54649SBram Moolenaar  call assert_equal(0, assert_inrange(5, 7, 7))
25561c04493SBram Moolenaar
25665a54649SBram Moolenaar  call assert_equal(1, assert_inrange(5, 7, 4))
25761c04493SBram Moolenaar  call assert_match("Expected range 5 - 7, but got 4", v:errors[0])
25861c04493SBram Moolenaar  call remove(v:errors, 0)
25965a54649SBram Moolenaar  call assert_equal(1, assert_inrange(5, 7, 8))
26061c04493SBram Moolenaar  call assert_match("Expected range 5 - 7, but got 8", v:errors[0])
26161c04493SBram Moolenaar  call remove(v:errors, 0)
26234215663SBram Moolenaar
26324278d24SBram Moolenaar  call assert_equal(0, 5->assert_inrange(5, 7))
26424278d24SBram Moolenaar  call assert_equal(0, 7->assert_inrange(5, 7))
26524278d24SBram Moolenaar  call assert_equal(1, 8->assert_inrange(5, 7))
26624278d24SBram Moolenaar  call assert_match("Expected range 5 - 7, but got 8", v:errors[0])
26724278d24SBram Moolenaar  call remove(v:errors, 0)
26824278d24SBram Moolenaar
26934215663SBram Moolenaar  call assert_fails('call assert_inrange(1, 1)', 'E119:')
27038f08e76SBram Moolenaar
27138f08e76SBram Moolenaar  if has('float')
27238f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(7.0, 7, 7))
27338f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(7, 7.0, 7))
27438f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(7, 7, 7.0))
27538f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(5, 7, 5.0))
27638f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(5, 7, 6.0))
27738f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(5, 7, 7.0))
27838f08e76SBram Moolenaar
27938f08e76SBram Moolenaar    call assert_equal(1, assert_inrange(5, 7, 4.0))
28038f08e76SBram Moolenaar    call assert_match("Expected range 5.0 - 7.0, but got 4.0", v:errors[0])
28138f08e76SBram Moolenaar    call remove(v:errors, 0)
28238f08e76SBram Moolenaar    call assert_equal(1, assert_inrange(5, 7, 8.0))
28338f08e76SBram Moolenaar    call assert_match("Expected range 5.0 - 7.0, but got 8.0", v:errors[0])
28438f08e76SBram Moolenaar    call remove(v:errors, 0)
28538f08e76SBram Moolenaar  endif
28661c04493SBram Moolenaarendfunc
287f1551964SBram Moolenaar
288c7b831caSBram Moolenaarfunc Test_assert_with_msg()
289c7b831caSBram Moolenaar  call assert_equal('foo', 'bar', 'testing')
290c7b831caSBram Moolenaar  call assert_match("testing: Expected 'foo' but got 'bar'", v:errors[0])
291c7b831caSBram Moolenaar  call remove(v:errors, 0)
292c7b831caSBram Moolenaarendfunc
293c7b831caSBram Moolenaar
294eb992cb9SBram Moolenaarfunc Test_override()
295eb992cb9SBram Moolenaar  call test_override('char_avail', 1)
296ce90e36fSBram Moolenaar  eval 1->test_override('redraw')
297eb992cb9SBram Moolenaar  call test_override('ALL', 0)
298eb992cb9SBram Moolenaar  call assert_fails("call test_override('xxx', 1)", 'E475')
299eb992cb9SBram Moolenaar  call assert_fails("call test_override('redraw', 'yes')", 'E474')
300eb992cb9SBram Moolenaarendfunc
301eb992cb9SBram Moolenaar
302b0f94c1fSBram Moolenaarfunc Test_mouse_position()
303b0f94c1fSBram Moolenaar  let save_mouse = &mouse
304b0f94c1fSBram Moolenaar  set mouse=a
305b0f94c1fSBram Moolenaar  new
306b0f94c1fSBram Moolenaar  call setline(1, ['line one', 'line two'])
307b0f94c1fSBram Moolenaar  call assert_equal([0, 1, 1, 0], getpos('.'))
308b0f94c1fSBram Moolenaar  call test_setmouse(1, 5)
309b0f94c1fSBram Moolenaar  call feedkeys("\<LeftMouse>", "xt")
310b0f94c1fSBram Moolenaar  call assert_equal([0, 1, 5, 0], getpos('.'))
311b0f94c1fSBram Moolenaar  call test_setmouse(2, 20)
312b0f94c1fSBram Moolenaar  call feedkeys("\<LeftMouse>", "xt")
313b0f94c1fSBram Moolenaar  call assert_equal([0, 2, 8, 0], getpos('.'))
314b0f94c1fSBram Moolenaar  call test_setmouse(5, 1)
315b0f94c1fSBram Moolenaar  call feedkeys("\<LeftMouse>", "xt")
316b0f94c1fSBram Moolenaar  call assert_equal([0, 2, 1, 0], getpos('.'))
317b0f94c1fSBram Moolenaar  bwipe!
318b0f94c1fSBram Moolenaar  let &mouse = save_mouse
319b0f94c1fSBram Moolenaarendfunc
320b0f94c1fSBram Moolenaar
3212d820808SBram Moolenaarfunc Test_user_is_happy()
3222d820808SBram Moolenaar  smile
3232d820808SBram Moolenaar  sleep 300m
3242d820808SBram Moolenaarendfunc
3258903676dSBram Moolenaar
3268903676dSBram Moolenaar" Must be last.
3278903676dSBram Moolenaarfunc Test_zz_quit_detected()
3288903676dSBram Moolenaar  " Verify that if a test function ends Vim the test script detects this.
3298903676dSBram Moolenaar  quit
3308903676dSBram Moolenaarendfunc
331