xref: /vim-8.2.3635/src/testdir/test_assert.vim (revision d96ff165)
1" Test that the methods used for testing work.
2
3func Test_assert_false()
4  call assert_false(0)
5  call assert_false(v:false)
6endfunc
7
8func Test_assert_true()
9  call assert_true(1)
10  call assert_true(123)
11  call assert_true(v:true)
12endfunc
13
14func Test_assert_equal()
15  let s = 'foo'
16  call assert_equal('foo', s)
17  let n = 4
18  call assert_equal(4, n)
19  let l = [1, 2, 3]
20  call assert_equal([1, 2, 3], l)
21
22  let s = 'foo'
23  call assert_equal('bar', s)
24  call assert_match("Expected 'bar' but got 'foo'", v:errors[0])
25  call remove(v:errors, 0)
26endfunc
27
28func Test_assert_equalfile()
29  call assert_equalfile('abcabc', 'xyzxyz')
30  call assert_match("E485: Can't read file abcabc", v:errors[0])
31  call remove(v:errors, 0)
32
33  let goodtext = ["one", "two", "three"]
34  call writefile(goodtext, 'Xone')
35  call assert_equalfile('Xone', 'xyzxyz')
36  call assert_match("E485: Can't read file xyzxyz", v:errors[0])
37  call remove(v:errors, 0)
38
39  call writefile(goodtext, 'Xtwo')
40  call assert_equalfile('Xone', 'Xtwo')
41
42  call writefile([goodtext[0]], 'Xone')
43  call assert_equalfile('Xone', 'Xtwo')
44  call assert_match("first file is shorter", v:errors[0])
45  call remove(v:errors, 0)
46
47  call writefile(goodtext, 'Xone')
48  call writefile([goodtext[0]], 'Xtwo')
49  call assert_equalfile('Xone', 'Xtwo')
50  call assert_match("second file is shorter", v:errors[0])
51  call remove(v:errors, 0)
52
53  call writefile(['1234X89'], 'Xone')
54  call writefile(['1234Y89'], 'Xtwo')
55  call assert_equalfile('Xone', 'Xtwo')
56  call assert_match("difference at byte 4", v:errors[0])
57  call remove(v:errors, 0)
58
59  call delete('Xone')
60  call delete('Xtwo')
61endfunc
62
63func Test_assert_notequal()
64  let n = 4
65  call assert_notequal('foo', n)
66  let s = 'foo'
67  call assert_notequal([1, 2, 3], s)
68
69  call assert_notequal('foo', s)
70  call assert_match("Expected not equal to 'foo'", v:errors[0])
71  call remove(v:errors, 0)
72endfunc
73
74func Test_assert_report()
75  call assert_report('something is wrong')
76  call assert_match('something is wrong', v:errors[0])
77  call remove(v:errors, 0)
78endfunc
79
80func Test_assert_exception()
81  try
82    nocommand
83  catch
84    call assert_exception('E492:')
85  endtry
86
87  try
88    nocommand
89  catch
90    try
91      " illegal argument, get NULL for error
92      call assert_exception([])
93    catch
94      call assert_exception('E730:')
95    endtry
96  endtry
97endfunc
98
99func Test_wrong_error_type()
100  let save_verrors = v:errors
101  let v:['errors'] = {'foo': 3}
102  call assert_equal('yes', 'no')
103  let verrors = v:errors
104  let v:errors = save_verrors
105  call assert_equal(type([]), type(verrors))
106endfunc
107
108func Test_compare_fail()
109  let s:v = {}
110  let s:x = {"a": s:v}
111  let s:v["b"] = s:x
112  let s:w = {"c": s:x, "d": ''}
113  try
114    call assert_equal(s:w, '')
115  catch
116    call assert_exception('E724:')
117    call assert_match("Expected NULL but got ''", v:errors[0])
118    call remove(v:errors, 0)
119  endtry
120endfunc
121
122func Test_match()
123  call assert_match('^f.*b.*r$', 'foobar')
124
125  call assert_match('bar.*foo', 'foobar')
126  call assert_match("Pattern 'bar.*foo' does not match 'foobar'", v:errors[0])
127  call remove(v:errors, 0)
128
129  call assert_match('bar.*foo', 'foobar', 'wrong')
130  call assert_match('wrong', v:errors[0])
131  call remove(v:errors, 0)
132endfunc
133
134func Test_notmatch()
135  call assert_notmatch('foo', 'bar')
136  call assert_notmatch('^foobar$', 'foobars')
137
138  call assert_notmatch('foo', 'foobar')
139  call assert_match("Pattern 'foo' does match 'foobar'", v:errors[0])
140  call remove(v:errors, 0)
141endfunc
142
143func Test_assert_fail_fails()
144  call assert_fails('xxx', {})
145  call assert_match("Expected {} but got 'E731:", v:errors[0])
146  call remove(v:errors, 0)
147endfunc
148
149func Test_assert_beeps()
150  new
151  call assert_beeps('normal h')
152
153  call assert_beeps('normal 0')
154  call assert_match("command did not beep: normal 0", v:errors[0])
155  call remove(v:errors, 0)
156  bwipe
157endfunc
158
159func Test_assert_inrange()
160  call assert_inrange(7, 7, 7)
161  call assert_inrange(5, 7, 5)
162  call assert_inrange(5, 7, 6)
163  call assert_inrange(5, 7, 7)
164
165  call assert_inrange(5, 7, 4)
166  call assert_match("Expected range 5 - 7, but got 4", v:errors[0])
167  call remove(v:errors, 0)
168  call assert_inrange(5, 7, 8)
169  call assert_match("Expected range 5 - 7, but got 8", v:errors[0])
170  call remove(v:errors, 0)
171
172  call assert_fails('call assert_inrange(1, 1)', 'E119:')
173endfunc
174
175func Test_assert_with_msg()
176  call assert_equal('foo', 'bar', 'testing')
177  call assert_match("testing: Expected 'foo' but got 'bar'", v:errors[0])
178  call remove(v:errors, 0)
179endfunc
180
181func Test_override()
182  call test_override('char_avail', 1)
183  call test_override('redraw', 1)
184  call test_override('ALL', 0)
185  call assert_fails("call test_override('xxx', 1)", 'E475')
186  call assert_fails("call test_override('redraw', 'yes')", 'E474')
187endfunc
188
189func Test_user_is_happy()
190  smile
191  sleep 300m
192endfunc
193