xref: /vim-8.2.3635/src/testdir/test_assert.vim (revision 7b293c73)
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))
39*7b293c73SBram Moolenaar  call assert_equal(test_null_list(), test_null_list())
40*7b293c73SBram Moolenaar  call assert_equal(test_null_list(), [])
41*7b293c73SBram 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
53d96ff165SBram Moolenaarfunc Test_assert_equalfile()
5465a54649SBram Moolenaar  call assert_equal(1, assert_equalfile('abcabc', 'xyzxyz'))
55d96ff165SBram Moolenaar  call assert_match("E485: Can't read file abcabc", v:errors[0])
56d96ff165SBram Moolenaar  call remove(v:errors, 0)
57d96ff165SBram Moolenaar
58d96ff165SBram Moolenaar  let goodtext = ["one", "two", "three"]
59d96ff165SBram Moolenaar  call writefile(goodtext, 'Xone')
60e49fbff3SBram Moolenaar  call assert_equal(1, 'Xone'->assert_equalfile('xyzxyz'))
61d96ff165SBram Moolenaar  call assert_match("E485: Can't read file xyzxyz", v:errors[0])
62d96ff165SBram Moolenaar  call remove(v:errors, 0)
63d96ff165SBram Moolenaar
64d96ff165SBram Moolenaar  call writefile(goodtext, 'Xtwo')
6565a54649SBram Moolenaar  call assert_equal(0, assert_equalfile('Xone', 'Xtwo'))
66d96ff165SBram Moolenaar
67d96ff165SBram Moolenaar  call writefile([goodtext[0]], 'Xone')
6865a54649SBram Moolenaar  call assert_equal(1, assert_equalfile('Xone', 'Xtwo'))
69d96ff165SBram Moolenaar  call assert_match("first file is shorter", v:errors[0])
70d96ff165SBram Moolenaar  call remove(v:errors, 0)
71d96ff165SBram Moolenaar
72d96ff165SBram Moolenaar  call writefile(goodtext, 'Xone')
73d96ff165SBram Moolenaar  call writefile([goodtext[0]], 'Xtwo')
7465a54649SBram Moolenaar  call assert_equal(1, assert_equalfile('Xone', 'Xtwo'))
75d96ff165SBram Moolenaar  call assert_match("second file is shorter", v:errors[0])
76d96ff165SBram Moolenaar  call remove(v:errors, 0)
77d96ff165SBram Moolenaar
78d96ff165SBram Moolenaar  call writefile(['1234X89'], 'Xone')
79d96ff165SBram Moolenaar  call writefile(['1234Y89'], 'Xtwo')
8065a54649SBram Moolenaar  call assert_equal(1, assert_equalfile('Xone', 'Xtwo'))
81d96ff165SBram Moolenaar  call assert_match("difference at byte 4", v:errors[0])
82d96ff165SBram Moolenaar  call remove(v:errors, 0)
83d96ff165SBram Moolenaar
84d96ff165SBram Moolenaar  call delete('Xone')
85d96ff165SBram Moolenaar  call delete('Xtwo')
86d96ff165SBram Moolenaarendfunc
87d96ff165SBram Moolenaar
88b50e5f56SBram Moolenaarfunc Test_assert_notequal()
89b50e5f56SBram Moolenaar  let n = 4
9065a54649SBram Moolenaar  call assert_equal(0, assert_notequal('foo', n))
91b50e5f56SBram Moolenaar  let s = 'foo'
9265a54649SBram Moolenaar  call assert_equal(0, assert_notequal([1, 2, 3], s))
93b50e5f56SBram Moolenaar
9465a54649SBram Moolenaar  call assert_equal(1, assert_notequal('foo', s))
955869cf06SBram Moolenaar  call assert_match("Expected not equal to 'foo'", v:errors[0])
96b50e5f56SBram Moolenaar  call remove(v:errors, 0)
9743345546SBram Moolenaarendfunc
982d820808SBram Moolenaar
9937175409SBram Moolenaarfunc Test_assert_report()
10065a54649SBram Moolenaar  call assert_equal(1, assert_report('something is wrong'))
10137175409SBram Moolenaar  call assert_match('something is wrong', v:errors[0])
10237175409SBram Moolenaar  call remove(v:errors, 0)
103e49fbff3SBram Moolenaar  call assert_equal(1, 'also wrong'->assert_report())
104e49fbff3SBram Moolenaar  call assert_match('also wrong', v:errors[0])
105e49fbff3SBram Moolenaar  call remove(v:errors, 0)
10637175409SBram Moolenaarendfunc
10737175409SBram Moolenaar
108da5dcd93SBram Moolenaarfunc Test_assert_exception()
109da5dcd93SBram Moolenaar  try
110da5dcd93SBram Moolenaar    nocommand
111da5dcd93SBram Moolenaar  catch
11265a54649SBram Moolenaar    call assert_equal(0, assert_exception('E492:'))
113da5dcd93SBram Moolenaar  endtry
114da5dcd93SBram Moolenaar
115da5dcd93SBram Moolenaar  try
116da5dcd93SBram Moolenaar    nocommand
117da5dcd93SBram Moolenaar  catch
118da5dcd93SBram Moolenaar    try
119da5dcd93SBram Moolenaar      " illegal argument, get NULL for error
12065a54649SBram Moolenaar      call assert_equal(1, assert_exception([]))
121da5dcd93SBram Moolenaar    catch
12265a54649SBram Moolenaar      call assert_equal(0, assert_exception('E730:'))
123da5dcd93SBram Moolenaar    endtry
124da5dcd93SBram Moolenaar  endtry
125da5dcd93SBram Moolenaarendfunc
126da5dcd93SBram Moolenaar
127a542c680SBram Moolenaarfunc Test_wrong_error_type()
128a542c680SBram Moolenaar  let save_verrors = v:errors
129a542c680SBram Moolenaar  let v:['errors'] = {'foo': 3}
130a542c680SBram Moolenaar  call assert_equal('yes', 'no')
131a542c680SBram Moolenaar  let verrors = v:errors
132a542c680SBram Moolenaar  let v:errors = save_verrors
133a542c680SBram Moolenaar  call assert_equal(type([]), type(verrors))
134a542c680SBram Moolenaarendfunc
135a542c680SBram Moolenaar
136f1551964SBram Moolenaarfunc Test_compare_fail()
137f1551964SBram Moolenaar  let s:v = {}
138f1551964SBram Moolenaar  let s:x = {"a": s:v}
139f1551964SBram Moolenaar  let s:v["b"] = s:x
140f1551964SBram Moolenaar  let s:w = {"c": s:x, "d": ''}
141f1551964SBram Moolenaar  try
142f1551964SBram Moolenaar    call assert_equal(s:w, '')
143f1551964SBram Moolenaar  catch
14465a54649SBram Moolenaar    call assert_equal(0, assert_exception('E724:'))
145ea6553beSBram Moolenaar    call assert_match("Expected NULL but got ''", v:errors[0])
146f1551964SBram Moolenaar    call remove(v:errors, 0)
147f1551964SBram Moolenaar  endtry
148f1551964SBram Moolenaarendfunc
149f1551964SBram Moolenaar
150ea6553beSBram Moolenaarfunc Test_match()
15165a54649SBram Moolenaar  call assert_equal(0, assert_match('^f.*b.*r$', 'foobar'))
152ea6553beSBram Moolenaar
15365a54649SBram Moolenaar  call assert_equal(1, assert_match('bar.*foo', 'foobar'))
154ea6553beSBram Moolenaar  call assert_match("Pattern 'bar.*foo' does not match 'foobar'", v:errors[0])
155ea6553beSBram Moolenaar  call remove(v:errors, 0)
156ea6553beSBram Moolenaar
15765a54649SBram Moolenaar  call assert_equal(1, assert_match('bar.*foo', 'foobar', 'wrong'))
158ea6553beSBram Moolenaar  call assert_match('wrong', v:errors[0])
159ea6553beSBram Moolenaar  call remove(v:errors, 0)
16024278d24SBram Moolenaar
16124278d24SBram Moolenaar  call assert_equal(1, 'foobar'->assert_match('bar.*foo', 'wrong'))
16224278d24SBram Moolenaar  call assert_match('wrong', v:errors[0])
16324278d24SBram Moolenaar  call remove(v:errors, 0)
164ea6553beSBram Moolenaarendfunc
165ea6553beSBram Moolenaar
166b50e5f56SBram Moolenaarfunc Test_notmatch()
16765a54649SBram Moolenaar  call assert_equal(0, assert_notmatch('foo', 'bar'))
16865a54649SBram Moolenaar  call assert_equal(0, assert_notmatch('^foobar$', 'foobars'))
169b50e5f56SBram Moolenaar
17065a54649SBram Moolenaar  call assert_equal(1, assert_notmatch('foo', 'foobar'))
171b50e5f56SBram Moolenaar  call assert_match("Pattern 'foo' does match 'foobar'", v:errors[0])
172b50e5f56SBram Moolenaar  call remove(v:errors, 0)
17324278d24SBram Moolenaar
17424278d24SBram Moolenaar  call assert_equal(1, 'foobar'->assert_notmatch('foo'))
17524278d24SBram Moolenaar  call assert_match("Pattern 'foo' does match 'foobar'", v:errors[0])
17624278d24SBram Moolenaar  call remove(v:errors, 0)
177b50e5f56SBram Moolenaarendfunc
178b50e5f56SBram Moolenaar
1791abb5026SBram Moolenaarfunc Test_assert_fail_fails()
18065a54649SBram Moolenaar  call assert_equal(1, assert_fails('xxx', {}))
181ea6553beSBram Moolenaar  call assert_match("Expected {} but got 'E731:", v:errors[0])
1821abb5026SBram Moolenaar  call remove(v:errors, 0)
1831307d1c0SBram Moolenaar
1841307d1c0SBram Moolenaar  call assert_equal(1, assert_fails('xxx', {}, 'stupid'))
1851307d1c0SBram Moolenaar  call assert_match("stupid: Expected {} but got 'E731:", v:errors[0])
1861307d1c0SBram Moolenaar  call remove(v:errors, 0)
1871307d1c0SBram Moolenaar
1881307d1c0SBram Moolenaar  call assert_equal(1, assert_fails('echo', '', 'echo command'))
1891307d1c0SBram Moolenaar  call assert_match("command did not fail: echo command", v:errors[0])
1901307d1c0SBram Moolenaar  call remove(v:errors, 0)
19124278d24SBram Moolenaar
19224278d24SBram Moolenaar  call assert_equal(1, 'echo'->assert_fails('', 'echo command'))
19324278d24SBram Moolenaar  call assert_match("command did not fail: echo command", v:errors[0])
19424278d24SBram Moolenaar  call remove(v:errors, 0)
1951abb5026SBram Moolenaarendfunc
1961abb5026SBram Moolenaar
1977780e5c1SBram Moolenaarfunc Test_assert_fails_in_try_block()
1987780e5c1SBram Moolenaar  try
1997780e5c1SBram Moolenaar    call assert_equal(0, assert_fails('throw "error"'))
2007780e5c1SBram Moolenaar  endtry
2017780e5c1SBram Moolenaarendfunc
2027780e5c1SBram Moolenaar
203b48e96f6SBram Moolenaarfunc Test_assert_beeps()
204b48e96f6SBram Moolenaar  new
20565a54649SBram Moolenaar  call assert_equal(0, assert_beeps('normal h'))
206b48e96f6SBram Moolenaar
20765a54649SBram Moolenaar  call assert_equal(1, assert_beeps('normal 0'))
208b48e96f6SBram Moolenaar  call assert_match("command did not beep: normal 0", v:errors[0])
209b48e96f6SBram Moolenaar  call remove(v:errors, 0)
21024278d24SBram Moolenaar
21124278d24SBram Moolenaar  call assert_equal(0, 'normal h'->assert_beeps())
21224278d24SBram Moolenaar  call assert_equal(1, 'normal 0'->assert_beeps())
21324278d24SBram Moolenaar  call assert_match("command did not beep: normal 0", v:errors[0])
21424278d24SBram Moolenaar  call remove(v:errors, 0)
21524278d24SBram Moolenaar
216b48e96f6SBram Moolenaar  bwipe
217b48e96f6SBram Moolenaarendfunc
218b48e96f6SBram Moolenaar
21961c04493SBram Moolenaarfunc Test_assert_inrange()
22065a54649SBram Moolenaar  call assert_equal(0, assert_inrange(7, 7, 7))
22165a54649SBram Moolenaar  call assert_equal(0, assert_inrange(5, 7, 5))
22265a54649SBram Moolenaar  call assert_equal(0, assert_inrange(5, 7, 6))
22365a54649SBram Moolenaar  call assert_equal(0, assert_inrange(5, 7, 7))
22461c04493SBram Moolenaar
22565a54649SBram Moolenaar  call assert_equal(1, assert_inrange(5, 7, 4))
22661c04493SBram Moolenaar  call assert_match("Expected range 5 - 7, but got 4", v:errors[0])
22761c04493SBram Moolenaar  call remove(v:errors, 0)
22865a54649SBram Moolenaar  call assert_equal(1, assert_inrange(5, 7, 8))
22961c04493SBram Moolenaar  call assert_match("Expected range 5 - 7, but got 8", v:errors[0])
23061c04493SBram Moolenaar  call remove(v:errors, 0)
23134215663SBram Moolenaar
23224278d24SBram Moolenaar  call assert_equal(0, 5->assert_inrange(5, 7))
23324278d24SBram Moolenaar  call assert_equal(0, 7->assert_inrange(5, 7))
23424278d24SBram Moolenaar  call assert_equal(1, 8->assert_inrange(5, 7))
23524278d24SBram Moolenaar  call assert_match("Expected range 5 - 7, but got 8", v:errors[0])
23624278d24SBram Moolenaar  call remove(v:errors, 0)
23724278d24SBram Moolenaar
23834215663SBram Moolenaar  call assert_fails('call assert_inrange(1, 1)', 'E119:')
23938f08e76SBram Moolenaar
24038f08e76SBram Moolenaar  if has('float')
24138f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(7.0, 7, 7))
24238f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(7, 7.0, 7))
24338f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(7, 7, 7.0))
24438f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(5, 7, 5.0))
24538f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(5, 7, 6.0))
24638f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(5, 7, 7.0))
24738f08e76SBram Moolenaar
24838f08e76SBram Moolenaar    call assert_equal(1, assert_inrange(5, 7, 4.0))
24938f08e76SBram Moolenaar    call assert_match("Expected range 5.0 - 7.0, but got 4.0", v:errors[0])
25038f08e76SBram Moolenaar    call remove(v:errors, 0)
25138f08e76SBram Moolenaar    call assert_equal(1, assert_inrange(5, 7, 8.0))
25238f08e76SBram Moolenaar    call assert_match("Expected range 5.0 - 7.0, but got 8.0", v:errors[0])
25338f08e76SBram Moolenaar    call remove(v:errors, 0)
25438f08e76SBram Moolenaar  endif
25561c04493SBram Moolenaarendfunc
256f1551964SBram Moolenaar
257c7b831caSBram Moolenaarfunc Test_assert_with_msg()
258c7b831caSBram Moolenaar  call assert_equal('foo', 'bar', 'testing')
259c7b831caSBram Moolenaar  call assert_match("testing: Expected 'foo' but got 'bar'", v:errors[0])
260c7b831caSBram Moolenaar  call remove(v:errors, 0)
261c7b831caSBram Moolenaarendfunc
262c7b831caSBram Moolenaar
263eb992cb9SBram Moolenaarfunc Test_override()
264eb992cb9SBram Moolenaar  call test_override('char_avail', 1)
265ce90e36fSBram Moolenaar  eval 1->test_override('redraw')
266eb992cb9SBram Moolenaar  call test_override('ALL', 0)
267eb992cb9SBram Moolenaar  call assert_fails("call test_override('xxx', 1)", 'E475')
268eb992cb9SBram Moolenaar  call assert_fails("call test_override('redraw', 'yes')", 'E474')
269eb992cb9SBram Moolenaarendfunc
270eb992cb9SBram Moolenaar
271b0f94c1fSBram Moolenaarfunc Test_mouse_position()
272b0f94c1fSBram Moolenaar  let save_mouse = &mouse
273b0f94c1fSBram Moolenaar  set mouse=a
274b0f94c1fSBram Moolenaar  new
275b0f94c1fSBram Moolenaar  call setline(1, ['line one', 'line two'])
276b0f94c1fSBram Moolenaar  call assert_equal([0, 1, 1, 0], getpos('.'))
277b0f94c1fSBram Moolenaar  call test_setmouse(1, 5)
278b0f94c1fSBram Moolenaar  call feedkeys("\<LeftMouse>", "xt")
279b0f94c1fSBram Moolenaar  call assert_equal([0, 1, 5, 0], getpos('.'))
280b0f94c1fSBram Moolenaar  call test_setmouse(2, 20)
281b0f94c1fSBram Moolenaar  call feedkeys("\<LeftMouse>", "xt")
282b0f94c1fSBram Moolenaar  call assert_equal([0, 2, 8, 0], getpos('.'))
283b0f94c1fSBram Moolenaar  call test_setmouse(5, 1)
284b0f94c1fSBram Moolenaar  call feedkeys("\<LeftMouse>", "xt")
285b0f94c1fSBram Moolenaar  call assert_equal([0, 2, 1, 0], getpos('.'))
286b0f94c1fSBram Moolenaar  bwipe!
287b0f94c1fSBram Moolenaar  let &mouse = save_mouse
288b0f94c1fSBram Moolenaarendfunc
289b0f94c1fSBram Moolenaar
2902d820808SBram Moolenaarfunc Test_user_is_happy()
2912d820808SBram Moolenaar  smile
2922d820808SBram Moolenaar  sleep 300m
2932d820808SBram Moolenaarendfunc
2948903676dSBram Moolenaar
2958903676dSBram Moolenaar" Must be last.
2968903676dSBram Moolenaarfunc Test_zz_quit_detected()
2978903676dSBram Moolenaar  " Verify that if a test function ends Vim the test script detects this.
2988903676dSBram Moolenaar  quit
2998903676dSBram Moolenaarendfunc
300