xref: /vim-8.2.3635/src/testdir/test_assert.vim (revision 38f08e76)
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))
665a54649SBram Moolenaar
765a54649SBram Moolenaar  call assert_equal(1, assert_false(123))
865a54649SBram Moolenaar  call assert_match("Expected False but got 123", v:errors[0])
965a54649SBram Moolenaar  call remove(v:errors, 0)
1043345546SBram Moolenaarendfunc
1143345546SBram Moolenaar
12683fa185SBram Moolenaarfunc Test_assert_true()
1365a54649SBram Moolenaar  call assert_equal(0, assert_true(1))
1465a54649SBram Moolenaar  call assert_equal(0, assert_true(123))
1565a54649SBram Moolenaar  call assert_equal(0, assert_true(v:true))
1665a54649SBram Moolenaar
1765a54649SBram Moolenaar  call assert_equal(1, assert_true(0))
1865a54649SBram Moolenaar  call assert_match("Expected True but got 0", v:errors[0])
1965a54649SBram Moolenaar  call remove(v:errors, 0)
2043345546SBram Moolenaarendfunc
2143345546SBram Moolenaar
22683fa185SBram Moolenaarfunc Test_assert_equal()
2343345546SBram Moolenaar  let s = 'foo'
2465a54649SBram Moolenaar  call assert_equal(0, assert_equal('foo', s))
2543345546SBram Moolenaar  let n = 4
2665a54649SBram Moolenaar  call assert_equal(0, assert_equal(4, n))
2743345546SBram Moolenaar  let l = [1, 2, 3]
2865a54649SBram Moolenaar  call assert_equal(0, assert_equal([1, 2, 3], l))
29b50e5f56SBram Moolenaar
30b50e5f56SBram Moolenaar  let s = 'foo'
3165a54649SBram Moolenaar  call assert_equal(1, assert_equal('bar', s))
32b50e5f56SBram Moolenaar  call assert_match("Expected 'bar' but got 'foo'", v:errors[0])
33b50e5f56SBram Moolenaar  call remove(v:errors, 0)
3486576712SBram Moolenaar
3586576712SBram Moolenaar  call assert_equal('XxxxxxxxxxxxxxxxxxxxxxX', 'XyyyyyyyyyyyyyyyyyyyyyyyyyX')
3686576712SBram Moolenaar  call assert_match("Expected 'X\\\\\\[x occurs 21 times]X' but got 'X\\\\\\[y occurs 25 times]X'", v:errors[0])
3786576712SBram Moolenaar  call remove(v:errors, 0)
38b50e5f56SBram Moolenaarendfunc
39b50e5f56SBram Moolenaar
40d96ff165SBram Moolenaarfunc Test_assert_equalfile()
4165a54649SBram Moolenaar  call assert_equal(1, assert_equalfile('abcabc', 'xyzxyz'))
42d96ff165SBram Moolenaar  call assert_match("E485: Can't read file abcabc", v:errors[0])
43d96ff165SBram Moolenaar  call remove(v:errors, 0)
44d96ff165SBram Moolenaar
45d96ff165SBram Moolenaar  let goodtext = ["one", "two", "three"]
46d96ff165SBram Moolenaar  call writefile(goodtext, 'Xone')
4765a54649SBram Moolenaar  call assert_equal(1, assert_equalfile('Xone', 'xyzxyz'))
48d96ff165SBram Moolenaar  call assert_match("E485: Can't read file xyzxyz", v:errors[0])
49d96ff165SBram Moolenaar  call remove(v:errors, 0)
50d96ff165SBram Moolenaar
51d96ff165SBram Moolenaar  call writefile(goodtext, 'Xtwo')
5265a54649SBram Moolenaar  call assert_equal(0, assert_equalfile('Xone', 'Xtwo'))
53d96ff165SBram Moolenaar
54d96ff165SBram Moolenaar  call writefile([goodtext[0]], 'Xone')
5565a54649SBram Moolenaar  call assert_equal(1, assert_equalfile('Xone', 'Xtwo'))
56d96ff165SBram Moolenaar  call assert_match("first file is shorter", v:errors[0])
57d96ff165SBram Moolenaar  call remove(v:errors, 0)
58d96ff165SBram Moolenaar
59d96ff165SBram Moolenaar  call writefile(goodtext, 'Xone')
60d96ff165SBram Moolenaar  call writefile([goodtext[0]], 'Xtwo')
6165a54649SBram Moolenaar  call assert_equal(1, assert_equalfile('Xone', 'Xtwo'))
62d96ff165SBram Moolenaar  call assert_match("second file is shorter", v:errors[0])
63d96ff165SBram Moolenaar  call remove(v:errors, 0)
64d96ff165SBram Moolenaar
65d96ff165SBram Moolenaar  call writefile(['1234X89'], 'Xone')
66d96ff165SBram Moolenaar  call writefile(['1234Y89'], 'Xtwo')
6765a54649SBram Moolenaar  call assert_equal(1, assert_equalfile('Xone', 'Xtwo'))
68d96ff165SBram Moolenaar  call assert_match("difference at byte 4", v:errors[0])
69d96ff165SBram Moolenaar  call remove(v:errors, 0)
70d96ff165SBram Moolenaar
71d96ff165SBram Moolenaar  call delete('Xone')
72d96ff165SBram Moolenaar  call delete('Xtwo')
73d96ff165SBram Moolenaarendfunc
74d96ff165SBram Moolenaar
75b50e5f56SBram Moolenaarfunc Test_assert_notequal()
76b50e5f56SBram Moolenaar  let n = 4
7765a54649SBram Moolenaar  call assert_equal(0, assert_notequal('foo', n))
78b50e5f56SBram Moolenaar  let s = 'foo'
7965a54649SBram Moolenaar  call assert_equal(0, assert_notequal([1, 2, 3], s))
80b50e5f56SBram Moolenaar
8165a54649SBram Moolenaar  call assert_equal(1, assert_notequal('foo', s))
825869cf06SBram Moolenaar  call assert_match("Expected not equal to 'foo'", v:errors[0])
83b50e5f56SBram Moolenaar  call remove(v:errors, 0)
8443345546SBram Moolenaarendfunc
852d820808SBram Moolenaar
8637175409SBram Moolenaarfunc Test_assert_report()
8765a54649SBram Moolenaar  call assert_equal(1, assert_report('something is wrong'))
8837175409SBram Moolenaar  call assert_match('something is wrong', v:errors[0])
8937175409SBram Moolenaar  call remove(v:errors, 0)
9037175409SBram Moolenaarendfunc
9137175409SBram Moolenaar
92da5dcd93SBram Moolenaarfunc Test_assert_exception()
93da5dcd93SBram Moolenaar  try
94da5dcd93SBram Moolenaar    nocommand
95da5dcd93SBram Moolenaar  catch
9665a54649SBram Moolenaar    call assert_equal(0, assert_exception('E492:'))
97da5dcd93SBram Moolenaar  endtry
98da5dcd93SBram Moolenaar
99da5dcd93SBram Moolenaar  try
100da5dcd93SBram Moolenaar    nocommand
101da5dcd93SBram Moolenaar  catch
102da5dcd93SBram Moolenaar    try
103da5dcd93SBram Moolenaar      " illegal argument, get NULL for error
10465a54649SBram Moolenaar      call assert_equal(1, assert_exception([]))
105da5dcd93SBram Moolenaar    catch
10665a54649SBram Moolenaar      call assert_equal(0, assert_exception('E730:'))
107da5dcd93SBram Moolenaar    endtry
108da5dcd93SBram Moolenaar  endtry
109da5dcd93SBram Moolenaarendfunc
110da5dcd93SBram Moolenaar
111a542c680SBram Moolenaarfunc Test_wrong_error_type()
112a542c680SBram Moolenaar  let save_verrors = v:errors
113a542c680SBram Moolenaar  let v:['errors'] = {'foo': 3}
114a542c680SBram Moolenaar  call assert_equal('yes', 'no')
115a542c680SBram Moolenaar  let verrors = v:errors
116a542c680SBram Moolenaar  let v:errors = save_verrors
117a542c680SBram Moolenaar  call assert_equal(type([]), type(verrors))
118a542c680SBram Moolenaarendfunc
119a542c680SBram Moolenaar
120f1551964SBram Moolenaarfunc Test_compare_fail()
121f1551964SBram Moolenaar  let s:v = {}
122f1551964SBram Moolenaar  let s:x = {"a": s:v}
123f1551964SBram Moolenaar  let s:v["b"] = s:x
124f1551964SBram Moolenaar  let s:w = {"c": s:x, "d": ''}
125f1551964SBram Moolenaar  try
126f1551964SBram Moolenaar    call assert_equal(s:w, '')
127f1551964SBram Moolenaar  catch
12865a54649SBram Moolenaar    call assert_equal(0, assert_exception('E724:'))
129ea6553beSBram Moolenaar    call assert_match("Expected NULL but got ''", v:errors[0])
130f1551964SBram Moolenaar    call remove(v:errors, 0)
131f1551964SBram Moolenaar  endtry
132f1551964SBram Moolenaarendfunc
133f1551964SBram Moolenaar
134ea6553beSBram Moolenaarfunc Test_match()
13565a54649SBram Moolenaar  call assert_equal(0, assert_match('^f.*b.*r$', 'foobar'))
136ea6553beSBram Moolenaar
13765a54649SBram Moolenaar  call assert_equal(1, assert_match('bar.*foo', 'foobar'))
138ea6553beSBram Moolenaar  call assert_match("Pattern 'bar.*foo' does not match 'foobar'", v:errors[0])
139ea6553beSBram Moolenaar  call remove(v:errors, 0)
140ea6553beSBram Moolenaar
14165a54649SBram Moolenaar  call assert_equal(1, assert_match('bar.*foo', 'foobar', 'wrong'))
142ea6553beSBram Moolenaar  call assert_match('wrong', v:errors[0])
143ea6553beSBram Moolenaar  call remove(v:errors, 0)
144ea6553beSBram Moolenaarendfunc
145ea6553beSBram Moolenaar
146b50e5f56SBram Moolenaarfunc Test_notmatch()
14765a54649SBram Moolenaar  call assert_equal(0, assert_notmatch('foo', 'bar'))
14865a54649SBram Moolenaar  call assert_equal(0, assert_notmatch('^foobar$', 'foobars'))
149b50e5f56SBram Moolenaar
15065a54649SBram Moolenaar  call assert_equal(1, assert_notmatch('foo', 'foobar'))
151b50e5f56SBram Moolenaar  call assert_match("Pattern 'foo' does match 'foobar'", v:errors[0])
152b50e5f56SBram Moolenaar  call remove(v:errors, 0)
153b50e5f56SBram Moolenaarendfunc
154b50e5f56SBram Moolenaar
1551abb5026SBram Moolenaarfunc Test_assert_fail_fails()
15665a54649SBram Moolenaar  call assert_equal(1, assert_fails('xxx', {}))
157ea6553beSBram Moolenaar  call assert_match("Expected {} but got 'E731:", v:errors[0])
1581abb5026SBram Moolenaar  call remove(v:errors, 0)
1591307d1c0SBram Moolenaar
1601307d1c0SBram Moolenaar  call assert_equal(1, assert_fails('xxx', {}, 'stupid'))
1611307d1c0SBram Moolenaar  call assert_match("stupid: Expected {} but got 'E731:", v:errors[0])
1621307d1c0SBram Moolenaar  call remove(v:errors, 0)
1631307d1c0SBram Moolenaar
1641307d1c0SBram Moolenaar  call assert_equal(1, assert_fails('echo', '', 'echo command'))
1651307d1c0SBram Moolenaar  call assert_match("command did not fail: echo command", v:errors[0])
1661307d1c0SBram Moolenaar  call remove(v:errors, 0)
1671abb5026SBram Moolenaarendfunc
1681abb5026SBram Moolenaar
169b48e96f6SBram Moolenaarfunc Test_assert_beeps()
170b48e96f6SBram Moolenaar  new
17165a54649SBram Moolenaar  call assert_equal(0, assert_beeps('normal h'))
172b48e96f6SBram Moolenaar
17365a54649SBram Moolenaar  call assert_equal(1, assert_beeps('normal 0'))
174b48e96f6SBram Moolenaar  call assert_match("command did not beep: normal 0", v:errors[0])
175b48e96f6SBram Moolenaar  call remove(v:errors, 0)
176b48e96f6SBram Moolenaar  bwipe
177b48e96f6SBram Moolenaarendfunc
178b48e96f6SBram Moolenaar
17961c04493SBram Moolenaarfunc Test_assert_inrange()
18065a54649SBram Moolenaar  call assert_equal(0, assert_inrange(7, 7, 7))
18165a54649SBram Moolenaar  call assert_equal(0, assert_inrange(5, 7, 5))
18265a54649SBram Moolenaar  call assert_equal(0, assert_inrange(5, 7, 6))
18365a54649SBram Moolenaar  call assert_equal(0, assert_inrange(5, 7, 7))
18461c04493SBram Moolenaar
18565a54649SBram Moolenaar  call assert_equal(1, assert_inrange(5, 7, 4))
18661c04493SBram Moolenaar  call assert_match("Expected range 5 - 7, but got 4", v:errors[0])
18761c04493SBram Moolenaar  call remove(v:errors, 0)
18865a54649SBram Moolenaar  call assert_equal(1, assert_inrange(5, 7, 8))
18961c04493SBram Moolenaar  call assert_match("Expected range 5 - 7, but got 8", v:errors[0])
19061c04493SBram Moolenaar  call remove(v:errors, 0)
19134215663SBram Moolenaar
19234215663SBram Moolenaar  call assert_fails('call assert_inrange(1, 1)', 'E119:')
193*38f08e76SBram Moolenaar
194*38f08e76SBram Moolenaar  if has('float')
195*38f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(7.0, 7, 7))
196*38f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(7, 7.0, 7))
197*38f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(7, 7, 7.0))
198*38f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(5, 7, 5.0))
199*38f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(5, 7, 6.0))
200*38f08e76SBram Moolenaar    call assert_equal(0, assert_inrange(5, 7, 7.0))
201*38f08e76SBram Moolenaar
202*38f08e76SBram Moolenaar    call assert_equal(1, assert_inrange(5, 7, 4.0))
203*38f08e76SBram Moolenaar    call assert_match("Expected range 5.0 - 7.0, but got 4.0", v:errors[0])
204*38f08e76SBram Moolenaar    call remove(v:errors, 0)
205*38f08e76SBram Moolenaar    call assert_equal(1, assert_inrange(5, 7, 8.0))
206*38f08e76SBram Moolenaar    call assert_match("Expected range 5.0 - 7.0, but got 8.0", v:errors[0])
207*38f08e76SBram Moolenaar    call remove(v:errors, 0)
208*38f08e76SBram Moolenaar  endif
20961c04493SBram Moolenaarendfunc
210f1551964SBram Moolenaar
211c7b831caSBram Moolenaarfunc Test_assert_with_msg()
212c7b831caSBram Moolenaar  call assert_equal('foo', 'bar', 'testing')
213c7b831caSBram Moolenaar  call assert_match("testing: Expected 'foo' but got 'bar'", v:errors[0])
214c7b831caSBram Moolenaar  call remove(v:errors, 0)
215c7b831caSBram Moolenaarendfunc
216c7b831caSBram Moolenaar
217eb992cb9SBram Moolenaarfunc Test_override()
218eb992cb9SBram Moolenaar  call test_override('char_avail', 1)
219eb992cb9SBram Moolenaar  call test_override('redraw', 1)
220eb992cb9SBram Moolenaar  call test_override('ALL', 0)
221eb992cb9SBram Moolenaar  call assert_fails("call test_override('xxx', 1)", 'E475')
222eb992cb9SBram Moolenaar  call assert_fails("call test_override('redraw', 'yes')", 'E474')
223eb992cb9SBram Moolenaarendfunc
224eb992cb9SBram Moolenaar
2252d820808SBram Moolenaarfunc Test_user_is_happy()
2262d820808SBram Moolenaar  smile
2272d820808SBram Moolenaar  sleep 300m
2282d820808SBram Moolenaarendfunc
2298903676dSBram Moolenaar
2308903676dSBram Moolenaar" Must be last.
2318903676dSBram Moolenaarfunc Test_zz_quit_detected()
2328903676dSBram Moolenaar  " Verify that if a test function ends Vim the test script detects this.
2338903676dSBram Moolenaar  quit
2348903676dSBram Moolenaarendfunc
235