blob: 8359eb11c8786139d68b53bf2c7df86908a7965a [file] [log] [blame]
Bram Moolenaar43345542015-11-29 17:35:35 +01001" Test that the methods used for testing work.
2
Bram Moolenaar683fa182015-11-30 21:38:24 +01003func Test_assert_false()
4 call assert_false(0)
Bram Moolenaar37127922016-02-06 20:29:28 +01005 call assert_false(v:false)
Bram Moolenaar43345542015-11-29 17:35:35 +01006endfunc
7
Bram Moolenaar683fa182015-11-30 21:38:24 +01008func Test_assert_true()
9 call assert_true(1)
10 call assert_true(123)
Bram Moolenaar37127922016-02-06 20:29:28 +010011 call assert_true(v:true)
Bram Moolenaar43345542015-11-29 17:35:35 +010012endfunc
13
Bram Moolenaar683fa182015-11-30 21:38:24 +010014func Test_assert_equal()
Bram Moolenaar43345542015-11-29 17:35:35 +010015 let s = 'foo'
Bram Moolenaar683fa182015-11-30 21:38:24 +010016 call assert_equal('foo', s)
Bram Moolenaar43345542015-11-29 17:35:35 +010017 let n = 4
Bram Moolenaar683fa182015-11-30 21:38:24 +010018 call assert_equal(4, n)
Bram Moolenaar43345542015-11-29 17:35:35 +010019 let l = [1, 2, 3]
Bram Moolenaar683fa182015-11-30 21:38:24 +010020 call assert_equal([1, 2, 3], l)
Bram Moolenaarb50e5f52016-04-03 20:57:20 +020021
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_notequal()
29 let n = 4
30 call assert_notequal('foo', n)
31 let s = 'foo'
32 call assert_notequal([1, 2, 3], s)
33
34 call assert_notequal('foo', s)
Bram Moolenaar5869cf02017-01-14 20:06:14 +010035 call assert_match("Expected not equal to 'foo'", v:errors[0])
Bram Moolenaarb50e5f52016-04-03 20:57:20 +020036 call remove(v:errors, 0)
Bram Moolenaar43345542015-11-29 17:35:35 +010037endfunc
Bram Moolenaar2d820802015-12-31 20:46:39 +010038
Bram Moolenaar37175402017-03-18 20:18:45 +010039func Test_assert_report()
40 call assert_report('something is wrong')
41 call assert_match('something is wrong', v:errors[0])
42 call remove(v:errors, 0)
43endfunc
44
Bram Moolenaarda5dcd92016-01-19 14:31:20 +010045func Test_assert_exception()
46 try
47 nocommand
48 catch
49 call assert_exception('E492:')
50 endtry
51
52 try
53 nocommand
54 catch
55 try
56 " illegal argument, get NULL for error
57 call assert_exception([])
58 catch
59 call assert_exception('E730:')
60 endtry
61 endtry
62endfunc
63
Bram Moolenaara542c682016-01-31 16:28:04 +010064func Test_wrong_error_type()
65 let save_verrors = v:errors
66 let v:['errors'] = {'foo': 3}
67 call assert_equal('yes', 'no')
68 let verrors = v:errors
69 let v:errors = save_verrors
70 call assert_equal(type([]), type(verrors))
71endfunc
72
Bram Moolenaarf1551962016-03-15 12:55:58 +010073func Test_compare_fail()
74 let s:v = {}
75 let s:x = {"a": s:v}
76 let s:v["b"] = s:x
77 let s:w = {"c": s:x, "d": ''}
78 try
79 call assert_equal(s:w, '')
80 catch
81 call assert_exception('E724:')
Bram Moolenaarea6553b2016-03-27 15:13:38 +020082 call assert_match("Expected NULL but got ''", v:errors[0])
Bram Moolenaarf1551962016-03-15 12:55:58 +010083 call remove(v:errors, 0)
84 endtry
85endfunc
86
Bram Moolenaarea6553b2016-03-27 15:13:38 +020087func Test_match()
88 call assert_match('^f.*b.*r$', 'foobar')
89
90 call assert_match('bar.*foo', 'foobar')
91 call assert_match("Pattern 'bar.*foo' does not match 'foobar'", v:errors[0])
92 call remove(v:errors, 0)
93
94 call assert_match('bar.*foo', 'foobar', 'wrong')
95 call assert_match('wrong', v:errors[0])
96 call remove(v:errors, 0)
97endfunc
98
Bram Moolenaarb50e5f52016-04-03 20:57:20 +020099func Test_notmatch()
100 call assert_notmatch('foo', 'bar')
101 call assert_notmatch('^foobar$', 'foobars')
102
103 call assert_notmatch('foo', 'foobar')
104 call assert_match("Pattern 'foo' does match 'foobar'", v:errors[0])
105 call remove(v:errors, 0)
106endfunc
107
Bram Moolenaar1abb5022016-03-15 13:33:55 +0100108func Test_assert_fail_fails()
109 call assert_fails('xxx', {})
Bram Moolenaarea6553b2016-03-27 15:13:38 +0200110 call assert_match("Expected {} but got 'E731:", v:errors[0])
Bram Moolenaar1abb5022016-03-15 13:33:55 +0100111 call remove(v:errors, 0)
112endfunc
113
Bram Moolenaar61c04492016-07-23 15:35:35 +0200114func Test_assert_inrange()
115 call assert_inrange(7, 7, 7)
116 call assert_inrange(5, 7, 5)
117 call assert_inrange(5, 7, 6)
118 call assert_inrange(5, 7, 7)
119
120 call assert_inrange(5, 7, 4)
121 call assert_match("Expected range 5 - 7, but got 4", v:errors[0])
122 call remove(v:errors, 0)
123 call assert_inrange(5, 7, 8)
124 call assert_match("Expected range 5 - 7, but got 8", v:errors[0])
125 call remove(v:errors, 0)
Bram Moolenaar34215662016-12-04 13:37:41 +0100126
127 call assert_fails('call assert_inrange(1, 1)', 'E119:')
Bram Moolenaar61c04492016-07-23 15:35:35 +0200128endfunc
Bram Moolenaarf1551962016-03-15 12:55:58 +0100129
Bram Moolenaarc7b831c2017-01-28 18:08:12 +0100130func Test_assert_with_msg()
131 call assert_equal('foo', 'bar', 'testing')
132 call assert_match("testing: Expected 'foo' but got 'bar'", v:errors[0])
133 call remove(v:errors, 0)
134endfunc
135
Bram Moolenaareb992cb2017-03-09 18:20:16 +0100136func Test_override()
137 call test_override('char_avail', 1)
138 call test_override('redraw', 1)
139 call test_override('ALL', 0)
140 call assert_fails("call test_override('xxx', 1)", 'E475')
141 call assert_fails("call test_override('redraw', 'yes')", 'E474')
142endfunc
143
Bram Moolenaar2d820802015-12-31 20:46:39 +0100144func Test_user_is_happy()
145 smile
146 sleep 300m
147endfunc