xref: /vim-8.2.3635/src/testdir/test_assert.vim (revision e49fbff3)
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))
39b50e5f56SBram Moolenaar
40b50e5f56SBram Moolenaar  let s = 'foo'
4165a54649SBram Moolenaar  call assert_equal(1, assert_equal('bar', s))
42b50e5f56SBram Moolenaar  call assert_match("Expected 'bar' but got 'foo'", v:errors[0])
43b50e5f56SBram Moolenaar  call remove(v:errors, 0)
4486576712SBram Moolenaar
4586576712SBram Moolenaar  call assert_equal('XxxxxxxxxxxxxxxxxxxxxxX', 'XyyyyyyyyyyyyyyyyyyyyyyyyyX')
4686576712SBram Moolenaar  call assert_match("Expected 'X\\\\\\[x occurs 21 times]X' but got 'X\\\\\\[y occurs 25 times]X'", v:errors[0])
4786576712SBram Moolenaar  call remove(v:errors, 0)
48b50e5f56SBram Moolenaarendfunc
49b50e5f56SBram Moolenaar
50d96ff165SBram Moolenaarfunc Test_assert_equalfile()
5165a54649SBram Moolenaar  call assert_equal(1, assert_equalfile('abcabc', 'xyzxyz'))
52d96ff165SBram Moolenaar  call assert_match("E485: Can't read file abcabc", v:errors[0])
53d96ff165SBram Moolenaar  call remove(v:errors, 0)
54d96ff165SBram Moolenaar
55d96ff165SBram Moolenaar  let goodtext = ["one", "two", "three"]
56d96ff165SBram Moolenaar  call writefile(goodtext, 'Xone')
57*e49fbff3SBram Moolenaar  call assert_equal(1, 'Xone'->assert_equalfile('xyzxyz'))
58d96ff165SBram Moolenaar  call assert_match("E485: Can't read file xyzxyz", v:errors[0])
59d96ff165SBram Moolenaar  call remove(v:errors, 0)
60d96ff165SBram Moolenaar
61d96ff165SBram Moolenaar  call writefile(goodtext, 'Xtwo')
6265a54649SBram Moolenaar  call assert_equal(0, assert_equalfile('Xone', 'Xtwo'))
63d96ff165SBram Moolenaar
64d96ff165SBram Moolenaar  call writefile([goodtext[0]], 'Xone')
6565a54649SBram Moolenaar  call assert_equal(1, assert_equalfile('Xone', 'Xtwo'))
66d96ff165SBram Moolenaar  call assert_match("first file is shorter", v:errors[0])
67d96ff165SBram Moolenaar  call remove(v:errors, 0)
68d96ff165SBram Moolenaar
69d96ff165SBram Moolenaar  call writefile(goodtext, 'Xone')
70d96ff165SBram Moolenaar  call writefile([goodtext[0]], 'Xtwo')
7165a54649SBram Moolenaar  call assert_equal(1, assert_equalfile('Xone', 'Xtwo'))
72d96ff165SBram Moolenaar  call assert_match("second file is shorter", v:errors[0])
73d96ff165SBram Moolenaar  call remove(v:errors, 0)
74d96ff165SBram Moolenaar
75d96ff165SBram Moolenaar  call writefile(['1234X89'], 'Xone')
76d96ff165SBram Moolenaar  call writefile(['1234Y89'], 'Xtwo')
7765a54649SBram Moolenaar  call assert_equal(1, assert_equalfile('Xone', 'Xtwo'))
78d96ff165SBram Moolenaar  call assert_match("difference at byte 4", v:errors[0])
79d96ff165SBram Moolenaar  call remove(v:errors, 0)
80d96ff165SBram Moolenaar
81d96ff165SBram Moolenaar  call delete('Xone')
82d96ff165SBram Moolenaar  call delete('Xtwo')
83d96ff165SBram Moolenaarendfunc
84d96ff165SBram Moolenaar
85b50e5f56SBram Moolenaarfunc Test_assert_notequal()
86b50e5f56SBram Moolenaar  let n = 4
8765a54649SBram Moolenaar  call assert_equal(0, assert_notequal('foo', n))
88b50e5f56SBram Moolenaar  let s = 'foo'
8965a54649SBram Moolenaar  call assert_equal(0, assert_notequal([1, 2, 3], s))
90b50e5f56SBram Moolenaar
9165a54649SBram Moolenaar  call assert_equal(1, assert_notequal('foo', s))
925869cf06SBram Moolenaar  call assert_match("Expected not equal to 'foo'", v:errors[0])
93b50e5f56SBram Moolenaar  call remove(v:errors, 0)
9443345546SBram Moolenaarendfunc
952d820808SBram Moolenaar
9637175409SBram Moolenaarfunc Test_assert_report()
9765a54649SBram Moolenaar  call assert_equal(1, assert_report('something is wrong'))
9837175409SBram Moolenaar  call assert_match('something is wrong', v:errors[0])
9937175409SBram Moolenaar  call remove(v:errors, 0)
100*e49fbff3SBram Moolenaar  call assert_equal(1, 'also wrong'->assert_report())
101*e49fbff3SBram Moolenaar  call assert_match('also wrong', v:errors[0])
102*e49fbff3SBram Moolenaar  call remove(v:errors, 0)
10337175409SBram Moolenaarendfunc
10437175409SBram Moolenaar
105da5dcd93SBram Moolenaarfunc Test_assert_exception()
106da5dcd93SBram Moolenaar  try
107da5dcd93SBram Moolenaar    nocommand
108da5dcd93SBram Moolenaar  catch
10965a54649SBram Moolenaar    call assert_equal(0, assert_exception('E492:'))
110da5dcd93SBram Moolenaar  endtry
111da5dcd93SBram Moolenaar
112da5dcd93SBram Moolenaar  try
113da5dcd93SBram Moolenaar    nocommand
114da5dcd93SBram Moolenaar  catch
115da5dcd93SBram Moolenaar    try
116da5dcd93SBram Moolenaar      " illegal argument, get NULL for error
11765a54649SBram Moolenaar      call assert_equal(1, assert_exception([]))
118da5dcd93SBram Moolenaar    catch
11965a54649SBram Moolenaar      call assert_equal(0, assert_exception('E730:'))
120da5dcd93SBram Moolenaar    endtry
121da5dcd93SBram Moolenaar  endtry
122da5dcd93SBram Moolenaarendfunc
123da5dcd93SBram Moolenaar
124a542c680SBram Moolenaarfunc Test_wrong_error_type()
125a542c680SBram Moolenaar  let save_verrors = v:errors
126a542c680SBram Moolenaar  let v:['errors'] = {'foo': 3}
127a542c680SBram Moolenaar  call assert_equal('yes', 'no')
128a542c680SBram Moolenaar  let verrors = v:errors
129a542c680SBram Moolenaar  let v:errors = save_verrors
130a542c680SBram Moolenaar  call assert_equal(type([]), type(verrors))
131a542c680SBram Moolenaarendfunc
132a542c680SBram Moolenaar
133f1551964SBram Moolenaarfunc Test_compare_fail()
134f1551964SBram Moolenaar  let s:v = {}
135f1551964SBram Moolenaar  let s:x = {"a": s:v}
136f1551964SBram Moolenaar  let s:v["b"] = s:x
137f1551964SBram Moolenaar  let s:w = {"c": s:x, "d": ''}
138f1551964SBram Moolenaar  try
139f1551964SBram Moolenaar    call assert_equal(s:w, '')
140f1551964SBram Moolenaar  catch
14165a54649SBram Moolenaar    call assert_equal(0, assert_exception('E724:'))
142ea6553beSBram Moolenaar    call assert_match("Expected NULL but got ''", v:errors[0])
143f1551964SBram Moolenaar    call remove(v:errors, 0)
144f1551964SBram Moolenaar  endtry
145f1551964SBram Moolenaarendfunc
146f1551964SBram Moolenaar
147ea6553beSBram Moolenaarfunc Test_match()
14865a54649SBram Moolenaar  call assert_equal(0, assert_match('^f.*b.*r$', 'foobar'))
149ea6553beSBram Moolenaar
15065a54649SBram Moolenaar  call assert_equal(1, assert_match('bar.*foo', 'foobar'))
151ea6553beSBram Moolenaar  call assert_match("Pattern 'bar.*foo' does not match 'foobar'", v:errors[0])
152ea6553beSBram Moolenaar  call remove(v:errors, 0)
153ea6553beSBram Moolenaar
15465a54649SBram Moolenaar  call assert_equal(1, assert_match('bar.*foo', 'foobar', 'wrong'))
155ea6553beSBram Moolenaar  call assert_match('wrong', v:errors[0])
156ea6553beSBram Moolenaar  call remove(v:errors, 0)
15724278d24SBram Moolenaar
15824278d24SBram Moolenaar  call assert_equal(1, 'foobar'->assert_match('bar.*foo', 'wrong'))
15924278d24SBram Moolenaar  call assert_match('wrong', v:errors[0])
16024278d24SBram Moolenaar  call remove(v:errors, 0)
161ea6553beSBram Moolenaarendfunc
162ea6553beSBram Moolenaar
163b50e5f56SBram Moolenaarfunc Test_notmatch()
16465a54649SBram Moolenaar  call assert_equal(0, assert_notmatch('foo', 'bar'))
16565a54649SBram Moolenaar  call assert_equal(0, assert_notmatch('^foobar$', 'foobars'))
166b50e5f56SBram Moolenaar
16765a54649SBram Moolenaar  call assert_equal(1, assert_notmatch('foo', 'foobar'))
168b50e5f56SBram Moolenaar  call assert_match("Pattern 'foo' does match 'foobar'", v:errors[0])
169b50e5f56SBram Moolenaar  call remove(v:errors, 0)
17024278d24SBram Moolenaar
17124278d24SBram Moolenaar  call assert_equal(1, 'foobar'->assert_notmatch('foo'))
17224278d24SBram Moolenaar  call assert_match("Pattern 'foo' does match 'foobar'", v:errors[0])
17324278d24SBram Moolenaar  call remove(v:errors, 0)
174b50e5f56SBram Moolenaarendfunc
175b50e5f56SBram Moolenaar
1761abb5026SBram Moolenaarfunc Test_assert_fail_fails()
17765a54649SBram Moolenaar  call assert_equal(1, assert_fails('xxx', {}))
178ea6553beSBram Moolenaar  call assert_match("Expected {} but got 'E731:", v:errors[0])
1791abb5026SBram Moolenaar  call remove(v:errors, 0)
1801307d1c0SBram Moolenaar
1811307d1c0SBram Moolenaar  call assert_equal(1, assert_fails('xxx', {}, 'stupid'))
1821307d1c0SBram Moolenaar  call assert_match("stupid: Expected {} but got 'E731:", v:errors[0])
1831307d1c0SBram Moolenaar  call remove(v:errors, 0)
1841307d1c0SBram Moolenaar
1851307d1c0SBram Moolenaar  call assert_equal(1, assert_fails('echo', '', 'echo command'))
1861307d1c0SBram Moolenaar  call assert_match("command did not fail: echo command", v:errors[0])
1871307d1c0SBram Moolenaar  call remove(v:errors, 0)
18824278d24SBram Moolenaar
18924278d24SBram Moolenaar  call assert_equal(1, 'echo'->assert_fails('', 'echo command'))
19024278d24SBram Moolenaar  call assert_match("command did not fail: echo command", v:errors[0])
19124278d24SBram Moolenaar  call remove(v:errors, 0)
1921abb5026SBram Moolenaarendfunc
1931abb5026SBram Moolenaar
1947780e5c1SBram Moolenaarfunc Test_assert_fails_in_try_block()
1957780e5c1SBram Moolenaar  try
1967780e5c1SBram Moolenaar    call assert_equal(0, assert_fails('throw "error"'))
1977780e5c1SBram Moolenaar  endtry
1987780e5c1SBram Moolenaarendfunc
1997780e5c1SBram Moolenaar
200b48e96f6SBram Moolenaarfunc Test_assert_beeps()
201b48e96f6SBram Moolenaar  new
20265a54649SBram Moolenaar  call assert_equal(0, assert_beeps('normal h'))
203b48e96f6SBram Moolenaar
20465a54649SBram Moolenaar  call assert_equal(1, assert_beeps('normal 0'))
205b48e96f6SBram Moolenaar  call assert_match("command did not beep: normal 0", v:errors[0])
206b48e96f6SBram Moolenaar  call remove(v:errors, 0)
20724278d24SBram Moolenaar
20824278d24SBram Moolenaar  call assert_equal(0, 'normal h'->assert_beeps())
20924278d24SBram Moolenaar  call assert_equal(1, 'normal 0'->assert_beeps())
21024278d24SBram Moolenaar  call assert_match("command did not beep: normal 0", v:errors[0])
21124278d24SBram Moolenaar  call remove(v:errors, 0)
21224278d24SBram Moolenaar
213b48e96f6SBram Moolenaar  bwipe
214b48e96f6SBram Moolenaarendfunc
215b48e96f6SBram Moolenaar
21661c04493SBram Moolenaarfunc Test_assert_inrange()
21765a54649SBram Moolenaar  call assert_equal(0, assert_inrange(7, 7, 7))
21865a54649SBram Moolenaar  call assert_equal(0, assert_inrange(5, 7, 5))
21965a54649SBram Moolenaar  call assert_equal(0, assert_inrange(5, 7, 6))
22065a54649SBram Moolenaar  call assert_equal(0, assert_inrange(5, 7, 7))
22161c04493SBram Moolenaar
22265a54649SBram Moolenaar  call assert_equal(1, assert_inrange(5, 7, 4))
22361c04493SBram Moolenaar  call assert_match("Expected range 5 - 7, but got 4", v:errors[0])
22461c04493SBram Moolenaar  call remove(v:errors, 0)
22565a54649SBram Moolenaar  call assert_equal(1, assert_inrange(5, 7, 8))
22661c04493SBram Moolenaar  call assert_match("Expected range 5 - 7, but got 8", v:errors[0])
22761c04493SBram Moolenaar  call remove(v:errors, 0)
22834215663SBram Moolenaar
22924278d24SBram Moolenaar  call assert_equal(0, 5->assert_inrange(5, 7))
23024278d24SBram Moolenaar  call assert_equal(0, 7->assert_inrange(5, 7))
23124278d24SBram Moolenaar  call assert_equal(1, 8->assert_inrange(5, 7))
23224278d24SBram Moolenaar  call assert_match("Expected range 5 - 7, but got 8", v:errors[0])
23324278d24SBram Moolenaar  call remove(v:errors, 0)
23424278d24SBram Moolenaar
23534215663SBram Moolenaar  call assert_fails('call assert_inrange(1, 1)', 'E119:')
23638f08e76SBram Moolenaar
23738f08e76SBram Moolenaar  if has('float')
23838f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(7.0, 7, 7))
23938f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(7, 7.0, 7))
24038f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(7, 7, 7.0))
24138f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(5, 7, 5.0))
24238f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(5, 7, 6.0))
24338f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(5, 7, 7.0))
24438f08e76SBram Moolenaar
24538f08e76SBram Moolenaar    call assert_equal(1, assert_inrange(5, 7, 4.0))
24638f08e76SBram Moolenaar    call assert_match("Expected range 5.0 - 7.0, but got 4.0", v:errors[0])
24738f08e76SBram Moolenaar    call remove(v:errors, 0)
24838f08e76SBram Moolenaar    call assert_equal(1, assert_inrange(5, 7, 8.0))
24938f08e76SBram Moolenaar    call assert_match("Expected range 5.0 - 7.0, but got 8.0", v:errors[0])
25038f08e76SBram Moolenaar    call remove(v:errors, 0)
25138f08e76SBram Moolenaar  endif
25261c04493SBram Moolenaarendfunc
253f1551964SBram Moolenaar
254c7b831caSBram Moolenaarfunc Test_assert_with_msg()
255c7b831caSBram Moolenaar  call assert_equal('foo', 'bar', 'testing')
256c7b831caSBram Moolenaar  call assert_match("testing: Expected 'foo' but got 'bar'", v:errors[0])
257c7b831caSBram Moolenaar  call remove(v:errors, 0)
258c7b831caSBram Moolenaarendfunc
259c7b831caSBram Moolenaar
260eb992cb9SBram Moolenaarfunc Test_override()
261eb992cb9SBram Moolenaar  call test_override('char_avail', 1)
262eb992cb9SBram Moolenaar  call test_override('redraw', 1)
263eb992cb9SBram Moolenaar  call test_override('ALL', 0)
264eb992cb9SBram Moolenaar  call assert_fails("call test_override('xxx', 1)", 'E475')
265eb992cb9SBram Moolenaar  call assert_fails("call test_override('redraw', 'yes')", 'E474')
266eb992cb9SBram Moolenaarendfunc
267eb992cb9SBram Moolenaar
268b0f94c1fSBram Moolenaarfunc Test_mouse_position()
269b0f94c1fSBram Moolenaar  let save_mouse = &mouse
270b0f94c1fSBram Moolenaar  set mouse=a
271b0f94c1fSBram Moolenaar  new
272b0f94c1fSBram Moolenaar  call setline(1, ['line one', 'line two'])
273b0f94c1fSBram Moolenaar  call assert_equal([0, 1, 1, 0], getpos('.'))
274b0f94c1fSBram Moolenaar  call test_setmouse(1, 5)
275b0f94c1fSBram Moolenaar  call feedkeys("\<LeftMouse>", "xt")
276b0f94c1fSBram Moolenaar  call assert_equal([0, 1, 5, 0], getpos('.'))
277b0f94c1fSBram Moolenaar  call test_setmouse(2, 20)
278b0f94c1fSBram Moolenaar  call feedkeys("\<LeftMouse>", "xt")
279b0f94c1fSBram Moolenaar  call assert_equal([0, 2, 8, 0], getpos('.'))
280b0f94c1fSBram Moolenaar  call test_setmouse(5, 1)
281b0f94c1fSBram Moolenaar  call feedkeys("\<LeftMouse>", "xt")
282b0f94c1fSBram Moolenaar  call assert_equal([0, 2, 1, 0], getpos('.'))
283b0f94c1fSBram Moolenaar  bwipe!
284b0f94c1fSBram Moolenaar  let &mouse = save_mouse
285b0f94c1fSBram Moolenaarendfunc
286b0f94c1fSBram Moolenaar
2872d820808SBram Moolenaarfunc Test_user_is_happy()
2882d820808SBram Moolenaar  smile
2892d820808SBram Moolenaar  sleep 300m
2902d820808SBram Moolenaarendfunc
2918903676dSBram Moolenaar
2928903676dSBram Moolenaar" Must be last.
2938903676dSBram Moolenaarfunc Test_zz_quit_detected()
2948903676dSBram Moolenaar  " Verify that if a test function ends Vim the test script detects this.
2958903676dSBram Moolenaar  quit
2968903676dSBram Moolenaarendfunc
297