xref: /vim-8.2.3635/src/testdir/test_assert.vim (revision d96ff165)
143345546SBram Moolenaar" Test that the methods used for testing work.
243345546SBram Moolenaar
3683fa185SBram Moolenaarfunc Test_assert_false()
4683fa185SBram Moolenaar  call assert_false(0)
537127926SBram Moolenaar  call assert_false(v:false)
643345546SBram Moolenaarendfunc
743345546SBram Moolenaar
8683fa185SBram Moolenaarfunc Test_assert_true()
9683fa185SBram Moolenaar  call assert_true(1)
10683fa185SBram Moolenaar  call assert_true(123)
1137127926SBram Moolenaar  call assert_true(v:true)
1243345546SBram Moolenaarendfunc
1343345546SBram Moolenaar
14683fa185SBram Moolenaarfunc Test_assert_equal()
1543345546SBram Moolenaar  let s = 'foo'
16683fa185SBram Moolenaar  call assert_equal('foo', s)
1743345546SBram Moolenaar  let n = 4
18683fa185SBram Moolenaar  call assert_equal(4, n)
1943345546SBram Moolenaar  let l = [1, 2, 3]
20683fa185SBram Moolenaar  call assert_equal([1, 2, 3], l)
21b50e5f56SBram Moolenaar
22b50e5f56SBram Moolenaar  let s = 'foo'
23b50e5f56SBram Moolenaar  call assert_equal('bar', s)
24b50e5f56SBram Moolenaar  call assert_match("Expected 'bar' but got 'foo'", v:errors[0])
25b50e5f56SBram Moolenaar  call remove(v:errors, 0)
26b50e5f56SBram Moolenaarendfunc
27b50e5f56SBram Moolenaar
28*d96ff165SBram Moolenaarfunc Test_assert_equalfile()
29*d96ff165SBram Moolenaar  call assert_equalfile('abcabc', 'xyzxyz')
30*d96ff165SBram Moolenaar  call assert_match("E485: Can't read file abcabc", v:errors[0])
31*d96ff165SBram Moolenaar  call remove(v:errors, 0)
32*d96ff165SBram Moolenaar
33*d96ff165SBram Moolenaar  let goodtext = ["one", "two", "three"]
34*d96ff165SBram Moolenaar  call writefile(goodtext, 'Xone')
35*d96ff165SBram Moolenaar  call assert_equalfile('Xone', 'xyzxyz')
36*d96ff165SBram Moolenaar  call assert_match("E485: Can't read file xyzxyz", v:errors[0])
37*d96ff165SBram Moolenaar  call remove(v:errors, 0)
38*d96ff165SBram Moolenaar
39*d96ff165SBram Moolenaar  call writefile(goodtext, 'Xtwo')
40*d96ff165SBram Moolenaar  call assert_equalfile('Xone', 'Xtwo')
41*d96ff165SBram Moolenaar
42*d96ff165SBram Moolenaar  call writefile([goodtext[0]], 'Xone')
43*d96ff165SBram Moolenaar  call assert_equalfile('Xone', 'Xtwo')
44*d96ff165SBram Moolenaar  call assert_match("first file is shorter", v:errors[0])
45*d96ff165SBram Moolenaar  call remove(v:errors, 0)
46*d96ff165SBram Moolenaar
47*d96ff165SBram Moolenaar  call writefile(goodtext, 'Xone')
48*d96ff165SBram Moolenaar  call writefile([goodtext[0]], 'Xtwo')
49*d96ff165SBram Moolenaar  call assert_equalfile('Xone', 'Xtwo')
50*d96ff165SBram Moolenaar  call assert_match("second file is shorter", v:errors[0])
51*d96ff165SBram Moolenaar  call remove(v:errors, 0)
52*d96ff165SBram Moolenaar
53*d96ff165SBram Moolenaar  call writefile(['1234X89'], 'Xone')
54*d96ff165SBram Moolenaar  call writefile(['1234Y89'], 'Xtwo')
55*d96ff165SBram Moolenaar  call assert_equalfile('Xone', 'Xtwo')
56*d96ff165SBram Moolenaar  call assert_match("difference at byte 4", v:errors[0])
57*d96ff165SBram Moolenaar  call remove(v:errors, 0)
58*d96ff165SBram Moolenaar
59*d96ff165SBram Moolenaar  call delete('Xone')
60*d96ff165SBram Moolenaar  call delete('Xtwo')
61*d96ff165SBram Moolenaarendfunc
62*d96ff165SBram Moolenaar
63b50e5f56SBram Moolenaarfunc Test_assert_notequal()
64b50e5f56SBram Moolenaar  let n = 4
65b50e5f56SBram Moolenaar  call assert_notequal('foo', n)
66b50e5f56SBram Moolenaar  let s = 'foo'
67b50e5f56SBram Moolenaar  call assert_notequal([1, 2, 3], s)
68b50e5f56SBram Moolenaar
69b50e5f56SBram Moolenaar  call assert_notequal('foo', s)
705869cf06SBram Moolenaar  call assert_match("Expected not equal to 'foo'", v:errors[0])
71b50e5f56SBram Moolenaar  call remove(v:errors, 0)
7243345546SBram Moolenaarendfunc
732d820808SBram Moolenaar
7437175409SBram Moolenaarfunc Test_assert_report()
7537175409SBram Moolenaar  call assert_report('something is wrong')
7637175409SBram Moolenaar  call assert_match('something is wrong', v:errors[0])
7737175409SBram Moolenaar  call remove(v:errors, 0)
7837175409SBram Moolenaarendfunc
7937175409SBram Moolenaar
80da5dcd93SBram Moolenaarfunc Test_assert_exception()
81da5dcd93SBram Moolenaar  try
82da5dcd93SBram Moolenaar    nocommand
83da5dcd93SBram Moolenaar  catch
84da5dcd93SBram Moolenaar    call assert_exception('E492:')
85da5dcd93SBram Moolenaar  endtry
86da5dcd93SBram Moolenaar
87da5dcd93SBram Moolenaar  try
88da5dcd93SBram Moolenaar    nocommand
89da5dcd93SBram Moolenaar  catch
90da5dcd93SBram Moolenaar    try
91da5dcd93SBram Moolenaar      " illegal argument, get NULL for error
92da5dcd93SBram Moolenaar      call assert_exception([])
93da5dcd93SBram Moolenaar    catch
94da5dcd93SBram Moolenaar      call assert_exception('E730:')
95da5dcd93SBram Moolenaar    endtry
96da5dcd93SBram Moolenaar  endtry
97da5dcd93SBram Moolenaarendfunc
98da5dcd93SBram Moolenaar
99a542c680SBram Moolenaarfunc Test_wrong_error_type()
100a542c680SBram Moolenaar  let save_verrors = v:errors
101a542c680SBram Moolenaar  let v:['errors'] = {'foo': 3}
102a542c680SBram Moolenaar  call assert_equal('yes', 'no')
103a542c680SBram Moolenaar  let verrors = v:errors
104a542c680SBram Moolenaar  let v:errors = save_verrors
105a542c680SBram Moolenaar  call assert_equal(type([]), type(verrors))
106a542c680SBram Moolenaarendfunc
107a542c680SBram Moolenaar
108f1551964SBram Moolenaarfunc Test_compare_fail()
109f1551964SBram Moolenaar  let s:v = {}
110f1551964SBram Moolenaar  let s:x = {"a": s:v}
111f1551964SBram Moolenaar  let s:v["b"] = s:x
112f1551964SBram Moolenaar  let s:w = {"c": s:x, "d": ''}
113f1551964SBram Moolenaar  try
114f1551964SBram Moolenaar    call assert_equal(s:w, '')
115f1551964SBram Moolenaar  catch
116f1551964SBram Moolenaar    call assert_exception('E724:')
117ea6553beSBram Moolenaar    call assert_match("Expected NULL but got ''", v:errors[0])
118f1551964SBram Moolenaar    call remove(v:errors, 0)
119f1551964SBram Moolenaar  endtry
120f1551964SBram Moolenaarendfunc
121f1551964SBram Moolenaar
122ea6553beSBram Moolenaarfunc Test_match()
123ea6553beSBram Moolenaar  call assert_match('^f.*b.*r$', 'foobar')
124ea6553beSBram Moolenaar
125ea6553beSBram Moolenaar  call assert_match('bar.*foo', 'foobar')
126ea6553beSBram Moolenaar  call assert_match("Pattern 'bar.*foo' does not match 'foobar'", v:errors[0])
127ea6553beSBram Moolenaar  call remove(v:errors, 0)
128ea6553beSBram Moolenaar
129ea6553beSBram Moolenaar  call assert_match('bar.*foo', 'foobar', 'wrong')
130ea6553beSBram Moolenaar  call assert_match('wrong', v:errors[0])
131ea6553beSBram Moolenaar  call remove(v:errors, 0)
132ea6553beSBram Moolenaarendfunc
133ea6553beSBram Moolenaar
134b50e5f56SBram Moolenaarfunc Test_notmatch()
135b50e5f56SBram Moolenaar  call assert_notmatch('foo', 'bar')
136b50e5f56SBram Moolenaar  call assert_notmatch('^foobar$', 'foobars')
137b50e5f56SBram Moolenaar
138b50e5f56SBram Moolenaar  call assert_notmatch('foo', 'foobar')
139b50e5f56SBram Moolenaar  call assert_match("Pattern 'foo' does match 'foobar'", v:errors[0])
140b50e5f56SBram Moolenaar  call remove(v:errors, 0)
141b50e5f56SBram Moolenaarendfunc
142b50e5f56SBram Moolenaar
1431abb5026SBram Moolenaarfunc Test_assert_fail_fails()
1441abb5026SBram Moolenaar  call assert_fails('xxx', {})
145ea6553beSBram Moolenaar  call assert_match("Expected {} but got 'E731:", v:errors[0])
1461abb5026SBram Moolenaar  call remove(v:errors, 0)
1471abb5026SBram Moolenaarendfunc
1481abb5026SBram Moolenaar
149b48e96f6SBram Moolenaarfunc Test_assert_beeps()
150b48e96f6SBram Moolenaar  new
151b48e96f6SBram Moolenaar  call assert_beeps('normal h')
152b48e96f6SBram Moolenaar
153b48e96f6SBram Moolenaar  call assert_beeps('normal 0')
154b48e96f6SBram Moolenaar  call assert_match("command did not beep: normal 0", v:errors[0])
155b48e96f6SBram Moolenaar  call remove(v:errors, 0)
156b48e96f6SBram Moolenaar  bwipe
157b48e96f6SBram Moolenaarendfunc
158b48e96f6SBram Moolenaar
15961c04493SBram Moolenaarfunc Test_assert_inrange()
16061c04493SBram Moolenaar  call assert_inrange(7, 7, 7)
16161c04493SBram Moolenaar  call assert_inrange(5, 7, 5)
16261c04493SBram Moolenaar  call assert_inrange(5, 7, 6)
16361c04493SBram Moolenaar  call assert_inrange(5, 7, 7)
16461c04493SBram Moolenaar
16561c04493SBram Moolenaar  call assert_inrange(5, 7, 4)
16661c04493SBram Moolenaar  call assert_match("Expected range 5 - 7, but got 4", v:errors[0])
16761c04493SBram Moolenaar  call remove(v:errors, 0)
16861c04493SBram Moolenaar  call assert_inrange(5, 7, 8)
16961c04493SBram Moolenaar  call assert_match("Expected range 5 - 7, but got 8", v:errors[0])
17061c04493SBram Moolenaar  call remove(v:errors, 0)
17134215663SBram Moolenaar
17234215663SBram Moolenaar  call assert_fails('call assert_inrange(1, 1)', 'E119:')
17361c04493SBram Moolenaarendfunc
174f1551964SBram Moolenaar
175c7b831caSBram Moolenaarfunc Test_assert_with_msg()
176c7b831caSBram Moolenaar  call assert_equal('foo', 'bar', 'testing')
177c7b831caSBram Moolenaar  call assert_match("testing: Expected 'foo' but got 'bar'", v:errors[0])
178c7b831caSBram Moolenaar  call remove(v:errors, 0)
179c7b831caSBram Moolenaarendfunc
180c7b831caSBram Moolenaar
181eb992cb9SBram Moolenaarfunc Test_override()
182eb992cb9SBram Moolenaar  call test_override('char_avail', 1)
183eb992cb9SBram Moolenaar  call test_override('redraw', 1)
184eb992cb9SBram Moolenaar  call test_override('ALL', 0)
185eb992cb9SBram Moolenaar  call assert_fails("call test_override('xxx', 1)", 'E475')
186eb992cb9SBram Moolenaar  call assert_fails("call test_override('redraw', 'yes')", 'E474')
187eb992cb9SBram Moolenaarendfunc
188eb992cb9SBram Moolenaar
1892d820808SBram Moolenaarfunc Test_user_is_happy()
1902d820808SBram Moolenaar  smile
1912d820808SBram Moolenaar  sleep 300m
1922d820808SBram Moolenaarendfunc
193