" test 'tagcase' option

func Test_tagcase()
  call writefile(["Bar\tXtext\t3", "Foo\tXtext\t2", "foo\tXtext\t4"], 'Xtags')
  set tags=Xtags
  e Xtext

  for &ic in [0, 1]
    for &scs in [0, 1]
      for &g:tc in ["followic", "ignore", "match", "followscs", "smart"]
	for &l:tc in ["", "followic", "ignore", "match", "followscs", "smart"]
	  let smart = 0
	  if &l:tc != ''
	    let tc = &l:tc
	  else
	    let tc = &g:tc
	  endif
	  if tc == 'followic'
	    let ic = &ic
	  elseif tc == 'ignore'
	    let ic = 1
	  elseif tc == 'followscs'
	    let ic = &ic
	    let smart = &scs
	  elseif tc == 'smart'
	    let ic = 1
	    let smart = 1
	  else
	    let ic = 0
	  endif
	  if ic && smart
	    call assert_equal(['foo', 'Foo'], map(taglist("^foo$"), {i, v -> v.name}))
	    call assert_equal(['Foo'], map(taglist("^Foo$"), {i, v -> v.name}))
	  elseif ic
	    call assert_equal(['foo', 'Foo'], map(taglist("^foo$"), {i, v -> v.name}))
	    call assert_equal(['Foo', 'foo'], map(taglist("^Foo$"), {i, v -> v.name}))
	  else
	    call assert_equal(['foo'], map(taglist("^foo$"), {i, v -> v.name}))
	    call assert_equal(['Foo'], map(taglist("^Foo$"), {i, v -> v.name}))
	  endif
	endfor
      endfor
    endfor
  endfor

  call delete('Xtags')
  set ic&
  setg tc&
  setl tc&
  set scs&
endfunc

func Test_set_tagcase()
  " Verify default values.
  set ic&
  setg tc&
  setl tc&
  call assert_equal(0, &ic)
  call assert_equal('followic', &g:tc)
  call assert_equal('followic', &l:tc)
  call assert_equal('followic', &tc)

  " Verify that the local setting accepts <empty> but that the global setting
  " does not.  The first of these (setting the local value to <empty>) should
  " succeed; the other two should fail.
  setl tc=
  call assert_fails('setg tc=', 'E474:')
  call assert_fails('set tc=', 'E474:')

  set ic&
  setg tc&
  setl tc&
endfunc
