100b24be4SBram Moolenaar" Test for textobjects 200b24be4SBram Moolenaar 300b24be4SBram Moolenaarif !has('textobjects') 400b24be4SBram Moolenaar finish 500b24be4SBram Moolenaarendif 600b24be4SBram Moolenaar 7c3c766eaSBram Moolenaarset belloff=all 8c5e2b040SBram Moolenaarfunc CpoM(line, useM, expected) 900b24be4SBram Moolenaar new 1000b24be4SBram Moolenaar 1100b24be4SBram Moolenaar if a:useM 1200b24be4SBram Moolenaar set cpoptions+=M 1300b24be4SBram Moolenaar else 1400b24be4SBram Moolenaar set cpoptions-=M 1500b24be4SBram Moolenaar endif 1600b24be4SBram Moolenaar 1700b24be4SBram Moolenaar call setline(1, a:line) 1800b24be4SBram Moolenaar 1900b24be4SBram Moolenaar call setreg('"', '') 2000b24be4SBram Moolenaar normal! ggfrmavi)y 2100b24be4SBram Moolenaar call assert_equal(getreg('"'), a:expected[0]) 2200b24be4SBram Moolenaar 2300b24be4SBram Moolenaar call setreg('"', '') 2400b24be4SBram Moolenaar normal! `afbmavi)y 2500b24be4SBram Moolenaar call assert_equal(getreg('"'), a:expected[1]) 2600b24be4SBram Moolenaar 2700b24be4SBram Moolenaar call setreg('"', '') 2800b24be4SBram Moolenaar normal! `afgmavi)y 2900b24be4SBram Moolenaar call assert_equal(getreg('"'), a:expected[2]) 3000b24be4SBram Moolenaar 3100b24be4SBram Moolenaar q! 32c5e2b040SBram Moolenaarendfunc 3300b24be4SBram Moolenaar 34c5e2b040SBram Moolenaarfunc Test_inner_block_without_cpo_M() 3500b24be4SBram Moolenaar call CpoM('(red \(blue) green)', 0, ['red \(blue', 'red \(blue', '']) 36c5e2b040SBram Moolenaarendfunc 3700b24be4SBram Moolenaar 38c5e2b040SBram Moolenaarfunc Test_inner_block_with_cpo_M_left_backslash() 3900b24be4SBram Moolenaar call CpoM('(red \(blue) green)', 1, ['red \(blue) green', 'blue', 'red \(blue) green']) 40c5e2b040SBram Moolenaarendfunc 4100b24be4SBram Moolenaar 42c5e2b040SBram Moolenaarfunc Test_inner_block_with_cpo_M_right_backslash() 4300b24be4SBram Moolenaar call CpoM('(red (blue\) green)', 1, ['red (blue\) green', 'blue\', 'red (blue\) green']) 44c5e2b040SBram Moolenaarendfunc 45c5e2b040SBram Moolenaar 46c5e2b040SBram Moolenaarfunc Test_quote_selection_selection_exclusive() 47c5e2b040SBram Moolenaar new 48c5e2b040SBram Moolenaar call setline(1, "a 'bcde' f") 49c5e2b040SBram Moolenaar set selection=exclusive 50c5e2b040SBram Moolenaar exe "norm! fdvhi'y" 51c5e2b040SBram Moolenaar call assert_equal('bcde', @") 52c5e2b040SBram Moolenaar set selection&vim 53c5e2b040SBram Moolenaar bw! 54c5e2b040SBram Moolenaarendfunc 55*db510071SBram Moolenaar 56*db510071SBram Moolenaar" Tests for string and html text objects 57*db510071SBram Moolenaarfunc Test_string_html_objects() 58*db510071SBram Moolenaar enew! 59*db510071SBram Moolenaar 60*db510071SBram Moolenaar let t = '"wo\"rd\\" foo' 61*db510071SBram Moolenaar put =t 62*db510071SBram Moolenaar normal! da" 63*db510071SBram Moolenaar call assert_equal('foo', getline('.')) 64*db510071SBram Moolenaar 65*db510071SBram Moolenaar let t = "'foo' 'bar' 'piep'" 66*db510071SBram Moolenaar put =t 67*db510071SBram Moolenaar normal! 0va'a'rx 68*db510071SBram Moolenaar call assert_equal("xxxxxxxxxxxx'piep'", getline('.')) 69*db510071SBram Moolenaar 70*db510071SBram Moolenaar let t = "bla bla `quote` blah" 71*db510071SBram Moolenaar put =t 72*db510071SBram Moolenaar normal! 02f`da` 73*db510071SBram Moolenaar call assert_equal("bla bla blah", getline('.')) 74*db510071SBram Moolenaar 75*db510071SBram Moolenaar let t = 'out " in "noXno"' 76*db510071SBram Moolenaar put =t 77*db510071SBram Moolenaar normal! 0fXdi" 78*db510071SBram Moolenaar call assert_equal('out " in ""', getline('.')) 79*db510071SBram Moolenaar 80*db510071SBram Moolenaar let t = "\"'\" 'blah' rep 'buh'" 81*db510071SBram Moolenaar put =t 82*db510071SBram Moolenaar normal! 03f'vi'ry 83*db510071SBram Moolenaar call assert_equal("\"'\" 'blah'yyyyy'buh'", getline('.')) 84*db510071SBram Moolenaar 85*db510071SBram Moolenaar set quoteescape=+*- 86*db510071SBram Moolenaar let t = "bla `s*`d-`+++`l**` b`la" 87*db510071SBram Moolenaar put =t 88*db510071SBram Moolenaar normal! di` 89*db510071SBram Moolenaar call assert_equal("bla `` b`la", getline('.')) 90*db510071SBram Moolenaar 91*db510071SBram Moolenaar let t = 'voo "nah" sdf " asdf" sdf " sdf" sd' 92*db510071SBram Moolenaar put =t 93*db510071SBram Moolenaar normal! $F"va"oha"i"rz 94*db510071SBram Moolenaar call assert_equal('voo "zzzzzzzzzzzzzzzzzzzzzzzzzzzzsd', getline('.')) 95*db510071SBram Moolenaar 96*db510071SBram Moolenaar let t = "-<b>asdf<i>Xasdf</i>asdf</b>-" 97*db510071SBram Moolenaar put =t 98*db510071SBram Moolenaar normal! fXdit 99*db510071SBram Moolenaar call assert_equal('-<b>asdf<i></i>asdf</b>-', getline('.')) 100*db510071SBram Moolenaar 101*db510071SBram Moolenaar let t = "-<b>asdX<i>a<i />sdf</i>asdf</b>-" 102*db510071SBram Moolenaar put =t 103*db510071SBram Moolenaar normal! 0fXdit 104*db510071SBram Moolenaar call assert_equal('-<b></b>-', getline('.')) 105*db510071SBram Moolenaar 106*db510071SBram Moolenaar let t = "-<b>asdf<i>Xasdf</i>asdf</b>-" 107*db510071SBram Moolenaar put =t 108*db510071SBram Moolenaar normal! fXdat 109*db510071SBram Moolenaar call assert_equal('-<b>asdfasdf</b>-', getline('.')) 110*db510071SBram Moolenaar 111*db510071SBram Moolenaar let t = "-<b>asdX<i>as<b />df</i>asdf</b>-" 112*db510071SBram Moolenaar put =t 113*db510071SBram Moolenaar normal! 0fXdat 114*db510071SBram Moolenaar call assert_equal('--', getline('.')) 115*db510071SBram Moolenaar 116*db510071SBram Moolenaar let t = "-<b>\ninnertext object\n</b>" 117*db510071SBram Moolenaar put =t 118*db510071SBram Moolenaar normal! dit 119*db510071SBram Moolenaar call assert_equal('-<b></b>', getline('.')) 120*db510071SBram Moolenaar 121*db510071SBram Moolenaar set quoteescape& 122*db510071SBram Moolenaar enew! 123*db510071SBram Moolenaarendfunc 124*db510071SBram Moolenaar 125*db510071SBram Moolenaar" Tests for match() and matchstr() 126*db510071SBram Moolenaarfunc Test_match() 127*db510071SBram Moolenaar call assert_equal("b", matchstr("abcd", ".", 0, 2)) 128*db510071SBram Moolenaar call assert_equal("bc", matchstr("abcd", "..", 0, 2)) 129*db510071SBram Moolenaar call assert_equal("c", matchstr("abcd", ".", 2, 0)) 130*db510071SBram Moolenaar call assert_equal("a", matchstr("abcd", ".", 0, -1)) 131*db510071SBram Moolenaar call assert_equal(-1, match("abcd", ".", 0, 5)) 132*db510071SBram Moolenaar call assert_equal(0 , match("abcd", ".", 0, -1)) 133*db510071SBram Moolenaar call assert_equal(0 , match('abc', '.', 0, 1)) 134*db510071SBram Moolenaar call assert_equal(1 , match('abc', '.', 0, 2)) 135*db510071SBram Moolenaar call assert_equal(2 , match('abc', '.', 0, 3)) 136*db510071SBram Moolenaar call assert_equal(-1, match('abc', '.', 0, 4)) 137*db510071SBram Moolenaar call assert_equal(1 , match('abc', '.', 1, 1)) 138*db510071SBram Moolenaar call assert_equal(2 , match('abc', '.', 2, 1)) 139*db510071SBram Moolenaar call assert_equal(-1, match('abc', '.', 3, 1)) 140*db510071SBram Moolenaar call assert_equal(3 , match('abc', '$', 0, 1)) 141*db510071SBram Moolenaar call assert_equal(-1, match('abc', '$', 0, 2)) 142*db510071SBram Moolenaar call assert_equal(3 , match('abc', '$', 1, 1)) 143*db510071SBram Moolenaar call assert_equal(3 , match('abc', '$', 2, 1)) 144*db510071SBram Moolenaar call assert_equal(3 , match('abc', '$', 3, 1)) 145*db510071SBram Moolenaar call assert_equal(-1, match('abc', '$', 4, 1)) 146*db510071SBram Moolenaar call assert_equal(0 , match('abc', '\zs', 0, 1)) 147*db510071SBram Moolenaar call assert_equal(1 , match('abc', '\zs', 0, 2)) 148*db510071SBram Moolenaar call assert_equal(2 , match('abc', '\zs', 0, 3)) 149*db510071SBram Moolenaar call assert_equal(3 , match('abc', '\zs', 0, 4)) 150*db510071SBram Moolenaar call assert_equal(-1, match('abc', '\zs', 0, 5)) 151*db510071SBram Moolenaar call assert_equal(1 , match('abc', '\zs', 1, 1)) 152*db510071SBram Moolenaar call assert_equal(2 , match('abc', '\zs', 2, 1)) 153*db510071SBram Moolenaar call assert_equal(3 , match('abc', '\zs', 3, 1)) 154*db510071SBram Moolenaar call assert_equal(-1, match('abc', '\zs', 4, 1)) 155*db510071SBram Moolenaarendfunc 156