1" Test that the methods used for testing work. 2 3func Test_assert_false() 4 call assert_equal(0, assert_false(0)) 5 call assert_equal(0, assert_false(v:false)) 6 call assert_equal(0, v:false->assert_false()) 7 8 call assert_equal(1, assert_false(123)) 9 call assert_match("Expected False but got 123", v:errors[0]) 10 call remove(v:errors, 0) 11 12 call assert_equal(1, 123->assert_false()) 13 call assert_match("Expected False but got 123", v:errors[0]) 14 call remove(v:errors, 0) 15endfunc 16 17func Test_assert_true() 18 call assert_equal(0, assert_true(1)) 19 call assert_equal(0, assert_true(123)) 20 call assert_equal(0, assert_true(v:true)) 21 call assert_equal(0, v:true->assert_true()) 22 23 call assert_equal(1, assert_true(0)) 24 call assert_match("Expected True but got 0", v:errors[0]) 25 call remove(v:errors, 0) 26 27 call assert_equal(1, 0->assert_true()) 28 call assert_match("Expected True but got 0", v:errors[0]) 29 call remove(v:errors, 0) 30endfunc 31 32func Test_assert_equal() 33 let s = 'foo' 34 call assert_equal(0, assert_equal('foo', s)) 35 let n = 4 36 call assert_equal(0, assert_equal(4, n)) 37 let l = [1, 2, 3] 38 call assert_equal(0, assert_equal([1, 2, 3], l)) 39 call assert_equal(test_null_list(), test_null_list()) 40 call assert_equal(test_null_list(), []) 41 call assert_equal([], test_null_list()) 42 43 let s = 'foo' 44 call assert_equal(1, assert_equal('bar', s)) 45 call assert_match("Expected 'bar' but got 'foo'", v:errors[0]) 46 call remove(v:errors, 0) 47 48 call assert_equal('XxxxxxxxxxxxxxxxxxxxxxX', 'XyyyyyyyyyyyyyyyyyyyyyyyyyX') 49 call assert_match("Expected 'X\\\\\\[x occurs 21 times]X' but got 'X\\\\\\[y occurs 25 times]X'", v:errors[0]) 50 call remove(v:errors, 0) 51endfunc 52 53func Test_assert_equalfile() 54 call assert_equal(1, assert_equalfile('abcabc', 'xyzxyz')) 55 call assert_match("E485: Can't read file abcabc", v:errors[0]) 56 call remove(v:errors, 0) 57 58 let goodtext = ["one", "two", "three"] 59 call writefile(goodtext, 'Xone') 60 call assert_equal(1, 'Xone'->assert_equalfile('xyzxyz')) 61 call assert_match("E485: Can't read file xyzxyz", v:errors[0]) 62 call remove(v:errors, 0) 63 64 call writefile(goodtext, 'Xtwo') 65 call assert_equal(0, assert_equalfile('Xone', 'Xtwo')) 66 67 call writefile([goodtext[0]], 'Xone') 68 call assert_equal(1, assert_equalfile('Xone', 'Xtwo')) 69 call assert_match("first file is shorter", v:errors[0]) 70 call remove(v:errors, 0) 71 72 call writefile(goodtext, 'Xone') 73 call writefile([goodtext[0]], 'Xtwo') 74 call assert_equal(1, assert_equalfile('Xone', 'Xtwo')) 75 call assert_match("second file is shorter", v:errors[0]) 76 call remove(v:errors, 0) 77 78 call writefile(['1234X89'], 'Xone') 79 call writefile(['1234Y89'], 'Xtwo') 80 call assert_equal(1, assert_equalfile('Xone', 'Xtwo')) 81 call assert_match("difference at byte 4", v:errors[0]) 82 call remove(v:errors, 0) 83 84 call assert_equal(1, assert_equalfile('Xone', 'Xtwo', 'a message')) 85 call assert_match("a message: difference at byte 4", v:errors[0]) 86 call remove(v:errors, 0) 87 88 call delete('Xone') 89 call delete('Xtwo') 90endfunc 91 92func Test_assert_notequal() 93 let n = 4 94 call assert_equal(0, assert_notequal('foo', n)) 95 let s = 'foo' 96 call assert_equal(0, assert_notequal([1, 2, 3], s)) 97 98 call assert_equal(1, assert_notequal('foo', s)) 99 call assert_match("Expected not equal to 'foo'", v:errors[0]) 100 call remove(v:errors, 0) 101endfunc 102 103func Test_assert_report() 104 call assert_equal(1, assert_report('something is wrong')) 105 call assert_match('something is wrong', v:errors[0]) 106 call remove(v:errors, 0) 107 call assert_equal(1, 'also wrong'->assert_report()) 108 call assert_match('also wrong', v:errors[0]) 109 call remove(v:errors, 0) 110endfunc 111 112func Test_assert_exception() 113 try 114 nocommand 115 catch 116 call assert_equal(0, assert_exception('E492:')) 117 endtry 118 119 try 120 nocommand 121 catch 122 try 123 " illegal argument, get NULL for error 124 call assert_equal(1, assert_exception([])) 125 catch 126 call assert_equal(0, assert_exception('E730:')) 127 endtry 128 endtry 129endfunc 130 131func Test_wrong_error_type() 132 let save_verrors = v:errors 133 let v:['errors'] = {'foo': 3} 134 call assert_equal('yes', 'no') 135 let verrors = v:errors 136 let v:errors = save_verrors 137 call assert_equal(type([]), type(verrors)) 138endfunc 139 140func Test_compare_fail() 141 let s:v = {} 142 let s:x = {"a": s:v} 143 let s:v["b"] = s:x 144 let s:w = {"c": s:x, "d": ''} 145 try 146 call assert_equal(s:w, '') 147 catch 148 call assert_equal(0, assert_exception('E724:')) 149 call assert_match("Expected NULL but got ''", v:errors[0]) 150 call remove(v:errors, 0) 151 endtry 152endfunc 153 154func Test_match() 155 call assert_equal(0, assert_match('^f.*b.*r$', 'foobar')) 156 157 call assert_equal(1, assert_match('bar.*foo', 'foobar')) 158 call assert_match("Pattern 'bar.*foo' does not match 'foobar'", v:errors[0]) 159 call remove(v:errors, 0) 160 161 call assert_equal(1, assert_match('bar.*foo', 'foobar', 'wrong')) 162 call assert_match('wrong', v:errors[0]) 163 call remove(v:errors, 0) 164 165 call assert_equal(1, 'foobar'->assert_match('bar.*foo', 'wrong')) 166 call assert_match('wrong', v:errors[0]) 167 call remove(v:errors, 0) 168endfunc 169 170func Test_notmatch() 171 call assert_equal(0, assert_notmatch('foo', 'bar')) 172 call assert_equal(0, assert_notmatch('^foobar$', 'foobars')) 173 174 call assert_equal(1, assert_notmatch('foo', 'foobar')) 175 call assert_match("Pattern 'foo' does match 'foobar'", v:errors[0]) 176 call remove(v:errors, 0) 177 178 call assert_equal(1, 'foobar'->assert_notmatch('foo')) 179 call assert_match("Pattern 'foo' does match 'foobar'", v:errors[0]) 180 call remove(v:errors, 0) 181endfunc 182 183func Test_assert_fail_fails() 184 call assert_equal(1, assert_fails('xxx', {})) 185 call assert_match("Expected {} but got 'E731:", v:errors[0]) 186 call remove(v:errors, 0) 187 188 call assert_equal(1, assert_fails('xxx', {}, 'stupid')) 189 call assert_match("stupid: Expected {} but got 'E731:", v:errors[0]) 190 call remove(v:errors, 0) 191 192 call assert_equal(1, assert_fails('echo', '', 'echo command')) 193 call assert_match("command did not fail: echo command", v:errors[0]) 194 call remove(v:errors, 0) 195 196 call assert_equal(1, 'echo'->assert_fails('', 'echo command')) 197 call assert_match("command did not fail: echo command", v:errors[0]) 198 call remove(v:errors, 0) 199endfunc 200 201func Test_assert_fails_in_try_block() 202 try 203 call assert_equal(0, assert_fails('throw "error"')) 204 endtry 205endfunc 206 207func Test_assert_beeps() 208 new 209 call assert_equal(0, assert_beeps('normal h')) 210 211 call assert_equal(1, assert_beeps('normal 0')) 212 call assert_match("command did not beep: normal 0", v:errors[0]) 213 call remove(v:errors, 0) 214 215 call assert_equal(0, 'normal h'->assert_beeps()) 216 call assert_equal(1, 'normal 0'->assert_beeps()) 217 call assert_match("command did not beep: normal 0", v:errors[0]) 218 call remove(v:errors, 0) 219 220 bwipe 221endfunc 222 223func Test_assert_inrange() 224 call assert_equal(0, assert_inrange(7, 7, 7)) 225 call assert_equal(0, assert_inrange(5, 7, 5)) 226 call assert_equal(0, assert_inrange(5, 7, 6)) 227 call assert_equal(0, assert_inrange(5, 7, 7)) 228 229 call assert_equal(1, assert_inrange(5, 7, 4)) 230 call assert_match("Expected range 5 - 7, but got 4", v:errors[0]) 231 call remove(v:errors, 0) 232 call assert_equal(1, assert_inrange(5, 7, 8)) 233 call assert_match("Expected range 5 - 7, but got 8", v:errors[0]) 234 call remove(v:errors, 0) 235 236 call assert_equal(0, 5->assert_inrange(5, 7)) 237 call assert_equal(0, 7->assert_inrange(5, 7)) 238 call assert_equal(1, 8->assert_inrange(5, 7)) 239 call assert_match("Expected range 5 - 7, but got 8", v:errors[0]) 240 call remove(v:errors, 0) 241 242 call assert_fails('call assert_inrange(1, 1)', 'E119:') 243 244 if has('float') 245 call assert_equal(0, assert_inrange(7.0, 7, 7)) 246 call assert_equal(0, assert_inrange(7, 7.0, 7)) 247 call assert_equal(0, assert_inrange(7, 7, 7.0)) 248 call assert_equal(0, assert_inrange(5, 7, 5.0)) 249 call assert_equal(0, assert_inrange(5, 7, 6.0)) 250 call assert_equal(0, assert_inrange(5, 7, 7.0)) 251 252 call assert_equal(1, assert_inrange(5, 7, 4.0)) 253 call assert_match("Expected range 5.0 - 7.0, but got 4.0", v:errors[0]) 254 call remove(v:errors, 0) 255 call assert_equal(1, assert_inrange(5, 7, 8.0)) 256 call assert_match("Expected range 5.0 - 7.0, but got 8.0", v:errors[0]) 257 call remove(v:errors, 0) 258 endif 259endfunc 260 261func Test_assert_with_msg() 262 call assert_equal('foo', 'bar', 'testing') 263 call assert_match("testing: Expected 'foo' but got 'bar'", v:errors[0]) 264 call remove(v:errors, 0) 265endfunc 266 267func Test_override() 268 call test_override('char_avail', 1) 269 eval 1->test_override('redraw') 270 call test_override('ALL', 0) 271 call assert_fails("call test_override('xxx', 1)", 'E475') 272 call assert_fails("call test_override('redraw', 'yes')", 'E474') 273endfunc 274 275func Test_mouse_position() 276 let save_mouse = &mouse 277 set mouse=a 278 new 279 call setline(1, ['line one', 'line two']) 280 call assert_equal([0, 1, 1, 0], getpos('.')) 281 call test_setmouse(1, 5) 282 call feedkeys("\<LeftMouse>", "xt") 283 call assert_equal([0, 1, 5, 0], getpos('.')) 284 call test_setmouse(2, 20) 285 call feedkeys("\<LeftMouse>", "xt") 286 call assert_equal([0, 2, 8, 0], getpos('.')) 287 call test_setmouse(5, 1) 288 call feedkeys("\<LeftMouse>", "xt") 289 call assert_equal([0, 2, 1, 0], getpos('.')) 290 bwipe! 291 let &mouse = save_mouse 292endfunc 293 294func Test_user_is_happy() 295 smile 296 sleep 300m 297endfunc 298 299" Must be last. 300func Test_zz_quit_detected() 301 " Verify that if a test function ends Vim the test script detects this. 302 quit 303endfunc 304