100b24be4SBram Moolenaar" Test for textobjects 200b24be4SBram Moolenaar 300b24be4SBram Moolenaarif !has('textobjects') 400b24be4SBram Moolenaar finish 500b24be4SBram Moolenaarendif 600b24be4SBram Moolenaar 7c5e2b040SBram Moolenaarfunc CpoM(line, useM, expected) 800b24be4SBram Moolenaar new 900b24be4SBram Moolenaar 1000b24be4SBram Moolenaar if a:useM 1100b24be4SBram Moolenaar set cpoptions+=M 1200b24be4SBram Moolenaar else 1300b24be4SBram Moolenaar set cpoptions-=M 1400b24be4SBram Moolenaar endif 1500b24be4SBram Moolenaar 1600b24be4SBram Moolenaar call setline(1, a:line) 1700b24be4SBram Moolenaar 1800b24be4SBram Moolenaar call setreg('"', '') 1900b24be4SBram Moolenaar normal! ggfrmavi)y 2000b24be4SBram Moolenaar call assert_equal(getreg('"'), a:expected[0]) 2100b24be4SBram Moolenaar 2200b24be4SBram Moolenaar call setreg('"', '') 2300b24be4SBram Moolenaar normal! `afbmavi)y 2400b24be4SBram Moolenaar call assert_equal(getreg('"'), a:expected[1]) 2500b24be4SBram Moolenaar 2600b24be4SBram Moolenaar call setreg('"', '') 2700b24be4SBram Moolenaar normal! `afgmavi)y 2800b24be4SBram Moolenaar call assert_equal(getreg('"'), a:expected[2]) 2900b24be4SBram Moolenaar 3000b24be4SBram Moolenaar q! 31c5e2b040SBram Moolenaarendfunc 3200b24be4SBram Moolenaar 33c5e2b040SBram Moolenaarfunc Test_inner_block_without_cpo_M() 3400b24be4SBram Moolenaar call CpoM('(red \(blue) green)', 0, ['red \(blue', 'red \(blue', '']) 35c5e2b040SBram Moolenaarendfunc 3600b24be4SBram Moolenaar 37c5e2b040SBram Moolenaarfunc Test_inner_block_with_cpo_M_left_backslash() 3800b24be4SBram Moolenaar call CpoM('(red \(blue) green)', 1, ['red \(blue) green', 'blue', 'red \(blue) green']) 39c5e2b040SBram Moolenaarendfunc 4000b24be4SBram Moolenaar 41c5e2b040SBram Moolenaarfunc Test_inner_block_with_cpo_M_right_backslash() 4200b24be4SBram Moolenaar call CpoM('(red (blue\) green)', 1, ['red (blue\) green', 'blue\', 'red (blue\) green']) 43c5e2b040SBram Moolenaarendfunc 44c5e2b040SBram Moolenaar 45c5e2b040SBram Moolenaarfunc Test_quote_selection_selection_exclusive() 46c5e2b040SBram Moolenaar new 47c5e2b040SBram Moolenaar call setline(1, "a 'bcde' f") 48c5e2b040SBram Moolenaar set selection=exclusive 49c5e2b040SBram Moolenaar exe "norm! fdvhi'y" 50c5e2b040SBram Moolenaar call assert_equal('bcde', @") 51c5e2b040SBram Moolenaar set selection&vim 52c5e2b040SBram Moolenaar bw! 53c5e2b040SBram Moolenaarendfunc 54db510071SBram Moolenaar 55db510071SBram Moolenaar" Tests for string and html text objects 56db510071SBram Moolenaarfunc Test_string_html_objects() 57db510071SBram Moolenaar enew! 58db510071SBram Moolenaar 59db510071SBram Moolenaar let t = '"wo\"rd\\" foo' 60db510071SBram Moolenaar put =t 61db510071SBram Moolenaar normal! da" 62db510071SBram Moolenaar call assert_equal('foo', getline('.')) 63db510071SBram Moolenaar 64db510071SBram Moolenaar let t = "'foo' 'bar' 'piep'" 65db510071SBram Moolenaar put =t 66db510071SBram Moolenaar normal! 0va'a'rx 67db510071SBram Moolenaar call assert_equal("xxxxxxxxxxxx'piep'", getline('.')) 68db510071SBram Moolenaar 69db510071SBram Moolenaar let t = "bla bla `quote` blah" 70db510071SBram Moolenaar put =t 71db510071SBram Moolenaar normal! 02f`da` 72db510071SBram Moolenaar call assert_equal("bla bla blah", getline('.')) 73db510071SBram Moolenaar 74db510071SBram Moolenaar let t = 'out " in "noXno"' 75db510071SBram Moolenaar put =t 76db510071SBram Moolenaar normal! 0fXdi" 77db510071SBram Moolenaar call assert_equal('out " in ""', getline('.')) 78db510071SBram Moolenaar 79db510071SBram Moolenaar let t = "\"'\" 'blah' rep 'buh'" 80db510071SBram Moolenaar put =t 81db510071SBram Moolenaar normal! 03f'vi'ry 82db510071SBram Moolenaar call assert_equal("\"'\" 'blah'yyyyy'buh'", getline('.')) 83db510071SBram Moolenaar 84db510071SBram Moolenaar set quoteescape=+*- 85db510071SBram Moolenaar let t = "bla `s*`d-`+++`l**` b`la" 86db510071SBram Moolenaar put =t 87db510071SBram Moolenaar normal! di` 88db510071SBram Moolenaar call assert_equal("bla `` b`la", getline('.')) 89db510071SBram Moolenaar 90db510071SBram Moolenaar let t = 'voo "nah" sdf " asdf" sdf " sdf" sd' 91db510071SBram Moolenaar put =t 92db510071SBram Moolenaar normal! $F"va"oha"i"rz 93db510071SBram Moolenaar call assert_equal('voo "zzzzzzzzzzzzzzzzzzzzzzzzzzzzsd', getline('.')) 94db510071SBram Moolenaar 95db510071SBram Moolenaar let t = "-<b>asdf<i>Xasdf</i>asdf</b>-" 96db510071SBram Moolenaar put =t 97db510071SBram Moolenaar normal! fXdit 98db510071SBram Moolenaar call assert_equal('-<b>asdf<i></i>asdf</b>-', getline('.')) 99db510071SBram Moolenaar 100db510071SBram Moolenaar let t = "-<b>asdX<i>a<i />sdf</i>asdf</b>-" 101db510071SBram Moolenaar put =t 102db510071SBram Moolenaar normal! 0fXdit 103db510071SBram Moolenaar call assert_equal('-<b></b>-', getline('.')) 104db510071SBram Moolenaar 105db510071SBram Moolenaar let t = "-<b>asdf<i>Xasdf</i>asdf</b>-" 106db510071SBram Moolenaar put =t 107db510071SBram Moolenaar normal! fXdat 108db510071SBram Moolenaar call assert_equal('-<b>asdfasdf</b>-', getline('.')) 109db510071SBram Moolenaar 110db510071SBram Moolenaar let t = "-<b>asdX<i>as<b />df</i>asdf</b>-" 111db510071SBram Moolenaar put =t 112db510071SBram Moolenaar normal! 0fXdat 113db510071SBram Moolenaar call assert_equal('--', getline('.')) 114db510071SBram Moolenaar 115db510071SBram Moolenaar let t = "-<b>\ninnertext object\n</b>" 116db510071SBram Moolenaar put =t 117db510071SBram Moolenaar normal! dit 118db510071SBram Moolenaar call assert_equal('-<b></b>', getline('.')) 119db510071SBram Moolenaar 120db510071SBram Moolenaar set quoteescape& 121db510071SBram Moolenaar enew! 122db510071SBram Moolenaarendfunc 123db510071SBram Moolenaar 124*b476cb7dSBram Moolenaarfunc Test_empty_html_tag() 125*b476cb7dSBram Moolenaar new 126*b476cb7dSBram Moolenaar call setline(1, '<div></div>') 127*b476cb7dSBram Moolenaar normal 0citxxx 128*b476cb7dSBram Moolenaar call assert_equal('<div>xxx</div>', getline(1)) 129*b476cb7dSBram Moolenaar 130*b476cb7dSBram Moolenaar call setline(1, '<div></div>') 131*b476cb7dSBram Moolenaar normal 0f<cityyy 132*b476cb7dSBram Moolenaar call assert_equal('<div>yyy</div>', getline(1)) 133*b476cb7dSBram Moolenaar 134*b476cb7dSBram Moolenaar call setline(1, '<div></div>') 135*b476cb7dSBram Moolenaar normal 0f<vitsaaa 136*b476cb7dSBram Moolenaar call assert_equal('aaa', getline(1)) 137*b476cb7dSBram Moolenaar 138*b476cb7dSBram Moolenaar bwipe! 139*b476cb7dSBram Moolenaarendfunc 140*b476cb7dSBram Moolenaar 141db510071SBram Moolenaar" Tests for match() and matchstr() 142db510071SBram Moolenaarfunc Test_match() 143db510071SBram Moolenaar call assert_equal("b", matchstr("abcd", ".", 0, 2)) 144db510071SBram Moolenaar call assert_equal("bc", matchstr("abcd", "..", 0, 2)) 145db510071SBram Moolenaar call assert_equal("c", matchstr("abcd", ".", 2, 0)) 146db510071SBram Moolenaar call assert_equal("a", matchstr("abcd", ".", 0, -1)) 147db510071SBram Moolenaar call assert_equal(-1, match("abcd", ".", 0, 5)) 148db510071SBram Moolenaar call assert_equal(0 , match("abcd", ".", 0, -1)) 149db510071SBram Moolenaar call assert_equal(0 , match('abc', '.', 0, 1)) 150db510071SBram Moolenaar call assert_equal(1 , match('abc', '.', 0, 2)) 151db510071SBram Moolenaar call assert_equal(2 , match('abc', '.', 0, 3)) 152db510071SBram Moolenaar call assert_equal(-1, match('abc', '.', 0, 4)) 153db510071SBram Moolenaar call assert_equal(1 , match('abc', '.', 1, 1)) 154db510071SBram Moolenaar call assert_equal(2 , match('abc', '.', 2, 1)) 155db510071SBram Moolenaar call assert_equal(-1, match('abc', '.', 3, 1)) 156db510071SBram Moolenaar call assert_equal(3 , match('abc', '$', 0, 1)) 157db510071SBram Moolenaar call assert_equal(-1, match('abc', '$', 0, 2)) 158db510071SBram Moolenaar call assert_equal(3 , match('abc', '$', 1, 1)) 159db510071SBram Moolenaar call assert_equal(3 , match('abc', '$', 2, 1)) 160db510071SBram Moolenaar call assert_equal(3 , match('abc', '$', 3, 1)) 161db510071SBram Moolenaar call assert_equal(-1, match('abc', '$', 4, 1)) 162db510071SBram Moolenaar call assert_equal(0 , match('abc', '\zs', 0, 1)) 163db510071SBram Moolenaar call assert_equal(1 , match('abc', '\zs', 0, 2)) 164db510071SBram Moolenaar call assert_equal(2 , match('abc', '\zs', 0, 3)) 165db510071SBram Moolenaar call assert_equal(3 , match('abc', '\zs', 0, 4)) 166db510071SBram Moolenaar call assert_equal(-1, match('abc', '\zs', 0, 5)) 167db510071SBram Moolenaar call assert_equal(1 , match('abc', '\zs', 1, 1)) 168db510071SBram Moolenaar call assert_equal(2 , match('abc', '\zs', 2, 1)) 169db510071SBram Moolenaar call assert_equal(3 , match('abc', '\zs', 3, 1)) 170db510071SBram Moolenaar call assert_equal(-1, match('abc', '\zs', 4, 1)) 171db510071SBram Moolenaarendfunc 17282846a00SBram Moolenaar 17382846a00SBram Moolenaar" This was causing an illegal memory access 17482846a00SBram Moolenaarfunc Test_inner_tag() 17582846a00SBram Moolenaar new 17682846a00SBram Moolenaar norm ixxx 17782846a00SBram Moolenaar call feedkeys("v", 'xt') 17882846a00SBram Moolenaar insert 17982846a00SBram Moolenaarx 18082846a00SBram Moolenaarx 18182846a00SBram Moolenaar. 18282846a00SBram Moolenaar norm it 18382846a00SBram Moolenaar q! 18482846a00SBram Moolenaarendfunc 18585160711SBram Moolenaar 18685160711SBram Moolenaarfunc Test_sentence() 18785160711SBram Moolenaar enew! 18885160711SBram Moolenaar call setline(1, 'A sentence. A sentence? A sentence!') 18985160711SBram Moolenaar 19085160711SBram Moolenaar normal yis 19185160711SBram Moolenaar call assert_equal('A sentence.', @") 19285160711SBram Moolenaar normal yas 19385160711SBram Moolenaar call assert_equal('A sentence. ', @") 19485160711SBram Moolenaar 19585160711SBram Moolenaar normal ) 19685160711SBram Moolenaar 19785160711SBram Moolenaar normal yis 19885160711SBram Moolenaar call assert_equal('A sentence?', @") 19985160711SBram Moolenaar normal yas 20085160711SBram Moolenaar call assert_equal('A sentence? ', @") 20185160711SBram Moolenaar 20285160711SBram Moolenaar normal ) 20385160711SBram Moolenaar 20485160711SBram Moolenaar normal yis 20585160711SBram Moolenaar call assert_equal('A sentence!', @") 20685160711SBram Moolenaar normal yas 20785160711SBram Moolenaar call assert_equal(' A sentence!', @") 20885160711SBram Moolenaar 20985160711SBram Moolenaar normal 0 21085160711SBram Moolenaar normal 2yis 21185160711SBram Moolenaar call assert_equal('A sentence. ', @") 21285160711SBram Moolenaar normal 3yis 21385160711SBram Moolenaar call assert_equal('A sentence. A sentence?', @") 21485160711SBram Moolenaar normal 2yas 21585160711SBram Moolenaar call assert_equal('A sentence. A sentence? ', @") 21685160711SBram Moolenaar 21785160711SBram Moolenaar %delete _ 21885160711SBram Moolenaarendfunc 21985160711SBram Moolenaar 22085160711SBram Moolenaarfunc Test_sentence_with_quotes() 22185160711SBram Moolenaar enew! 22285160711SBram Moolenaar call setline(1, 'A "sentence." A sentence.') 22385160711SBram Moolenaar 22485160711SBram Moolenaar normal yis 22585160711SBram Moolenaar call assert_equal('A "sentence."', @") 22685160711SBram Moolenaar normal yas 22785160711SBram Moolenaar call assert_equal('A "sentence." ', @") 22885160711SBram Moolenaar 22985160711SBram Moolenaar normal ) 23085160711SBram Moolenaar 23185160711SBram Moolenaar normal yis 23285160711SBram Moolenaar call assert_equal('A sentence.', @") 23385160711SBram Moolenaar normal yas 23485160711SBram Moolenaar call assert_equal(' A sentence.', @") 23585160711SBram Moolenaar 23685160711SBram Moolenaar %delete _ 23785160711SBram Moolenaarendfunc 23885160711SBram Moolenaar 23985160711SBram Moolenaarfunc! Test_sentence_with_cursor_on_delimiter() 24085160711SBram Moolenaar enew! 24185160711SBram Moolenaar call setline(1, "A '([sentence.])' A sentence.") 24285160711SBram Moolenaar 24385160711SBram Moolenaar normal! 15|yis 24485160711SBram Moolenaar call assert_equal("A '([sentence.])'", @") 24585160711SBram Moolenaar normal! 15|yas 24685160711SBram Moolenaar call assert_equal("A '([sentence.])' ", @") 24785160711SBram Moolenaar 24885160711SBram Moolenaar normal! 16|yis 24985160711SBram Moolenaar call assert_equal("A '([sentence.])'", @") 25085160711SBram Moolenaar normal! 16|yas 25185160711SBram Moolenaar call assert_equal("A '([sentence.])' ", @") 25285160711SBram Moolenaar 25385160711SBram Moolenaar normal! 17|yis 25485160711SBram Moolenaar call assert_equal("A '([sentence.])'", @") 25585160711SBram Moolenaar normal! 17|yas 25685160711SBram Moolenaar call assert_equal("A '([sentence.])' ", @") 25785160711SBram Moolenaar 25885160711SBram Moolenaar %delete _ 25985160711SBram Moolenaarendfunc 260