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