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)) 624278d24SBram Moolenaar call assert_equal(0, v:false->assert_false()) 765a54649SBram Moolenaar 865a54649SBram Moolenaar call assert_equal(1, assert_false(123)) 965a54649SBram Moolenaar call assert_match("Expected False but got 123", v:errors[0]) 1065a54649SBram Moolenaar call remove(v:errors, 0) 1124278d24SBram Moolenaar 1224278d24SBram Moolenaar call assert_equal(1, 123->assert_false()) 1324278d24SBram Moolenaar call assert_match("Expected False but got 123", v:errors[0]) 1424278d24SBram Moolenaar call remove(v:errors, 0) 1543345546SBram Moolenaarendfunc 1643345546SBram Moolenaar 17683fa185SBram Moolenaarfunc Test_assert_true() 1865a54649SBram Moolenaar call assert_equal(0, assert_true(1)) 1965a54649SBram Moolenaar call assert_equal(0, assert_true(123)) 2065a54649SBram Moolenaar call assert_equal(0, assert_true(v:true)) 2124278d24SBram Moolenaar call assert_equal(0, v:true->assert_true()) 2265a54649SBram Moolenaar 2365a54649SBram Moolenaar call assert_equal(1, assert_true(0)) 2465a54649SBram Moolenaar call assert_match("Expected True but got 0", v:errors[0]) 2565a54649SBram Moolenaar call remove(v:errors, 0) 2624278d24SBram Moolenaar 2724278d24SBram Moolenaar call assert_equal(1, 0->assert_true()) 2824278d24SBram Moolenaar call assert_match("Expected True but got 0", v:errors[0]) 2924278d24SBram Moolenaar call remove(v:errors, 0) 3043345546SBram Moolenaarendfunc 3143345546SBram Moolenaar 32683fa185SBram Moolenaarfunc Test_assert_equal() 3343345546SBram Moolenaar let s = 'foo' 3465a54649SBram Moolenaar call assert_equal(0, assert_equal('foo', s)) 3543345546SBram Moolenaar let n = 4 3665a54649SBram Moolenaar call assert_equal(0, assert_equal(4, n)) 3743345546SBram Moolenaar let l = [1, 2, 3] 3865a54649SBram Moolenaar call assert_equal(0, assert_equal([1, 2, 3], l)) 397b293c73SBram Moolenaar call assert_equal(test_null_list(), test_null_list()) 407b293c73SBram Moolenaar call assert_equal(test_null_list(), []) 417b293c73SBram Moolenaar call assert_equal([], test_null_list()) 42b50e5f56SBram Moolenaar 43b50e5f56SBram Moolenaar let s = 'foo' 4465a54649SBram Moolenaar call assert_equal(1, assert_equal('bar', s)) 45b50e5f56SBram Moolenaar call assert_match("Expected 'bar' but got 'foo'", v:errors[0]) 46b50e5f56SBram Moolenaar call remove(v:errors, 0) 4786576712SBram Moolenaar 4886576712SBram Moolenaar call assert_equal('XxxxxxxxxxxxxxxxxxxxxxX', 'XyyyyyyyyyyyyyyyyyyyyyyyyyX') 4986576712SBram Moolenaar call assert_match("Expected 'X\\\\\\[x occurs 21 times]X' but got 'X\\\\\\[y occurs 25 times]X'", v:errors[0]) 5086576712SBram Moolenaar call remove(v:errors, 0) 51b50e5f56SBram Moolenaarendfunc 52b50e5f56SBram Moolenaar 53d96ff165SBram Moolenaarfunc Test_assert_equalfile() 5465a54649SBram Moolenaar call assert_equal(1, assert_equalfile('abcabc', 'xyzxyz')) 55d96ff165SBram Moolenaar call assert_match("E485: Can't read file abcabc", v:errors[0]) 56d96ff165SBram Moolenaar call remove(v:errors, 0) 57d96ff165SBram Moolenaar 58d96ff165SBram Moolenaar let goodtext = ["one", "two", "three"] 59d96ff165SBram Moolenaar call writefile(goodtext, 'Xone') 60e49fbff3SBram Moolenaar call assert_equal(1, 'Xone'->assert_equalfile('xyzxyz')) 61d96ff165SBram Moolenaar call assert_match("E485: Can't read file xyzxyz", v:errors[0]) 62d96ff165SBram Moolenaar call remove(v:errors, 0) 63d96ff165SBram Moolenaar 64d96ff165SBram Moolenaar call writefile(goodtext, 'Xtwo') 6565a54649SBram Moolenaar call assert_equal(0, assert_equalfile('Xone', 'Xtwo')) 66d96ff165SBram Moolenaar 67d96ff165SBram Moolenaar call writefile([goodtext[0]], 'Xone') 6865a54649SBram Moolenaar call assert_equal(1, assert_equalfile('Xone', 'Xtwo')) 69d96ff165SBram Moolenaar call assert_match("first file is shorter", v:errors[0]) 70d96ff165SBram Moolenaar call remove(v:errors, 0) 71d96ff165SBram Moolenaar 72d96ff165SBram Moolenaar call writefile(goodtext, 'Xone') 73d96ff165SBram Moolenaar call writefile([goodtext[0]], 'Xtwo') 7465a54649SBram Moolenaar call assert_equal(1, assert_equalfile('Xone', 'Xtwo')) 75d96ff165SBram Moolenaar call assert_match("second file is shorter", v:errors[0]) 76d96ff165SBram Moolenaar call remove(v:errors, 0) 77d96ff165SBram Moolenaar 78d96ff165SBram Moolenaar call writefile(['1234X89'], 'Xone') 79d96ff165SBram Moolenaar call writefile(['1234Y89'], 'Xtwo') 8065a54649SBram Moolenaar call assert_equal(1, assert_equalfile('Xone', 'Xtwo')) 81d96ff165SBram Moolenaar call assert_match("difference at byte 4", v:errors[0]) 82d96ff165SBram Moolenaar call remove(v:errors, 0) 83d96ff165SBram Moolenaar 84*fb517bacSBram Moolenaar call assert_equal(1, assert_equalfile('Xone', 'Xtwo', 'a message')) 85*fb517bacSBram Moolenaar call assert_match("a message: difference at byte 4", v:errors[0]) 86*fb517bacSBram Moolenaar call remove(v:errors, 0) 87*fb517bacSBram Moolenaar 88d96ff165SBram Moolenaar call delete('Xone') 89d96ff165SBram Moolenaar call delete('Xtwo') 90d96ff165SBram Moolenaarendfunc 91d96ff165SBram Moolenaar 92b50e5f56SBram Moolenaarfunc Test_assert_notequal() 93b50e5f56SBram Moolenaar let n = 4 9465a54649SBram Moolenaar call assert_equal(0, assert_notequal('foo', n)) 95b50e5f56SBram Moolenaar let s = 'foo' 9665a54649SBram Moolenaar call assert_equal(0, assert_notequal([1, 2, 3], s)) 97b50e5f56SBram Moolenaar 9865a54649SBram Moolenaar call assert_equal(1, assert_notequal('foo', s)) 995869cf06SBram Moolenaar call assert_match("Expected not equal to 'foo'", v:errors[0]) 100b50e5f56SBram Moolenaar call remove(v:errors, 0) 10143345546SBram Moolenaarendfunc 1022d820808SBram Moolenaar 10337175409SBram Moolenaarfunc Test_assert_report() 10465a54649SBram Moolenaar call assert_equal(1, assert_report('something is wrong')) 10537175409SBram Moolenaar call assert_match('something is wrong', v:errors[0]) 10637175409SBram Moolenaar call remove(v:errors, 0) 107e49fbff3SBram Moolenaar call assert_equal(1, 'also wrong'->assert_report()) 108e49fbff3SBram Moolenaar call assert_match('also wrong', v:errors[0]) 109e49fbff3SBram Moolenaar call remove(v:errors, 0) 11037175409SBram Moolenaarendfunc 11137175409SBram Moolenaar 112da5dcd93SBram Moolenaarfunc Test_assert_exception() 113da5dcd93SBram Moolenaar try 114da5dcd93SBram Moolenaar nocommand 115da5dcd93SBram Moolenaar catch 11665a54649SBram Moolenaar call assert_equal(0, assert_exception('E492:')) 117da5dcd93SBram Moolenaar endtry 118da5dcd93SBram Moolenaar 119da5dcd93SBram Moolenaar try 120da5dcd93SBram Moolenaar nocommand 121da5dcd93SBram Moolenaar catch 122da5dcd93SBram Moolenaar try 123da5dcd93SBram Moolenaar " illegal argument, get NULL for error 12465a54649SBram Moolenaar call assert_equal(1, assert_exception([])) 125da5dcd93SBram Moolenaar catch 12665a54649SBram Moolenaar call assert_equal(0, assert_exception('E730:')) 127da5dcd93SBram Moolenaar endtry 128da5dcd93SBram Moolenaar endtry 129da5dcd93SBram Moolenaarendfunc 130da5dcd93SBram Moolenaar 131a542c680SBram Moolenaarfunc Test_wrong_error_type() 132a542c680SBram Moolenaar let save_verrors = v:errors 133a542c680SBram Moolenaar let v:['errors'] = {'foo': 3} 134a542c680SBram Moolenaar call assert_equal('yes', 'no') 135a542c680SBram Moolenaar let verrors = v:errors 136a542c680SBram Moolenaar let v:errors = save_verrors 137a542c680SBram Moolenaar call assert_equal(type([]), type(verrors)) 138a542c680SBram Moolenaarendfunc 139a542c680SBram Moolenaar 140f1551964SBram Moolenaarfunc Test_compare_fail() 141f1551964SBram Moolenaar let s:v = {} 142f1551964SBram Moolenaar let s:x = {"a": s:v} 143f1551964SBram Moolenaar let s:v["b"] = s:x 144f1551964SBram Moolenaar let s:w = {"c": s:x, "d": ''} 145f1551964SBram Moolenaar try 146f1551964SBram Moolenaar call assert_equal(s:w, '') 147f1551964SBram Moolenaar catch 14865a54649SBram Moolenaar call assert_equal(0, assert_exception('E724:')) 149ea6553beSBram Moolenaar call assert_match("Expected NULL but got ''", v:errors[0]) 150f1551964SBram Moolenaar call remove(v:errors, 0) 151f1551964SBram Moolenaar endtry 152f1551964SBram Moolenaarendfunc 153f1551964SBram Moolenaar 154ea6553beSBram Moolenaarfunc Test_match() 15565a54649SBram Moolenaar call assert_equal(0, assert_match('^f.*b.*r$', 'foobar')) 156ea6553beSBram Moolenaar 15765a54649SBram Moolenaar call assert_equal(1, assert_match('bar.*foo', 'foobar')) 158ea6553beSBram Moolenaar call assert_match("Pattern 'bar.*foo' does not match 'foobar'", v:errors[0]) 159ea6553beSBram Moolenaar call remove(v:errors, 0) 160ea6553beSBram Moolenaar 16165a54649SBram Moolenaar call assert_equal(1, assert_match('bar.*foo', 'foobar', 'wrong')) 162ea6553beSBram Moolenaar call assert_match('wrong', v:errors[0]) 163ea6553beSBram Moolenaar call remove(v:errors, 0) 16424278d24SBram Moolenaar 16524278d24SBram Moolenaar call assert_equal(1, 'foobar'->assert_match('bar.*foo', 'wrong')) 16624278d24SBram Moolenaar call assert_match('wrong', v:errors[0]) 16724278d24SBram Moolenaar call remove(v:errors, 0) 168ea6553beSBram Moolenaarendfunc 169ea6553beSBram Moolenaar 170b50e5f56SBram Moolenaarfunc Test_notmatch() 17165a54649SBram Moolenaar call assert_equal(0, assert_notmatch('foo', 'bar')) 17265a54649SBram Moolenaar call assert_equal(0, assert_notmatch('^foobar$', 'foobars')) 173b50e5f56SBram Moolenaar 17465a54649SBram Moolenaar call assert_equal(1, assert_notmatch('foo', 'foobar')) 175b50e5f56SBram Moolenaar call assert_match("Pattern 'foo' does match 'foobar'", v:errors[0]) 176b50e5f56SBram Moolenaar call remove(v:errors, 0) 17724278d24SBram Moolenaar 17824278d24SBram Moolenaar call assert_equal(1, 'foobar'->assert_notmatch('foo')) 17924278d24SBram Moolenaar call assert_match("Pattern 'foo' does match 'foobar'", v:errors[0]) 18024278d24SBram Moolenaar call remove(v:errors, 0) 181b50e5f56SBram Moolenaarendfunc 182b50e5f56SBram Moolenaar 1831abb5026SBram Moolenaarfunc Test_assert_fail_fails() 18465a54649SBram Moolenaar call assert_equal(1, assert_fails('xxx', {})) 185ea6553beSBram Moolenaar call assert_match("Expected {} but got 'E731:", v:errors[0]) 1861abb5026SBram Moolenaar call remove(v:errors, 0) 1871307d1c0SBram Moolenaar 1881307d1c0SBram Moolenaar call assert_equal(1, assert_fails('xxx', {}, 'stupid')) 1891307d1c0SBram Moolenaar call assert_match("stupid: Expected {} but got 'E731:", v:errors[0]) 1901307d1c0SBram Moolenaar call remove(v:errors, 0) 1911307d1c0SBram Moolenaar 1921307d1c0SBram Moolenaar call assert_equal(1, assert_fails('echo', '', 'echo command')) 1931307d1c0SBram Moolenaar call assert_match("command did not fail: echo command", v:errors[0]) 1941307d1c0SBram Moolenaar call remove(v:errors, 0) 19524278d24SBram Moolenaar 19624278d24SBram Moolenaar call assert_equal(1, 'echo'->assert_fails('', 'echo command')) 19724278d24SBram Moolenaar call assert_match("command did not fail: echo command", v:errors[0]) 19824278d24SBram Moolenaar call remove(v:errors, 0) 1991abb5026SBram Moolenaarendfunc 2001abb5026SBram Moolenaar 2017780e5c1SBram Moolenaarfunc Test_assert_fails_in_try_block() 2027780e5c1SBram Moolenaar try 2037780e5c1SBram Moolenaar call assert_equal(0, assert_fails('throw "error"')) 2047780e5c1SBram Moolenaar endtry 2057780e5c1SBram Moolenaarendfunc 2067780e5c1SBram Moolenaar 207b48e96f6SBram Moolenaarfunc Test_assert_beeps() 208b48e96f6SBram Moolenaar new 20965a54649SBram Moolenaar call assert_equal(0, assert_beeps('normal h')) 210b48e96f6SBram Moolenaar 21165a54649SBram Moolenaar call assert_equal(1, assert_beeps('normal 0')) 212b48e96f6SBram Moolenaar call assert_match("command did not beep: normal 0", v:errors[0]) 213b48e96f6SBram Moolenaar call remove(v:errors, 0) 21424278d24SBram Moolenaar 21524278d24SBram Moolenaar call assert_equal(0, 'normal h'->assert_beeps()) 21624278d24SBram Moolenaar call assert_equal(1, 'normal 0'->assert_beeps()) 21724278d24SBram Moolenaar call assert_match("command did not beep: normal 0", v:errors[0]) 21824278d24SBram Moolenaar call remove(v:errors, 0) 21924278d24SBram Moolenaar 220b48e96f6SBram Moolenaar bwipe 221b48e96f6SBram Moolenaarendfunc 222b48e96f6SBram Moolenaar 22361c04493SBram Moolenaarfunc Test_assert_inrange() 22465a54649SBram Moolenaar call assert_equal(0, assert_inrange(7, 7, 7)) 22565a54649SBram Moolenaar call assert_equal(0, assert_inrange(5, 7, 5)) 22665a54649SBram Moolenaar call assert_equal(0, assert_inrange(5, 7, 6)) 22765a54649SBram Moolenaar call assert_equal(0, assert_inrange(5, 7, 7)) 22861c04493SBram Moolenaar 22965a54649SBram Moolenaar call assert_equal(1, assert_inrange(5, 7, 4)) 23061c04493SBram Moolenaar call assert_match("Expected range 5 - 7, but got 4", v:errors[0]) 23161c04493SBram Moolenaar call remove(v:errors, 0) 23265a54649SBram Moolenaar call assert_equal(1, assert_inrange(5, 7, 8)) 23361c04493SBram Moolenaar call assert_match("Expected range 5 - 7, but got 8", v:errors[0]) 23461c04493SBram Moolenaar call remove(v:errors, 0) 23534215663SBram Moolenaar 23624278d24SBram Moolenaar call assert_equal(0, 5->assert_inrange(5, 7)) 23724278d24SBram Moolenaar call assert_equal(0, 7->assert_inrange(5, 7)) 23824278d24SBram Moolenaar call assert_equal(1, 8->assert_inrange(5, 7)) 23924278d24SBram Moolenaar call assert_match("Expected range 5 - 7, but got 8", v:errors[0]) 24024278d24SBram Moolenaar call remove(v:errors, 0) 24124278d24SBram Moolenaar 24234215663SBram Moolenaar call assert_fails('call assert_inrange(1, 1)', 'E119:') 24338f08e76SBram Moolenaar 24438f08e76SBram Moolenaar if has('float') 24538f08e76SBram Moolenaar call assert_equal(0, assert_inrange(7.0, 7, 7)) 24638f08e76SBram Moolenaar call assert_equal(0, assert_inrange(7, 7.0, 7)) 24738f08e76SBram Moolenaar call assert_equal(0, assert_inrange(7, 7, 7.0)) 24838f08e76SBram Moolenaar call assert_equal(0, assert_inrange(5, 7, 5.0)) 24938f08e76SBram Moolenaar call assert_equal(0, assert_inrange(5, 7, 6.0)) 25038f08e76SBram Moolenaar call assert_equal(0, assert_inrange(5, 7, 7.0)) 25138f08e76SBram Moolenaar 25238f08e76SBram Moolenaar call assert_equal(1, assert_inrange(5, 7, 4.0)) 25338f08e76SBram Moolenaar call assert_match("Expected range 5.0 - 7.0, but got 4.0", v:errors[0]) 25438f08e76SBram Moolenaar call remove(v:errors, 0) 25538f08e76SBram Moolenaar call assert_equal(1, assert_inrange(5, 7, 8.0)) 25638f08e76SBram Moolenaar call assert_match("Expected range 5.0 - 7.0, but got 8.0", v:errors[0]) 25738f08e76SBram Moolenaar call remove(v:errors, 0) 25838f08e76SBram Moolenaar endif 25961c04493SBram Moolenaarendfunc 260f1551964SBram Moolenaar 261c7b831caSBram Moolenaarfunc Test_assert_with_msg() 262c7b831caSBram Moolenaar call assert_equal('foo', 'bar', 'testing') 263c7b831caSBram Moolenaar call assert_match("testing: Expected 'foo' but got 'bar'", v:errors[0]) 264c7b831caSBram Moolenaar call remove(v:errors, 0) 265c7b831caSBram Moolenaarendfunc 266c7b831caSBram Moolenaar 267eb992cb9SBram Moolenaarfunc Test_override() 268eb992cb9SBram Moolenaar call test_override('char_avail', 1) 269ce90e36fSBram Moolenaar eval 1->test_override('redraw') 270eb992cb9SBram Moolenaar call test_override('ALL', 0) 271eb992cb9SBram Moolenaar call assert_fails("call test_override('xxx', 1)", 'E475') 272eb992cb9SBram Moolenaar call assert_fails("call test_override('redraw', 'yes')", 'E474') 273eb992cb9SBram Moolenaarendfunc 274eb992cb9SBram Moolenaar 275b0f94c1fSBram Moolenaarfunc Test_mouse_position() 276b0f94c1fSBram Moolenaar let save_mouse = &mouse 277b0f94c1fSBram Moolenaar set mouse=a 278b0f94c1fSBram Moolenaar new 279b0f94c1fSBram Moolenaar call setline(1, ['line one', 'line two']) 280b0f94c1fSBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 281b0f94c1fSBram Moolenaar call test_setmouse(1, 5) 282b0f94c1fSBram Moolenaar call feedkeys("\<LeftMouse>", "xt") 283b0f94c1fSBram Moolenaar call assert_equal([0, 1, 5, 0], getpos('.')) 284b0f94c1fSBram Moolenaar call test_setmouse(2, 20) 285b0f94c1fSBram Moolenaar call feedkeys("\<LeftMouse>", "xt") 286b0f94c1fSBram Moolenaar call assert_equal([0, 2, 8, 0], getpos('.')) 287b0f94c1fSBram Moolenaar call test_setmouse(5, 1) 288b0f94c1fSBram Moolenaar call feedkeys("\<LeftMouse>", "xt") 289b0f94c1fSBram Moolenaar call assert_equal([0, 2, 1, 0], getpos('.')) 290b0f94c1fSBram Moolenaar bwipe! 291b0f94c1fSBram Moolenaar let &mouse = save_mouse 292b0f94c1fSBram Moolenaarendfunc 293b0f94c1fSBram Moolenaar 2942d820808SBram Moolenaarfunc Test_user_is_happy() 2952d820808SBram Moolenaar smile 2962d820808SBram Moolenaar sleep 300m 2972d820808SBram Moolenaarendfunc 2988903676dSBram Moolenaar 2998903676dSBram Moolenaar" Must be last. 3008903676dSBram Moolenaarfunc Test_zz_quit_detected() 3018903676dSBram Moolenaar " Verify that if a test function ends Vim the test script detects this. 3028903676dSBram Moolenaar quit 3038903676dSBram Moolenaarendfunc 304