143345546SBram Moolenaar" Test that the methods used for testing work. 243345546SBram Moolenaar 3683fa185SBram Moolenaarfunc Test_assert_false() 465a54649SBram Moolenaar call assert_equal(0, assert_false(0)) 565a54649SBram Moolenaar call assert_equal(0, assert_false(v:false)) 665a54649SBram Moolenaar 765a54649SBram Moolenaar call assert_equal(1, assert_false(123)) 865a54649SBram Moolenaar call assert_match("Expected False but got 123", v:errors[0]) 965a54649SBram Moolenaar call remove(v:errors, 0) 1043345546SBram Moolenaarendfunc 1143345546SBram Moolenaar 12683fa185SBram Moolenaarfunc Test_assert_true() 1365a54649SBram Moolenaar call assert_equal(0, assert_true(1)) 1465a54649SBram Moolenaar call assert_equal(0, assert_true(123)) 1565a54649SBram Moolenaar call assert_equal(0, assert_true(v:true)) 1665a54649SBram Moolenaar 1765a54649SBram Moolenaar call assert_equal(1, assert_true(0)) 1865a54649SBram Moolenaar call assert_match("Expected True but got 0", v:errors[0]) 1965a54649SBram Moolenaar call remove(v:errors, 0) 2043345546SBram Moolenaarendfunc 2143345546SBram Moolenaar 22683fa185SBram Moolenaarfunc Test_assert_equal() 2343345546SBram Moolenaar let s = 'foo' 2465a54649SBram Moolenaar call assert_equal(0, assert_equal('foo', s)) 2543345546SBram Moolenaar let n = 4 2665a54649SBram Moolenaar call assert_equal(0, assert_equal(4, n)) 2743345546SBram Moolenaar let l = [1, 2, 3] 2865a54649SBram Moolenaar call assert_equal(0, assert_equal([1, 2, 3], l)) 29b50e5f56SBram Moolenaar 30b50e5f56SBram Moolenaar let s = 'foo' 3165a54649SBram Moolenaar call assert_equal(1, assert_equal('bar', s)) 32b50e5f56SBram Moolenaar call assert_match("Expected 'bar' but got 'foo'", v:errors[0]) 33b50e5f56SBram Moolenaar call remove(v:errors, 0) 3486576712SBram Moolenaar 3586576712SBram Moolenaar call assert_equal('XxxxxxxxxxxxxxxxxxxxxxX', 'XyyyyyyyyyyyyyyyyyyyyyyyyyX') 3686576712SBram Moolenaar call assert_match("Expected 'X\\\\\\[x occurs 21 times]X' but got 'X\\\\\\[y occurs 25 times]X'", v:errors[0]) 3786576712SBram Moolenaar call remove(v:errors, 0) 38b50e5f56SBram Moolenaarendfunc 39b50e5f56SBram Moolenaar 40d96ff165SBram Moolenaarfunc Test_assert_equalfile() 4165a54649SBram Moolenaar call assert_equal(1, assert_equalfile('abcabc', 'xyzxyz')) 42d96ff165SBram Moolenaar call assert_match("E485: Can't read file abcabc", v:errors[0]) 43d96ff165SBram Moolenaar call remove(v:errors, 0) 44d96ff165SBram Moolenaar 45d96ff165SBram Moolenaar let goodtext = ["one", "two", "three"] 46d96ff165SBram Moolenaar call writefile(goodtext, 'Xone') 4765a54649SBram Moolenaar call assert_equal(1, assert_equalfile('Xone', 'xyzxyz')) 48d96ff165SBram Moolenaar call assert_match("E485: Can't read file xyzxyz", v:errors[0]) 49d96ff165SBram Moolenaar call remove(v:errors, 0) 50d96ff165SBram Moolenaar 51d96ff165SBram Moolenaar call writefile(goodtext, 'Xtwo') 5265a54649SBram Moolenaar call assert_equal(0, assert_equalfile('Xone', 'Xtwo')) 53d96ff165SBram Moolenaar 54d96ff165SBram Moolenaar call writefile([goodtext[0]], 'Xone') 5565a54649SBram Moolenaar call assert_equal(1, assert_equalfile('Xone', 'Xtwo')) 56d96ff165SBram Moolenaar call assert_match("first file is shorter", v:errors[0]) 57d96ff165SBram Moolenaar call remove(v:errors, 0) 58d96ff165SBram Moolenaar 59d96ff165SBram Moolenaar call writefile(goodtext, 'Xone') 60d96ff165SBram Moolenaar call writefile([goodtext[0]], 'Xtwo') 6165a54649SBram Moolenaar call assert_equal(1, assert_equalfile('Xone', 'Xtwo')) 62d96ff165SBram Moolenaar call assert_match("second file is shorter", v:errors[0]) 63d96ff165SBram Moolenaar call remove(v:errors, 0) 64d96ff165SBram Moolenaar 65d96ff165SBram Moolenaar call writefile(['1234X89'], 'Xone') 66d96ff165SBram Moolenaar call writefile(['1234Y89'], 'Xtwo') 6765a54649SBram Moolenaar call assert_equal(1, assert_equalfile('Xone', 'Xtwo')) 68d96ff165SBram Moolenaar call assert_match("difference at byte 4", v:errors[0]) 69d96ff165SBram Moolenaar call remove(v:errors, 0) 70d96ff165SBram Moolenaar 71d96ff165SBram Moolenaar call delete('Xone') 72d96ff165SBram Moolenaar call delete('Xtwo') 73d96ff165SBram Moolenaarendfunc 74d96ff165SBram Moolenaar 75b50e5f56SBram Moolenaarfunc Test_assert_notequal() 76b50e5f56SBram Moolenaar let n = 4 7765a54649SBram Moolenaar call assert_equal(0, assert_notequal('foo', n)) 78b50e5f56SBram Moolenaar let s = 'foo' 7965a54649SBram Moolenaar call assert_equal(0, assert_notequal([1, 2, 3], s)) 80b50e5f56SBram Moolenaar 8165a54649SBram Moolenaar call assert_equal(1, assert_notequal('foo', s)) 825869cf06SBram Moolenaar call assert_match("Expected not equal to 'foo'", v:errors[0]) 83b50e5f56SBram Moolenaar call remove(v:errors, 0) 8443345546SBram Moolenaarendfunc 852d820808SBram Moolenaar 8637175409SBram Moolenaarfunc Test_assert_report() 8765a54649SBram Moolenaar call assert_equal(1, assert_report('something is wrong')) 8837175409SBram Moolenaar call assert_match('something is wrong', v:errors[0]) 8937175409SBram Moolenaar call remove(v:errors, 0) 9037175409SBram Moolenaarendfunc 9137175409SBram Moolenaar 92da5dcd93SBram Moolenaarfunc Test_assert_exception() 93da5dcd93SBram Moolenaar try 94da5dcd93SBram Moolenaar nocommand 95da5dcd93SBram Moolenaar catch 9665a54649SBram Moolenaar call assert_equal(0, assert_exception('E492:')) 97da5dcd93SBram Moolenaar endtry 98da5dcd93SBram Moolenaar 99da5dcd93SBram Moolenaar try 100da5dcd93SBram Moolenaar nocommand 101da5dcd93SBram Moolenaar catch 102da5dcd93SBram Moolenaar try 103da5dcd93SBram Moolenaar " illegal argument, get NULL for error 10465a54649SBram Moolenaar call assert_equal(1, assert_exception([])) 105da5dcd93SBram Moolenaar catch 10665a54649SBram Moolenaar call assert_equal(0, assert_exception('E730:')) 107da5dcd93SBram Moolenaar endtry 108da5dcd93SBram Moolenaar endtry 109da5dcd93SBram Moolenaarendfunc 110da5dcd93SBram Moolenaar 111a542c680SBram Moolenaarfunc Test_wrong_error_type() 112a542c680SBram Moolenaar let save_verrors = v:errors 113a542c680SBram Moolenaar let v:['errors'] = {'foo': 3} 114a542c680SBram Moolenaar call assert_equal('yes', 'no') 115a542c680SBram Moolenaar let verrors = v:errors 116a542c680SBram Moolenaar let v:errors = save_verrors 117a542c680SBram Moolenaar call assert_equal(type([]), type(verrors)) 118a542c680SBram Moolenaarendfunc 119a542c680SBram Moolenaar 120f1551964SBram Moolenaarfunc Test_compare_fail() 121f1551964SBram Moolenaar let s:v = {} 122f1551964SBram Moolenaar let s:x = {"a": s:v} 123f1551964SBram Moolenaar let s:v["b"] = s:x 124f1551964SBram Moolenaar let s:w = {"c": s:x, "d": ''} 125f1551964SBram Moolenaar try 126f1551964SBram Moolenaar call assert_equal(s:w, '') 127f1551964SBram Moolenaar catch 12865a54649SBram Moolenaar call assert_equal(0, assert_exception('E724:')) 129ea6553beSBram Moolenaar call assert_match("Expected NULL but got ''", v:errors[0]) 130f1551964SBram Moolenaar call remove(v:errors, 0) 131f1551964SBram Moolenaar endtry 132f1551964SBram Moolenaarendfunc 133f1551964SBram Moolenaar 134ea6553beSBram Moolenaarfunc Test_match() 13565a54649SBram Moolenaar call assert_equal(0, assert_match('^f.*b.*r$', 'foobar')) 136ea6553beSBram Moolenaar 13765a54649SBram Moolenaar call assert_equal(1, assert_match('bar.*foo', 'foobar')) 138ea6553beSBram Moolenaar call assert_match("Pattern 'bar.*foo' does not match 'foobar'", v:errors[0]) 139ea6553beSBram Moolenaar call remove(v:errors, 0) 140ea6553beSBram Moolenaar 14165a54649SBram Moolenaar call assert_equal(1, assert_match('bar.*foo', 'foobar', 'wrong')) 142ea6553beSBram Moolenaar call assert_match('wrong', v:errors[0]) 143ea6553beSBram Moolenaar call remove(v:errors, 0) 144ea6553beSBram Moolenaarendfunc 145ea6553beSBram Moolenaar 146b50e5f56SBram Moolenaarfunc Test_notmatch() 14765a54649SBram Moolenaar call assert_equal(0, assert_notmatch('foo', 'bar')) 14865a54649SBram Moolenaar call assert_equal(0, assert_notmatch('^foobar$', 'foobars')) 149b50e5f56SBram Moolenaar 15065a54649SBram Moolenaar call assert_equal(1, assert_notmatch('foo', 'foobar')) 151b50e5f56SBram Moolenaar call assert_match("Pattern 'foo' does match 'foobar'", v:errors[0]) 152b50e5f56SBram Moolenaar call remove(v:errors, 0) 153b50e5f56SBram Moolenaarendfunc 154b50e5f56SBram Moolenaar 1551abb5026SBram Moolenaarfunc Test_assert_fail_fails() 15665a54649SBram Moolenaar call assert_equal(1, assert_fails('xxx', {})) 157ea6553beSBram Moolenaar call assert_match("Expected {} but got 'E731:", v:errors[0]) 1581abb5026SBram Moolenaar call remove(v:errors, 0) 1591307d1c0SBram Moolenaar 1601307d1c0SBram Moolenaar call assert_equal(1, assert_fails('xxx', {}, 'stupid')) 1611307d1c0SBram Moolenaar call assert_match("stupid: Expected {} but got 'E731:", v:errors[0]) 1621307d1c0SBram Moolenaar call remove(v:errors, 0) 1631307d1c0SBram Moolenaar 1641307d1c0SBram Moolenaar call assert_equal(1, assert_fails('echo', '', 'echo command')) 1651307d1c0SBram Moolenaar call assert_match("command did not fail: echo command", v:errors[0]) 1661307d1c0SBram Moolenaar call remove(v:errors, 0) 1671abb5026SBram Moolenaarendfunc 1681abb5026SBram Moolenaar 169b48e96f6SBram Moolenaarfunc Test_assert_beeps() 170b48e96f6SBram Moolenaar new 17165a54649SBram Moolenaar call assert_equal(0, assert_beeps('normal h')) 172b48e96f6SBram Moolenaar 17365a54649SBram Moolenaar call assert_equal(1, assert_beeps('normal 0')) 174b48e96f6SBram Moolenaar call assert_match("command did not beep: normal 0", v:errors[0]) 175b48e96f6SBram Moolenaar call remove(v:errors, 0) 176b48e96f6SBram Moolenaar bwipe 177b48e96f6SBram Moolenaarendfunc 178b48e96f6SBram Moolenaar 17961c04493SBram Moolenaarfunc Test_assert_inrange() 18065a54649SBram Moolenaar call assert_equal(0, assert_inrange(7, 7, 7)) 18165a54649SBram Moolenaar call assert_equal(0, assert_inrange(5, 7, 5)) 18265a54649SBram Moolenaar call assert_equal(0, assert_inrange(5, 7, 6)) 18365a54649SBram Moolenaar call assert_equal(0, assert_inrange(5, 7, 7)) 18461c04493SBram Moolenaar 18565a54649SBram Moolenaar call assert_equal(1, assert_inrange(5, 7, 4)) 18661c04493SBram Moolenaar call assert_match("Expected range 5 - 7, but got 4", v:errors[0]) 18761c04493SBram Moolenaar call remove(v:errors, 0) 18865a54649SBram Moolenaar call assert_equal(1, assert_inrange(5, 7, 8)) 18961c04493SBram Moolenaar call assert_match("Expected range 5 - 7, but got 8", v:errors[0]) 19061c04493SBram Moolenaar call remove(v:errors, 0) 19134215663SBram Moolenaar 19234215663SBram Moolenaar call assert_fails('call assert_inrange(1, 1)', 'E119:') 193*38f08e76SBram Moolenaar 194*38f08e76SBram Moolenaar if has('float') 195*38f08e76SBram Moolenaar call assert_equal(0, assert_inrange(7.0, 7, 7)) 196*38f08e76SBram Moolenaar call assert_equal(0, assert_inrange(7, 7.0, 7)) 197*38f08e76SBram Moolenaar call assert_equal(0, assert_inrange(7, 7, 7.0)) 198*38f08e76SBram Moolenaar call assert_equal(0, assert_inrange(5, 7, 5.0)) 199*38f08e76SBram Moolenaar call assert_equal(0, assert_inrange(5, 7, 6.0)) 200*38f08e76SBram Moolenaar call assert_equal(0, assert_inrange(5, 7, 7.0)) 201*38f08e76SBram Moolenaar 202*38f08e76SBram Moolenaar call assert_equal(1, assert_inrange(5, 7, 4.0)) 203*38f08e76SBram Moolenaar call assert_match("Expected range 5.0 - 7.0, but got 4.0", v:errors[0]) 204*38f08e76SBram Moolenaar call remove(v:errors, 0) 205*38f08e76SBram Moolenaar call assert_equal(1, assert_inrange(5, 7, 8.0)) 206*38f08e76SBram Moolenaar call assert_match("Expected range 5.0 - 7.0, but got 8.0", v:errors[0]) 207*38f08e76SBram Moolenaar call remove(v:errors, 0) 208*38f08e76SBram Moolenaar endif 20961c04493SBram Moolenaarendfunc 210f1551964SBram Moolenaar 211c7b831caSBram Moolenaarfunc Test_assert_with_msg() 212c7b831caSBram Moolenaar call assert_equal('foo', 'bar', 'testing') 213c7b831caSBram Moolenaar call assert_match("testing: Expected 'foo' but got 'bar'", v:errors[0]) 214c7b831caSBram Moolenaar call remove(v:errors, 0) 215c7b831caSBram Moolenaarendfunc 216c7b831caSBram Moolenaar 217eb992cb9SBram Moolenaarfunc Test_override() 218eb992cb9SBram Moolenaar call test_override('char_avail', 1) 219eb992cb9SBram Moolenaar call test_override('redraw', 1) 220eb992cb9SBram Moolenaar call test_override('ALL', 0) 221eb992cb9SBram Moolenaar call assert_fails("call test_override('xxx', 1)", 'E475') 222eb992cb9SBram Moolenaar call assert_fails("call test_override('redraw', 'yes')", 'E474') 223eb992cb9SBram Moolenaarendfunc 224eb992cb9SBram Moolenaar 2252d820808SBram Moolenaarfunc Test_user_is_happy() 2262d820808SBram Moolenaar smile 2272d820808SBram Moolenaar sleep 300m 2282d820808SBram Moolenaarendfunc 2298903676dSBram Moolenaar 2308903676dSBram Moolenaar" Must be last. 2318903676dSBram Moolenaarfunc Test_zz_quit_detected() 2328903676dSBram Moolenaar " Verify that if a test function ends Vim the test script detects this. 2338903676dSBram Moolenaar quit 2348903676dSBram Moolenaarendfunc 235