" Test for textobjects

source check.vim
CheckFeature textobjects

func CpoM(line, useM, expected)
  new

  if a:useM
    set cpoptions+=M
  else
    set cpoptions-=M
  endif

  call setline(1, a:line)

  call setreg('"', '')
  normal! ggfrmavi)y
  call assert_equal(getreg('"'), a:expected[0])

  call setreg('"', '')
  normal! `afbmavi)y
  call assert_equal(getreg('"'), a:expected[1])

  call setreg('"', '')
  normal! `afgmavi)y
  call assert_equal(getreg('"'), a:expected[2])

  q!
endfunc

func Test_inner_block_without_cpo_M()
  call CpoM('(red \(blue) green)', 0, ['red \(blue', 'red \(blue', ''])
endfunc

func Test_inner_block_with_cpo_M_left_backslash()
  call CpoM('(red \(blue) green)', 1, ['red \(blue) green', 'blue', 'red \(blue) green'])
endfunc

func Test_inner_block_with_cpo_M_right_backslash()
  call CpoM('(red (blue\) green)', 1, ['red (blue\) green', 'blue\', 'red (blue\) green'])
endfunc

func Test_inner_block_single_char()
  new
  call setline(1, "(a)")

  set selection=inclusive
  let @" = ''
  call assert_nobeep('norm! 0faviby')
  call assert_equal('a', @")

  set selection=exclusive
  let @" = ''
  call assert_nobeep('norm! 0faviby')
  call assert_equal('a', @")

  set selection&
  bwipe!
endfunc

func Test_quote_selection_selection_exclusive()
  new
  call setline(1, "a 'bcde' f")
  set selection=exclusive

  exe "norm! fdvhi'y"
  call assert_equal('bcde', @")

  let @" = 'dummy'
  exe "norm! $gevi'y"
  call assert_equal('bcde', @")

  let @" = 'dummy'
  exe "norm! 0fbhvi'y"
  call assert_equal('bcde', @")

  set selection&vim
  bw!
endfunc

func Test_quote_selection_selection_exclusive_abort()
  new
  set selection=exclusive
  call setline(1, "'abzzc'")
  let exp_curs = [0, 1, 6, 0]
  call cursor(1,1)
  exe 'norm! fcdvi"'
  " make sure to end visual mode to have a clear state
  exe "norm! \<esc>"
  call assert_equal(exp_curs, getpos('.'))
  call cursor(1,1)
  exe 'norm! fcvi"'
  exe "norm! \<esc>"
  call assert_equal(exp_curs, getpos('.'))
  call cursor(1,2)
  exe 'norm! vfcoi"'
  exe "norm! \<esc>"
  let exp_curs = [0, 1, 2, 0]
  let exp_visu = [0, 1, 7, 0]
  call assert_equal(exp_curs, getpos('.'))
  call assert_equal(exp_visu, getpos("'>"))
  set selection&vim
  bw!
endfunc

" Tests for string and html text objects
func Test_string_html_objects()

  for e in ['utf-8', 'latin1', 'cp932']
    enew!
    exe 'set enc=' .. e

    let t = '"wo\"rd\\" foo'
    put =t
    normal! da"
    call assert_equal('foo', getline('.'), e)

    let t = "'foo' 'bar' 'piep'"
    put =t
    normal! 0va'a'rx
    call assert_equal("xxxxxxxxxxxx'piep'", getline('.'), e)

    let t = "bla bla `quote` blah"
    put =t
    normal! 02f`da`
    call assert_equal("bla bla blah", getline('.'), e)

    let t = 'out " in "noXno"'
    put =t
    normal! 0fXdi"
    call assert_equal('out " in ""', getline('.'), e)

    let t = "\"'\" 'blah' rep 'buh'"
    put =t
    normal! 03f'vi'ry
    call assert_equal("\"'\" 'blah'yyyyy'buh'", getline('.'), e)

    set quoteescape=+*-
    let t = "bla `s*`d-`+++`l**` b`la"
    put =t
    normal! di`
    call assert_equal("bla `` b`la", getline('.'), e)

    let t = 'voo "nah" sdf " asdf" sdf " sdf" sd'
    put =t
    normal! $F"va"oha"i"rz
    call assert_equal('voo "zzzzzzzzzzzzzzzzzzzzzzzzzzzzsd', getline('.'), e)

    let t = "-<b>asdf<i>Xasdf</i>asdf</b>-"
    put =t
    normal! fXdit
    call assert_equal('-<b>asdf<i></i>asdf</b>-', getline('.'), e)

    let t = "-<b>asdX<i>a<i />sdf</i>asdf</b>-"
    put =t
    normal! 0fXdit
    call assert_equal('-<b></b>-', getline('.'), e)

    let t = "-<b>asdf<i>Xasdf</i>asdf</b>-"
    put =t
    normal! fXdat
    call assert_equal('-<b>asdfasdf</b>-', getline('.'), e)

    let t = "-<b>asdX<i>as<b />df</i>asdf</b>-"
    put =t
    normal! 0fXdat
    call assert_equal('--', getline('.'), e)

    let t = "-<b>\ninnertext object\n</b>"
    put =t
    normal! dit
    call assert_equal('-<b></b>', getline('.'), e)

    " copy the tag block from leading indentation before the start tag
    let t = "    <b>\ntext\n</b>"
    $put =t
    normal! 2kvaty
    call assert_equal("<b>\ntext\n</b>", @", e)

    " copy the tag block from the end tag
    let t = "<title>\nwelcome\n</title>"
    $put =t
    normal! $vaty
    call assert_equal("<title>\nwelcome\n</title>", @", e)

    " copy the outer tag block from a tag without an end tag
    let t = "<html>\n<title>welcome\n</html>"
    $put =t
    normal! k$vaty
    call assert_equal("<html>\n<title>welcome\n</html>", @", e)

    " nested tag that has < in a different line from >
    let t = "<div><div\n></div></div>"
    $put =t
    normal! k0vaty
    call assert_equal("<div><div\n></div></div>", @", e)

    " nested tag with attribute that has < in a different line from >
    let t = "<div><div\nattr=\"attr\"\n></div></div>"
    $put =t
    normal! 2k0vaty
    call assert_equal("<div><div\nattr=\"attr\"\n></div></div>", @", e)

    set quoteescape&

    " this was going beyond the end of the line
    %del
    sil! norm i"\
    sil! norm i"\
    sil! norm i"\
    call assert_equal('"\', getline(1))

    bwipe!
  endfor

  set enc=utf-8
endfunc

func Test_empty_html_tag()
  new
  call setline(1, '<div></div>')
  normal 0citxxx
  call assert_equal('<div>xxx</div>', getline(1))

  call setline(1, '<div></div>')
  normal 0f<cityyy
  call assert_equal('<div>yyy</div>', getline(1))

  call setline(1, '<div></div>')
  normal 0f<vitsaaa
  call assert_equal('aaa', getline(1))

  " selecting a tag block in a non-empty blank line should fail
  call setline(1, '    ')
  call assert_beeps('normal $vaty')

  bwipe!
endfunc

" Tests for match() and matchstr()
func Test_match()
  call assert_equal("b", matchstr("abcd", ".", 0, 2))
  call assert_equal("bc", matchstr("abcd", "..", 0, 2))
  call assert_equal("c", matchstr("abcd", ".", 2, 0))
  call assert_equal("a", matchstr("abcd", ".", 0, -1))
  call assert_equal(-1, match("abcd", ".", 0, 5))
  call assert_equal(0, match("abcd", ".", 0, -1))
  call assert_equal(0, match('abc', '.', 0, 1))
  call assert_equal(1, match('abc', '.', 0, 2))
  call assert_equal(2, match('abc', '.', 0, 3))
  call assert_equal(-1, match('abc', '.', 0, 4))
  call assert_equal(1, match('abc', '.', 1, 1))
  call assert_equal(2, match('abc', '.', 2, 1))
  call assert_equal(-1, match('abc', '.', 3, 1))
  call assert_equal(3, match('abc', '$', 0, 1))
  call assert_equal(-1, match('abc', '$', 0, 2))
  call assert_equal(3, match('abc', '$', 1, 1))
  call assert_equal(3, match('abc', '$', 2, 1))
  call assert_equal(3, match('abc', '$', 3, 1))
  call assert_equal(-1, match('abc', '$', 4, 1))
  call assert_equal(0, match('abc', '\zs', 0, 1))
  call assert_equal(1, match('abc', '\zs', 0, 2))
  call assert_equal(2, match('abc', '\zs', 0, 3))
  call assert_equal(3, match('abc', '\zs', 0, 4))
  call assert_equal(-1, match('abc', '\zs', 0, 5))
  call assert_equal(1, match('abc', '\zs', 1, 1))
  call assert_equal(2, match('abc', '\zs', 2, 1))
  call assert_equal(3, match('abc', '\zs', 3, 1))
  call assert_equal(-1, match('abc', '\zs', 4, 1))
endfunc

" This was causing an illegal memory access
func Test_inner_tag()
  new
  norm ixxx
  call feedkeys("v", 'xt')
  insert
x
x
.
  norm it
  q!
endfunc

func Test_sentence()
  enew!
  call setline(1, 'A sentence.  A sentence?  A sentence!')

  normal yis
  call assert_equal('A sentence.', @")
  normal yas
  call assert_equal('A sentence.  ', @")

  normal )

  normal yis
  call assert_equal('A sentence?', @")
  normal yas
  call assert_equal('A sentence?  ', @")

  normal )

  normal yis
  call assert_equal('A sentence!', @")
  normal yas
  call assert_equal('  A sentence!', @")

  normal 0
  normal 2yis
  call assert_equal('A sentence.  ', @")
  normal 3yis
  call assert_equal('A sentence.  A sentence?', @")
  normal 2yas
  call assert_equal('A sentence.  A sentence?  ', @")

  %delete _
endfunc

func Test_sentence_with_quotes()
  enew!
  call setline(1, 'A "sentence."  A sentence.')

  normal yis
  call assert_equal('A "sentence."', @")
  normal yas
  call assert_equal('A "sentence."  ', @")

  normal )

  normal yis
  call assert_equal('A sentence.', @")
  normal yas
  call assert_equal('  A sentence.', @")

  %delete _
endfunc

func Test_sentence_with_cursor_on_delimiter()
  enew!
  call setline(1, "A '([sentence.])'  A sentence.")

  normal! 15|yis
  call assert_equal("A '([sentence.])'", @")
  normal! 15|yas
  call assert_equal("A '([sentence.])'  ", @")

  normal! 16|yis
  call assert_equal("A '([sentence.])'", @")
  normal! 16|yas
  call assert_equal("A '([sentence.])'  ", @")

  normal! 17|yis
  call assert_equal("A '([sentence.])'", @")
  normal! 17|yas
  call assert_equal("A '([sentence.])'  ", @")

  " don't get stuck on a quote at the start of a sentence
  %delete _
  call setline(1, ['A sentence.', '"A sentence"?', 'A sentence!'])
  normal gg))
  call assert_equal(3, getcurpos()[1])

  %delete _
  call setline(1, ['A sentence.', "'A sentence'?", 'A sentence!'])
  normal gg))
  call assert_equal(3, getcurpos()[1])

  %delete _
endfunc

" Test for the paragraph (ap) text object
func Test_paragraph()
  new
  call setline(1, ['First line.', 'Second line.', 'Third line.'])
  call cursor(2, 1)
  normal vapy
  call assert_equal("First line.\nSecond line.\nThird line.\n", @")

  call cursor(2, 1)
  call assert_beeps('normal vapapy')

  call setline(1, ['First line.', 'Second line.', '  ', ''])
  call cursor(1, 1)
  normal vapy
  call assert_equal("First line.\nSecond line.\n  \n\n", @")

  call setline(1, ['', '', '', 'First line.', 'Second line.'])
  call cursor(2, 1)
  normal yap
  call assert_equal("\n\n\nFirst line.\nSecond line.\n", @")
  call assert_beeps('normal 3yap')
  exe "normal \<C-C>"

  %d
  call setline(1, ['  ', '  ', '  '])
  call cursor(2, 1)
  normal Vipy
  call assert_equal("  \n  \n  \n", @")
  call cursor(2, 1)
  call assert_beeps("normal Vipip")
  exe "normal \<C-C>"

  close!
endfunc

" Tests for text object aw
func Test_textobj_a_word()
  new
  call append(0, ['foobar,eins,foobar', 'foo,zwei,foo    '])
  " diw
  norm! 1gg0diw
  call assert_equal([',eins,foobar', 'foo,zwei,foo    ', ''], getline(1,'$'))
  " daw
  norm! 2ggEdaw
  call assert_equal([',eins,foobar', 'foo,zwei,', ''], getline(1, '$'))
  " daw the last word in a line
  call setline(1, ['foo bar', 'foo bar', ''])
  call cursor(1, 5)
  normal daw
  call assert_equal('foo', getline(1))
  " aw in visual mode
  call cursor(2, 5)
  normal! vawx
  call assert_equal('foo', getline(2))
  %d
  call append(0, ["foo\teins\tfoobar", "foo\tzwei\tfoo   "])
  " diW
  norm! 2ggwd2iW
  call assert_equal(['foo	eins	foobar', 'foo	foo   ', ''], getline(1,'$'))
  " daW
  norm! 1ggd2aW
  call assert_equal(['foobar', 'foo	foo   ', ''], getline(1,'$'))

  %d
  call append(0, ["foo\teins\tfoobar", "foo\tzwei\tfoo   "])
  " aw in visual line mode switches to characterwise mode
  norm! 2gg$Vawd
  call assert_equal(['foo	eins	foobar', 'foo	zwei	foo'], getline(1,'$'))
  norm! 1gg$Viwd
  call assert_equal(['foo	eins	', 'foo	zwei	foo'], getline(1,'$'))

  " visually selecting a tab before a word with 'selection' set to 'exclusive'
  set selection=exclusive
  normal gg3lvlawy
  call assert_equal("\teins", @")
  " visually selecting a tab before a word with 'selection' set to 'inclusive'
  set selection=inclusive
  normal gg3lvlawy
  call assert_equal("\teins\t", @")
  set selection&

  " selecting a word with no non-space characters in a buffer fails
  %d
  call setline(1, '    ')
  call assert_beeps('normal 3lyaw')

  " visually selecting words backwards with no more words to select
  call setline(1, 'one two')
  call assert_beeps('normal 2lvh2aw')
  exe "normal \<C-C>"
  call assert_beeps('normal $vh3aw')
  exe "normal \<C-C>"
  call setline(1, ['', 'one two'])
  call assert_beeps('normal 2G2lvh3aw')
  exe "normal \<C-C>"

  " selecting words forward with no more words to select
  %d
  call setline(1, 'one a')
  call assert_beeps('normal 0y3aw')
  call setline(1, 'one two ')
  call assert_beeps('normal 0y3aw')
  call assert_beeps('normal 03ly2aw')

  " clean up
  bw!
endfunc

" Test for is and as text objects
func Test_textobj_sentence()
  new
  call append(0, ['This is a test. With some sentences!', '',
        \ 'Even with a question? And one more. And no sentence here'])
  " Test for dis - does not remove trailing whitespace
  norm! 1gg0dis
  call assert_equal([' With some sentences!', '',
        \ 'Even with a question? And one more. And no sentence here', ''],
        \ getline(1,'$'))
  " Test for das - removes leading whitespace
  norm! 3ggf?ldas
  call assert_equal([' With some sentences!', '',
        \ 'Even with a question? And no sentence here', ''], getline(1,'$'))
  " when used in visual mode, is made characterwise
  norm! 3gg$Visy
  call assert_equal('v', visualmode())
  " reset visualmode()
  norm! 3ggVy
  norm! 3gg$Vasy
  call assert_equal('v', visualmode())
  " basic testing for textobjects a< and at
  %d
  call setline(1, ['<div> ','<a href="foobar" class="foo">xyz</a>','    </div>', ' '])
  " a<
  norm! 1gg0da<
  call assert_equal([' ', '<a href="foobar" class="foo">xyz</a>', '    </div>', ' '], getline(1,'$'))
  norm! 1pj
  call assert_equal([' <div>', '<a href="foobar" class="foo">xyz</a>', '    </div>', ' '], getline(1,'$'))
  " at
  norm! d2at
  call assert_equal([' '], getline(1,'$'))
  %d
  call setline(1, ['<div> ','<a href="foobar" class="foo">xyz</a>','    </div>', ' '])
  " i<
  norm! 1gg0di<
  call assert_equal(['<> ', '<a href="foobar" class="foo">xyz</a>', '    </div>', ' '], getline(1,'$'))
  norm! 1Pj
  call assert_equal(['<div> ', '<a href="foobar" class="foo">xyz</a>', '    </div>', ' '], getline(1,'$'))
  norm! d2it
  call assert_equal(['<div></div>',' '], getline(1,'$'))
  " basic testing for a[ and i[ text object
  %d
  call setline(1, [' ', '[', 'one [two]', 'thre', ']'])
  norm! 3gg0di[
  call assert_equal([' ', '[', ']'], getline(1,'$'))
  call setline(1, [' ', '[', 'one [two]', 'thre', ']'])
  norm! 3gg0ftd2a[
  call assert_equal([' '], getline(1,'$'))

  " clean up
  bw!
endfunc

" Test for quote (', " and `) textobjects
func Test_textobj_quote()
  new

  " Test for i" when cursor is in front of a quoted object
  call append(0, 'foo "bar"')
  norm! 1gg0di"
  call assert_equal(['foo ""', ''], getline(1,'$'))

  " Test for visually selecting an inner quote
  %d
  " extend visual selection from one quote to the next
  call setline(1, 'color "red" color "blue"')
  call cursor(1, 7)
  normal v4li"y
  call assert_equal('"red" color "blue', @")

  " try to extend visual selection from one quote to a non-existing quote
  call setline(1, 'color "red" color blue')
  call cursor(1, 7)
  call feedkeys('v4li"y', 'xt')
  call assert_equal('"red"', @")

  " try to extend visual selection from one quote to a next partial quote
  call setline(1, 'color "red" color "blue')
  call cursor(1, 7)
  normal v4li"y
  call assert_equal('"red" color ', @")

  " select a quote backwards in visual mode
  call cursor(1, 12)
  normal vhi"y
  call assert_equal('red" ', @")
  call assert_equal(8, col('.'))

  " select a quote backwards in visual mode from outside the quote
  call cursor(1, 17)
  normal v2hi"y
  call assert_equal('red', @")
  call assert_equal(8, col('.'))

  " visually selecting a quote with 'selection' set to 'exclusive'
  call setline(1, 'He said "How are you?"')
  set selection=exclusive
  normal 012lv2li"y
  call assert_equal('How are you?', @")
  set selection&

  " try copy a quote object with a single quote in the line
  call setline(1, "Smith's car")
  call cursor(1, 6)
  call assert_beeps("normal yi'")
  call assert_beeps("normal 2lyi'")

  " selecting space before and after a quoted string
  call setline(1, "some    'special'    string")
  normal 0ya'
  call assert_equal("'special'    ", @")
  call setline(1, "some    'special'string")
  normal 0ya'
  call assert_equal("    'special'", @")

  " quoted string with odd or even number of backslashes.
  call setline(1, 'char *s = "foo\"bar"')
  normal $hhyi"
  call assert_equal('foo\"bar', @")
  call setline(1, 'char *s = "foo\\"bar"')
  normal $hhyi"
  call assert_equal('bar', @")
  call setline(1, 'char *s = "foo\\\"bar"')
  normal $hhyi"
  call assert_equal('foo\\\"bar', @")
  call setline(1, 'char *s = "foo\\\\"bar"')
  normal $hhyi"
  call assert_equal('bar', @")

  close!
endfunc

" Test for i(, i<, etc. when cursor is in front of a block
func Test_textobj_find_paren_forward()
  new

  " i< and a> when cursor is in front of a block
  call setline(1, '#include <foo.h>')
  normal 0yi<
  call assert_equal('foo.h', @")
  normal 0ya>
  call assert_equal('<foo.h>', @")

  " 2i(, 3i( in front of a block enters second/third nested '('
  call setline(1, 'foo (bar (baz (quux)))')
  normal 0yi)
  call assert_equal('bar (baz (quux))', @")
  normal 02yi)
  call assert_equal('baz (quux)', @")
  normal 03yi)
  call assert_equal('quux', @")

  " 3i( in front of a block doesn't enter third but un-nested '('
  call setline(1, 'foo (bar (baz) (quux))')
  normal 03di)
  call assert_equal('foo (bar (baz) (quux))', getline(1))
  normal 02di)
  call assert_equal('foo (bar () (quux))', getline(1))
  normal 0di)
  call assert_equal('foo ()', getline(1))

  close!
endfunc

" vim: shiftwidth=2 sts=2 expandtab
