xref: /vim-8.2.3635/src/testdir/test_assert.vim (revision fb517bac)
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
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
84*fb517bacSBram Moolenaar  call assert_equal(1, assert_equalfile('Xone', 'Xtwo', 'a message'))
85*fb517bacSBram Moolenaar  call assert_match("a message: difference at byte 4", v:errors[0])
86*fb517bacSBram Moolenaar  call remove(v:errors, 0)
87*fb517bacSBram Moolenaar
88d96ff165SBram Moolenaar  call delete('Xone')
89d96ff165SBram Moolenaar  call delete('Xtwo')
90d96ff165SBram Moolenaarendfunc
91d96ff165SBram Moolenaar
92b50e5f56SBram Moolenaarfunc Test_assert_notequal()
93b50e5f56SBram Moolenaar  let n = 4
9465a54649SBram Moolenaar  call assert_equal(0, assert_notequal('foo', n))
95b50e5f56SBram Moolenaar  let s = 'foo'
9665a54649SBram Moolenaar  call assert_equal(0, assert_notequal([1, 2, 3], s))
97b50e5f56SBram Moolenaar
9865a54649SBram Moolenaar  call assert_equal(1, assert_notequal('foo', s))
995869cf06SBram Moolenaar  call assert_match("Expected not equal to 'foo'", v:errors[0])
100b50e5f56SBram Moolenaar  call remove(v:errors, 0)
10143345546SBram Moolenaarendfunc
1022d820808SBram Moolenaar
10337175409SBram Moolenaarfunc Test_assert_report()
10465a54649SBram Moolenaar  call assert_equal(1, assert_report('something is wrong'))
10537175409SBram Moolenaar  call assert_match('something is wrong', v:errors[0])
10637175409SBram Moolenaar  call remove(v:errors, 0)
107e49fbff3SBram Moolenaar  call assert_equal(1, 'also wrong'->assert_report())
108e49fbff3SBram Moolenaar  call assert_match('also wrong', v:errors[0])
109e49fbff3SBram Moolenaar  call remove(v:errors, 0)
11037175409SBram Moolenaarendfunc
11137175409SBram Moolenaar
112da5dcd93SBram Moolenaarfunc Test_assert_exception()
113da5dcd93SBram Moolenaar  try
114da5dcd93SBram Moolenaar    nocommand
115da5dcd93SBram Moolenaar  catch
11665a54649SBram Moolenaar    call assert_equal(0, assert_exception('E492:'))
117da5dcd93SBram Moolenaar  endtry
118da5dcd93SBram Moolenaar
119da5dcd93SBram Moolenaar  try
120da5dcd93SBram Moolenaar    nocommand
121da5dcd93SBram Moolenaar  catch
122da5dcd93SBram Moolenaar    try
123da5dcd93SBram Moolenaar      " illegal argument, get NULL for error
12465a54649SBram Moolenaar      call assert_equal(1, assert_exception([]))
125da5dcd93SBram Moolenaar    catch
12665a54649SBram Moolenaar      call assert_equal(0, assert_exception('E730:'))
127da5dcd93SBram Moolenaar    endtry
128da5dcd93SBram Moolenaar  endtry
129da5dcd93SBram Moolenaarendfunc
130da5dcd93SBram Moolenaar
131a542c680SBram Moolenaarfunc Test_wrong_error_type()
132a542c680SBram Moolenaar  let save_verrors = v:errors
133a542c680SBram Moolenaar  let v:['errors'] = {'foo': 3}
134a542c680SBram Moolenaar  call assert_equal('yes', 'no')
135a542c680SBram Moolenaar  let verrors = v:errors
136a542c680SBram Moolenaar  let v:errors = save_verrors
137a542c680SBram Moolenaar  call assert_equal(type([]), type(verrors))
138a542c680SBram Moolenaarendfunc
139a542c680SBram Moolenaar
140f1551964SBram Moolenaarfunc Test_compare_fail()
141f1551964SBram Moolenaar  let s:v = {}
142f1551964SBram Moolenaar  let s:x = {"a": s:v}
143f1551964SBram Moolenaar  let s:v["b"] = s:x
144f1551964SBram Moolenaar  let s:w = {"c": s:x, "d": ''}
145f1551964SBram Moolenaar  try
146f1551964SBram Moolenaar    call assert_equal(s:w, '')
147f1551964SBram Moolenaar  catch
14865a54649SBram Moolenaar    call assert_equal(0, assert_exception('E724:'))
149ea6553beSBram Moolenaar    call assert_match("Expected NULL but got ''", v:errors[0])
150f1551964SBram Moolenaar    call remove(v:errors, 0)
151f1551964SBram Moolenaar  endtry
152f1551964SBram Moolenaarendfunc
153f1551964SBram Moolenaar
154ea6553beSBram Moolenaarfunc Test_match()
15565a54649SBram Moolenaar  call assert_equal(0, assert_match('^f.*b.*r$', 'foobar'))
156ea6553beSBram Moolenaar
15765a54649SBram Moolenaar  call assert_equal(1, assert_match('bar.*foo', 'foobar'))
158ea6553beSBram Moolenaar  call assert_match("Pattern 'bar.*foo' does not match 'foobar'", v:errors[0])
159ea6553beSBram Moolenaar  call remove(v:errors, 0)
160ea6553beSBram Moolenaar
16165a54649SBram Moolenaar  call assert_equal(1, assert_match('bar.*foo', 'foobar', 'wrong'))
162ea6553beSBram Moolenaar  call assert_match('wrong', v:errors[0])
163ea6553beSBram Moolenaar  call remove(v:errors, 0)
16424278d24SBram Moolenaar
16524278d24SBram Moolenaar  call assert_equal(1, 'foobar'->assert_match('bar.*foo', 'wrong'))
16624278d24SBram Moolenaar  call assert_match('wrong', v:errors[0])
16724278d24SBram Moolenaar  call remove(v:errors, 0)
168ea6553beSBram Moolenaarendfunc
169ea6553beSBram Moolenaar
170b50e5f56SBram Moolenaarfunc Test_notmatch()
17165a54649SBram Moolenaar  call assert_equal(0, assert_notmatch('foo', 'bar'))
17265a54649SBram Moolenaar  call assert_equal(0, assert_notmatch('^foobar$', 'foobars'))
173b50e5f56SBram Moolenaar
17465a54649SBram Moolenaar  call assert_equal(1, assert_notmatch('foo', 'foobar'))
175b50e5f56SBram Moolenaar  call assert_match("Pattern 'foo' does match 'foobar'", v:errors[0])
176b50e5f56SBram Moolenaar  call remove(v:errors, 0)
17724278d24SBram Moolenaar
17824278d24SBram Moolenaar  call assert_equal(1, 'foobar'->assert_notmatch('foo'))
17924278d24SBram Moolenaar  call assert_match("Pattern 'foo' does match 'foobar'", v:errors[0])
18024278d24SBram Moolenaar  call remove(v:errors, 0)
181b50e5f56SBram Moolenaarendfunc
182b50e5f56SBram Moolenaar
1831abb5026SBram Moolenaarfunc Test_assert_fail_fails()
18465a54649SBram Moolenaar  call assert_equal(1, assert_fails('xxx', {}))
185ea6553beSBram Moolenaar  call assert_match("Expected {} but got 'E731:", v:errors[0])
1861abb5026SBram Moolenaar  call remove(v:errors, 0)
1871307d1c0SBram Moolenaar
1881307d1c0SBram Moolenaar  call assert_equal(1, assert_fails('xxx', {}, 'stupid'))
1891307d1c0SBram Moolenaar  call assert_match("stupid: Expected {} but got 'E731:", v:errors[0])
1901307d1c0SBram Moolenaar  call remove(v:errors, 0)
1911307d1c0SBram Moolenaar
1921307d1c0SBram Moolenaar  call assert_equal(1, assert_fails('echo', '', 'echo command'))
1931307d1c0SBram Moolenaar  call assert_match("command did not fail: echo command", v:errors[0])
1941307d1c0SBram Moolenaar  call remove(v:errors, 0)
19524278d24SBram Moolenaar
19624278d24SBram Moolenaar  call assert_equal(1, 'echo'->assert_fails('', 'echo command'))
19724278d24SBram Moolenaar  call assert_match("command did not fail: echo command", v:errors[0])
19824278d24SBram Moolenaar  call remove(v:errors, 0)
1991abb5026SBram Moolenaarendfunc
2001abb5026SBram Moolenaar
2017780e5c1SBram Moolenaarfunc Test_assert_fails_in_try_block()
2027780e5c1SBram Moolenaar  try
2037780e5c1SBram Moolenaar    call assert_equal(0, assert_fails('throw "error"'))
2047780e5c1SBram Moolenaar  endtry
2057780e5c1SBram Moolenaarendfunc
2067780e5c1SBram Moolenaar
207b48e96f6SBram Moolenaarfunc Test_assert_beeps()
208b48e96f6SBram Moolenaar  new
20965a54649SBram Moolenaar  call assert_equal(0, assert_beeps('normal h'))
210b48e96f6SBram Moolenaar
21165a54649SBram Moolenaar  call assert_equal(1, assert_beeps('normal 0'))
212b48e96f6SBram Moolenaar  call assert_match("command did not beep: normal 0", v:errors[0])
213b48e96f6SBram Moolenaar  call remove(v:errors, 0)
21424278d24SBram Moolenaar
21524278d24SBram Moolenaar  call assert_equal(0, 'normal h'->assert_beeps())
21624278d24SBram Moolenaar  call assert_equal(1, 'normal 0'->assert_beeps())
21724278d24SBram Moolenaar  call assert_match("command did not beep: normal 0", v:errors[0])
21824278d24SBram Moolenaar  call remove(v:errors, 0)
21924278d24SBram Moolenaar
220b48e96f6SBram Moolenaar  bwipe
221b48e96f6SBram Moolenaarendfunc
222b48e96f6SBram Moolenaar
22361c04493SBram Moolenaarfunc Test_assert_inrange()
22465a54649SBram Moolenaar  call assert_equal(0, assert_inrange(7, 7, 7))
22565a54649SBram Moolenaar  call assert_equal(0, assert_inrange(5, 7, 5))
22665a54649SBram Moolenaar  call assert_equal(0, assert_inrange(5, 7, 6))
22765a54649SBram Moolenaar  call assert_equal(0, assert_inrange(5, 7, 7))
22861c04493SBram Moolenaar
22965a54649SBram Moolenaar  call assert_equal(1, assert_inrange(5, 7, 4))
23061c04493SBram Moolenaar  call assert_match("Expected range 5 - 7, but got 4", v:errors[0])
23161c04493SBram Moolenaar  call remove(v:errors, 0)
23265a54649SBram Moolenaar  call assert_equal(1, assert_inrange(5, 7, 8))
23361c04493SBram Moolenaar  call assert_match("Expected range 5 - 7, but got 8", v:errors[0])
23461c04493SBram Moolenaar  call remove(v:errors, 0)
23534215663SBram Moolenaar
23624278d24SBram Moolenaar  call assert_equal(0, 5->assert_inrange(5, 7))
23724278d24SBram Moolenaar  call assert_equal(0, 7->assert_inrange(5, 7))
23824278d24SBram Moolenaar  call assert_equal(1, 8->assert_inrange(5, 7))
23924278d24SBram Moolenaar  call assert_match("Expected range 5 - 7, but got 8", v:errors[0])
24024278d24SBram Moolenaar  call remove(v:errors, 0)
24124278d24SBram Moolenaar
24234215663SBram Moolenaar  call assert_fails('call assert_inrange(1, 1)', 'E119:')
24338f08e76SBram Moolenaar
24438f08e76SBram Moolenaar  if has('float')
24538f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(7.0, 7, 7))
24638f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(7, 7.0, 7))
24738f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(7, 7, 7.0))
24838f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(5, 7, 5.0))
24938f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(5, 7, 6.0))
25038f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(5, 7, 7.0))
25138f08e76SBram Moolenaar
25238f08e76SBram Moolenaar    call assert_equal(1, assert_inrange(5, 7, 4.0))
25338f08e76SBram Moolenaar    call assert_match("Expected range 5.0 - 7.0, but got 4.0", v:errors[0])
25438f08e76SBram Moolenaar    call remove(v:errors, 0)
25538f08e76SBram Moolenaar    call assert_equal(1, assert_inrange(5, 7, 8.0))
25638f08e76SBram Moolenaar    call assert_match("Expected range 5.0 - 7.0, but got 8.0", v:errors[0])
25738f08e76SBram Moolenaar    call remove(v:errors, 0)
25838f08e76SBram Moolenaar  endif
25961c04493SBram Moolenaarendfunc
260f1551964SBram Moolenaar
261c7b831caSBram Moolenaarfunc Test_assert_with_msg()
262c7b831caSBram Moolenaar  call assert_equal('foo', 'bar', 'testing')
263c7b831caSBram Moolenaar  call assert_match("testing: Expected 'foo' but got 'bar'", v:errors[0])
264c7b831caSBram Moolenaar  call remove(v:errors, 0)
265c7b831caSBram Moolenaarendfunc
266c7b831caSBram Moolenaar
267eb992cb9SBram Moolenaarfunc Test_override()
268eb992cb9SBram Moolenaar  call test_override('char_avail', 1)
269ce90e36fSBram Moolenaar  eval 1->test_override('redraw')
270eb992cb9SBram Moolenaar  call test_override('ALL', 0)
271eb992cb9SBram Moolenaar  call assert_fails("call test_override('xxx', 1)", 'E475')
272eb992cb9SBram Moolenaar  call assert_fails("call test_override('redraw', 'yes')", 'E474')
273eb992cb9SBram Moolenaarendfunc
274eb992cb9SBram Moolenaar
275b0f94c1fSBram Moolenaarfunc Test_mouse_position()
276b0f94c1fSBram Moolenaar  let save_mouse = &mouse
277b0f94c1fSBram Moolenaar  set mouse=a
278b0f94c1fSBram Moolenaar  new
279b0f94c1fSBram Moolenaar  call setline(1, ['line one', 'line two'])
280b0f94c1fSBram Moolenaar  call assert_equal([0, 1, 1, 0], getpos('.'))
281b0f94c1fSBram Moolenaar  call test_setmouse(1, 5)
282b0f94c1fSBram Moolenaar  call feedkeys("\<LeftMouse>", "xt")
283b0f94c1fSBram Moolenaar  call assert_equal([0, 1, 5, 0], getpos('.'))
284b0f94c1fSBram Moolenaar  call test_setmouse(2, 20)
285b0f94c1fSBram Moolenaar  call feedkeys("\<LeftMouse>", "xt")
286b0f94c1fSBram Moolenaar  call assert_equal([0, 2, 8, 0], getpos('.'))
287b0f94c1fSBram Moolenaar  call test_setmouse(5, 1)
288b0f94c1fSBram Moolenaar  call feedkeys("\<LeftMouse>", "xt")
289b0f94c1fSBram Moolenaar  call assert_equal([0, 2, 1, 0], getpos('.'))
290b0f94c1fSBram Moolenaar  bwipe!
291b0f94c1fSBram Moolenaar  let &mouse = save_mouse
292b0f94c1fSBram Moolenaarendfunc
293b0f94c1fSBram Moolenaar
2942d820808SBram Moolenaarfunc Test_user_is_happy()
2952d820808SBram Moolenaar  smile
2962d820808SBram Moolenaar  sleep 300m
2972d820808SBram Moolenaarendfunc
2988903676dSBram Moolenaar
2998903676dSBram Moolenaar" Must be last.
3008903676dSBram Moolenaarfunc Test_zz_quit_detected()
3018903676dSBram Moolenaar  " Verify that if a test function ends Vim the test script detects this.
3028903676dSBram Moolenaar  quit
3038903676dSBram Moolenaarendfunc
304