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 534a021dfbSBram Moolenaarfunc Test_assert_equal_dict() 544a021dfbSBram Moolenaar call assert_equal(0, assert_equal(#{one: 1, two: 2}, #{two: 2, one: 1})) 554a021dfbSBram Moolenaar 564a021dfbSBram Moolenaar call assert_equal(1, assert_equal(#{one: 1, two: 2}, #{two: 2, one: 3})) 574a021dfbSBram Moolenaar call assert_match("Expected {'one': 1} but got {'one': 3} - 1 equal item omitted", v:errors[0]) 584a021dfbSBram Moolenaar call remove(v:errors, 0) 594a021dfbSBram Moolenaar 604a021dfbSBram Moolenaar call assert_equal(1, assert_equal(#{one: 1, two: 2}, #{two: 22, one: 11})) 614a021dfbSBram Moolenaar call assert_match("Expected {'one': 1, 'two': 2} but got {'one': 11, 'two': 22}", v:errors[0]) 624a021dfbSBram Moolenaar call remove(v:errors, 0) 634a021dfbSBram Moolenaar 644a021dfbSBram Moolenaar call assert_equal(1, assert_equal(#{}, #{two: 2, one: 1})) 654a021dfbSBram Moolenaar call assert_match("Expected {} but got {'one': 1, 'two': 2}", v:errors[0]) 664a021dfbSBram Moolenaar call remove(v:errors, 0) 674a021dfbSBram Moolenaar 684a021dfbSBram Moolenaar call assert_equal(1, assert_equal(#{two: 2, one: 1}, #{})) 694a021dfbSBram Moolenaar call assert_match("Expected {'one': 1, 'two': 2} but got {}", v:errors[0]) 704a021dfbSBram Moolenaar call remove(v:errors, 0) 714a021dfbSBram Moolenaarendfunc 724a021dfbSBram Moolenaar 73d96ff165SBram Moolenaarfunc Test_assert_equalfile() 7465a54649SBram Moolenaar call assert_equal(1, assert_equalfile('abcabc', 'xyzxyz')) 75d96ff165SBram Moolenaar call assert_match("E485: Can't read file abcabc", v:errors[0]) 76d96ff165SBram Moolenaar call remove(v:errors, 0) 77d96ff165SBram Moolenaar 78d96ff165SBram Moolenaar let goodtext = ["one", "two", "three"] 79d96ff165SBram Moolenaar call writefile(goodtext, 'Xone') 80e49fbff3SBram Moolenaar call assert_equal(1, 'Xone'->assert_equalfile('xyzxyz')) 81d96ff165SBram Moolenaar call assert_match("E485: Can't read file xyzxyz", v:errors[0]) 82d96ff165SBram Moolenaar call remove(v:errors, 0) 83d96ff165SBram Moolenaar 84d96ff165SBram Moolenaar call writefile(goodtext, 'Xtwo') 8565a54649SBram Moolenaar call assert_equal(0, assert_equalfile('Xone', 'Xtwo')) 86d96ff165SBram Moolenaar 87d96ff165SBram Moolenaar call writefile([goodtext[0]], 'Xone') 8865a54649SBram Moolenaar call assert_equal(1, assert_equalfile('Xone', 'Xtwo')) 89d96ff165SBram Moolenaar call assert_match("first file is shorter", v:errors[0]) 90d96ff165SBram Moolenaar call remove(v:errors, 0) 91d96ff165SBram Moolenaar 92d96ff165SBram Moolenaar call writefile(goodtext, 'Xone') 93d96ff165SBram Moolenaar call writefile([goodtext[0]], 'Xtwo') 9465a54649SBram Moolenaar call assert_equal(1, assert_equalfile('Xone', 'Xtwo')) 95d96ff165SBram Moolenaar call assert_match("second file is shorter", v:errors[0]) 96d96ff165SBram Moolenaar call remove(v:errors, 0) 97d96ff165SBram Moolenaar 98d96ff165SBram Moolenaar call writefile(['1234X89'], 'Xone') 99d96ff165SBram Moolenaar call writefile(['1234Y89'], 'Xtwo') 10065a54649SBram Moolenaar call assert_equal(1, assert_equalfile('Xone', 'Xtwo')) 10130cc44a9SBram Moolenaar call assert_match('difference at byte 4, line 1 after "1234X" vs "1234Y"', v:errors[0]) 10230cc44a9SBram Moolenaar call remove(v:errors, 0) 10330cc44a9SBram Moolenaar 10430cc44a9SBram Moolenaar call writefile([repeat('x', 234) .. 'X'], 'Xone') 10530cc44a9SBram Moolenaar call writefile([repeat('x', 234) .. 'Y'], 'Xtwo') 10630cc44a9SBram Moolenaar call assert_equal(1, assert_equalfile('Xone', 'Xtwo')) 10730cc44a9SBram Moolenaar let xes = repeat('x', 134) 10830cc44a9SBram Moolenaar call assert_match('difference at byte 234, line 1 after "' .. xes .. 'X" vs "' .. xes .. 'Y"', v:errors[0]) 109d96ff165SBram Moolenaar call remove(v:errors, 0) 110d96ff165SBram Moolenaar 111fb517bacSBram Moolenaar call assert_equal(1, assert_equalfile('Xone', 'Xtwo', 'a message')) 11230cc44a9SBram Moolenaar call assert_match("a message: difference at byte 234, line 1 after", v:errors[0]) 113fb517bacSBram Moolenaar call remove(v:errors, 0) 114fb517bacSBram Moolenaar 115d96ff165SBram Moolenaar call delete('Xone') 116d96ff165SBram Moolenaar call delete('Xtwo') 117d96ff165SBram Moolenaarendfunc 118d96ff165SBram Moolenaar 119b50e5f56SBram Moolenaarfunc Test_assert_notequal() 120b50e5f56SBram Moolenaar let n = 4 12165a54649SBram Moolenaar call assert_equal(0, assert_notequal('foo', n)) 122b50e5f56SBram Moolenaar let s = 'foo' 12365a54649SBram Moolenaar call assert_equal(0, assert_notequal([1, 2, 3], s)) 124b50e5f56SBram Moolenaar 12565a54649SBram Moolenaar call assert_equal(1, assert_notequal('foo', s)) 1265869cf06SBram Moolenaar call assert_match("Expected not equal to 'foo'", v:errors[0]) 127b50e5f56SBram Moolenaar call remove(v:errors, 0) 12843345546SBram Moolenaarendfunc 1292d820808SBram Moolenaar 13037175409SBram Moolenaarfunc Test_assert_report() 13165a54649SBram Moolenaar call assert_equal(1, assert_report('something is wrong')) 13237175409SBram Moolenaar call assert_match('something is wrong', v:errors[0]) 13337175409SBram Moolenaar call remove(v:errors, 0) 134e49fbff3SBram Moolenaar call assert_equal(1, 'also wrong'->assert_report()) 135e49fbff3SBram Moolenaar call assert_match('also wrong', v:errors[0]) 136e49fbff3SBram Moolenaar call remove(v:errors, 0) 13737175409SBram Moolenaarendfunc 13837175409SBram Moolenaar 139da5dcd93SBram Moolenaarfunc Test_assert_exception() 140da5dcd93SBram Moolenaar try 141da5dcd93SBram Moolenaar nocommand 142da5dcd93SBram Moolenaar catch 14365a54649SBram Moolenaar call assert_equal(0, assert_exception('E492:')) 144da5dcd93SBram Moolenaar endtry 145da5dcd93SBram Moolenaar 146da5dcd93SBram Moolenaar try 147da5dcd93SBram Moolenaar nocommand 148da5dcd93SBram Moolenaar catch 149da5dcd93SBram Moolenaar try 150da5dcd93SBram Moolenaar " illegal argument, get NULL for error 15165a54649SBram Moolenaar call assert_equal(1, assert_exception([])) 152da5dcd93SBram Moolenaar catch 15365a54649SBram Moolenaar call assert_equal(0, assert_exception('E730:')) 154da5dcd93SBram Moolenaar endtry 155da5dcd93SBram Moolenaar endtry 156da5dcd93SBram Moolenaarendfunc 157da5dcd93SBram Moolenaar 158a542c680SBram Moolenaarfunc Test_wrong_error_type() 159a542c680SBram Moolenaar let save_verrors = v:errors 160a542c680SBram Moolenaar let v:['errors'] = {'foo': 3} 161a542c680SBram Moolenaar call assert_equal('yes', 'no') 162a542c680SBram Moolenaar let verrors = v:errors 163a542c680SBram Moolenaar let v:errors = save_verrors 164a542c680SBram Moolenaar call assert_equal(type([]), type(verrors)) 165a542c680SBram Moolenaarendfunc 166a542c680SBram Moolenaar 167f1551964SBram Moolenaarfunc Test_compare_fail() 168f1551964SBram Moolenaar let s:v = {} 169f1551964SBram Moolenaar let s:x = {"a": s:v} 170f1551964SBram Moolenaar let s:v["b"] = s:x 171f1551964SBram Moolenaar let s:w = {"c": s:x, "d": ''} 172f1551964SBram Moolenaar try 173f1551964SBram Moolenaar call assert_equal(s:w, '') 174f1551964SBram Moolenaar catch 17565a54649SBram Moolenaar call assert_equal(0, assert_exception('E724:')) 176ea6553beSBram Moolenaar call assert_match("Expected NULL but got ''", v:errors[0]) 177f1551964SBram Moolenaar call remove(v:errors, 0) 178f1551964SBram Moolenaar endtry 179f1551964SBram Moolenaarendfunc 180f1551964SBram Moolenaar 181ea6553beSBram Moolenaarfunc Test_match() 18265a54649SBram Moolenaar call assert_equal(0, assert_match('^f.*b.*r$', 'foobar')) 183ea6553beSBram Moolenaar 18465a54649SBram Moolenaar call assert_equal(1, assert_match('bar.*foo', 'foobar')) 185ea6553beSBram Moolenaar call assert_match("Pattern 'bar.*foo' does not match 'foobar'", v:errors[0]) 186ea6553beSBram Moolenaar call remove(v:errors, 0) 187ea6553beSBram Moolenaar 18865a54649SBram Moolenaar call assert_equal(1, assert_match('bar.*foo', 'foobar', 'wrong')) 189ea6553beSBram Moolenaar call assert_match('wrong', v:errors[0]) 190ea6553beSBram Moolenaar call remove(v:errors, 0) 19124278d24SBram Moolenaar 19224278d24SBram Moolenaar call assert_equal(1, 'foobar'->assert_match('bar.*foo', 'wrong')) 19324278d24SBram Moolenaar call assert_match('wrong', v:errors[0]) 19424278d24SBram Moolenaar call remove(v:errors, 0) 195ea6553beSBram Moolenaarendfunc 196ea6553beSBram Moolenaar 197b50e5f56SBram Moolenaarfunc Test_notmatch() 19865a54649SBram Moolenaar call assert_equal(0, assert_notmatch('foo', 'bar')) 19965a54649SBram Moolenaar call assert_equal(0, assert_notmatch('^foobar$', 'foobars')) 200b50e5f56SBram Moolenaar 20165a54649SBram Moolenaar call assert_equal(1, assert_notmatch('foo', 'foobar')) 202b50e5f56SBram Moolenaar call assert_match("Pattern 'foo' does match 'foobar'", v:errors[0]) 203b50e5f56SBram Moolenaar call remove(v:errors, 0) 20424278d24SBram Moolenaar 20524278d24SBram Moolenaar call assert_equal(1, 'foobar'->assert_notmatch('foo')) 20624278d24SBram Moolenaar call assert_match("Pattern 'foo' does match 'foobar'", v:errors[0]) 20724278d24SBram Moolenaar call remove(v:errors, 0) 208b50e5f56SBram Moolenaarendfunc 209b50e5f56SBram Moolenaar 2101abb5026SBram Moolenaarfunc Test_assert_fail_fails() 211*2b6ef856SBram Moolenaar call assert_equal(1, assert_fails('xxx', 'E12345')) 212*2b6ef856SBram Moolenaar call assert_match("Expected 'E12345' but got 'E492:", v:errors[0]) 2131abb5026SBram Moolenaar call remove(v:errors, 0) 2141307d1c0SBram Moolenaar 215*2b6ef856SBram Moolenaar call assert_equal(1, assert_fails('xxx', 'E9876', 'stupid')) 216*2b6ef856SBram Moolenaar call assert_match("stupid: Expected 'E9876' but got 'E492:", v:errors[0]) 2171307d1c0SBram Moolenaar call remove(v:errors, 0) 2181307d1c0SBram Moolenaar 2191307d1c0SBram Moolenaar call assert_equal(1, assert_fails('echo', '', 'echo command')) 2201307d1c0SBram Moolenaar call assert_match("command did not fail: echo command", v:errors[0]) 2211307d1c0SBram Moolenaar call remove(v:errors, 0) 22224278d24SBram Moolenaar 22324278d24SBram Moolenaar call assert_equal(1, 'echo'->assert_fails('', 'echo command')) 22424278d24SBram Moolenaar call assert_match("command did not fail: echo command", v:errors[0]) 22524278d24SBram Moolenaar call remove(v:errors, 0) 2261abb5026SBram Moolenaarendfunc 2271abb5026SBram Moolenaar 2287780e5c1SBram Moolenaarfunc Test_assert_fails_in_try_block() 2297780e5c1SBram Moolenaar try 2307780e5c1SBram Moolenaar call assert_equal(0, assert_fails('throw "error"')) 2317780e5c1SBram Moolenaar endtry 2327780e5c1SBram Moolenaarendfunc 2337780e5c1SBram Moolenaar 234b48e96f6SBram Moolenaarfunc Test_assert_beeps() 235b48e96f6SBram Moolenaar new 23665a54649SBram Moolenaar call assert_equal(0, assert_beeps('normal h')) 237b48e96f6SBram Moolenaar 23865a54649SBram Moolenaar call assert_equal(1, assert_beeps('normal 0')) 239b48e96f6SBram Moolenaar call assert_match("command did not beep: normal 0", v:errors[0]) 240b48e96f6SBram Moolenaar call remove(v:errors, 0) 24124278d24SBram Moolenaar 24224278d24SBram Moolenaar call assert_equal(0, 'normal h'->assert_beeps()) 24324278d24SBram Moolenaar call assert_equal(1, 'normal 0'->assert_beeps()) 24424278d24SBram Moolenaar call assert_match("command did not beep: normal 0", v:errors[0]) 24524278d24SBram Moolenaar call remove(v:errors, 0) 24624278d24SBram Moolenaar 247b48e96f6SBram Moolenaar bwipe 248b48e96f6SBram Moolenaarendfunc 249b48e96f6SBram Moolenaar 25061c04493SBram Moolenaarfunc Test_assert_inrange() 25165a54649SBram Moolenaar call assert_equal(0, assert_inrange(7, 7, 7)) 25265a54649SBram Moolenaar call assert_equal(0, assert_inrange(5, 7, 5)) 25365a54649SBram Moolenaar call assert_equal(0, assert_inrange(5, 7, 6)) 25465a54649SBram Moolenaar call assert_equal(0, assert_inrange(5, 7, 7)) 25561c04493SBram Moolenaar 25665a54649SBram Moolenaar call assert_equal(1, assert_inrange(5, 7, 4)) 25761c04493SBram Moolenaar call assert_match("Expected range 5 - 7, but got 4", v:errors[0]) 25861c04493SBram Moolenaar call remove(v:errors, 0) 25965a54649SBram Moolenaar call assert_equal(1, assert_inrange(5, 7, 8)) 26061c04493SBram Moolenaar call assert_match("Expected range 5 - 7, but got 8", v:errors[0]) 26161c04493SBram Moolenaar call remove(v:errors, 0) 26234215663SBram Moolenaar 26324278d24SBram Moolenaar call assert_equal(0, 5->assert_inrange(5, 7)) 26424278d24SBram Moolenaar call assert_equal(0, 7->assert_inrange(5, 7)) 26524278d24SBram Moolenaar call assert_equal(1, 8->assert_inrange(5, 7)) 26624278d24SBram Moolenaar call assert_match("Expected range 5 - 7, but got 8", v:errors[0]) 26724278d24SBram Moolenaar call remove(v:errors, 0) 26824278d24SBram Moolenaar 26934215663SBram Moolenaar call assert_fails('call assert_inrange(1, 1)', 'E119:') 27038f08e76SBram Moolenaar 27138f08e76SBram Moolenaar if has('float') 27238f08e76SBram Moolenaar call assert_equal(0, assert_inrange(7.0, 7, 7)) 27338f08e76SBram Moolenaar call assert_equal(0, assert_inrange(7, 7.0, 7)) 27438f08e76SBram Moolenaar call assert_equal(0, assert_inrange(7, 7, 7.0)) 27538f08e76SBram Moolenaar call assert_equal(0, assert_inrange(5, 7, 5.0)) 27638f08e76SBram Moolenaar call assert_equal(0, assert_inrange(5, 7, 6.0)) 27738f08e76SBram Moolenaar call assert_equal(0, assert_inrange(5, 7, 7.0)) 27838f08e76SBram Moolenaar 27938f08e76SBram Moolenaar call assert_equal(1, assert_inrange(5, 7, 4.0)) 28038f08e76SBram Moolenaar call assert_match("Expected range 5.0 - 7.0, but got 4.0", v:errors[0]) 28138f08e76SBram Moolenaar call remove(v:errors, 0) 28238f08e76SBram Moolenaar call assert_equal(1, assert_inrange(5, 7, 8.0)) 28338f08e76SBram Moolenaar call assert_match("Expected range 5.0 - 7.0, but got 8.0", v:errors[0]) 28438f08e76SBram Moolenaar call remove(v:errors, 0) 28538f08e76SBram Moolenaar endif 28661c04493SBram Moolenaarendfunc 287f1551964SBram Moolenaar 288c7b831caSBram Moolenaarfunc Test_assert_with_msg() 289c7b831caSBram Moolenaar call assert_equal('foo', 'bar', 'testing') 290c7b831caSBram Moolenaar call assert_match("testing: Expected 'foo' but got 'bar'", v:errors[0]) 291c7b831caSBram Moolenaar call remove(v:errors, 0) 292c7b831caSBram Moolenaarendfunc 293c7b831caSBram Moolenaar 294eb992cb9SBram Moolenaarfunc Test_override() 295eb992cb9SBram Moolenaar call test_override('char_avail', 1) 296ce90e36fSBram Moolenaar eval 1->test_override('redraw') 297eb992cb9SBram Moolenaar call test_override('ALL', 0) 298eb992cb9SBram Moolenaar call assert_fails("call test_override('xxx', 1)", 'E475') 299eb992cb9SBram Moolenaar call assert_fails("call test_override('redraw', 'yes')", 'E474') 300eb992cb9SBram Moolenaarendfunc 301eb992cb9SBram Moolenaar 302b0f94c1fSBram Moolenaarfunc Test_mouse_position() 303b0f94c1fSBram Moolenaar let save_mouse = &mouse 304b0f94c1fSBram Moolenaar set mouse=a 305b0f94c1fSBram Moolenaar new 306b0f94c1fSBram Moolenaar call setline(1, ['line one', 'line two']) 307b0f94c1fSBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 308b0f94c1fSBram Moolenaar call test_setmouse(1, 5) 309b0f94c1fSBram Moolenaar call feedkeys("\<LeftMouse>", "xt") 310b0f94c1fSBram Moolenaar call assert_equal([0, 1, 5, 0], getpos('.')) 311b0f94c1fSBram Moolenaar call test_setmouse(2, 20) 312b0f94c1fSBram Moolenaar call feedkeys("\<LeftMouse>", "xt") 313b0f94c1fSBram Moolenaar call assert_equal([0, 2, 8, 0], getpos('.')) 314b0f94c1fSBram Moolenaar call test_setmouse(5, 1) 315b0f94c1fSBram Moolenaar call feedkeys("\<LeftMouse>", "xt") 316b0f94c1fSBram Moolenaar call assert_equal([0, 2, 1, 0], getpos('.')) 317b0f94c1fSBram Moolenaar bwipe! 318b0f94c1fSBram Moolenaar let &mouse = save_mouse 319b0f94c1fSBram Moolenaarendfunc 320b0f94c1fSBram Moolenaar 3212d820808SBram Moolenaarfunc Test_user_is_happy() 3222d820808SBram Moolenaar smile 3232d820808SBram Moolenaar sleep 300m 3242d820808SBram Moolenaarendfunc 3258903676dSBram Moolenaar 3268903676dSBram Moolenaar" Must be last. 3278903676dSBram Moolenaarfunc Test_zz_quit_detected() 3288903676dSBram Moolenaar " Verify that if a test function ends Vim the test script detects this. 3298903676dSBram Moolenaar quit 3308903676dSBram Moolenaarendfunc 331