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