" Tests for :unlet

func Test_read_only()
  " these caused a crash
  call assert_fails('unlet count', 'E795:')
  call assert_fails('unlet errmsg', 'E795:')
endfunc

func Test_existing()
  let does_exist = 1
  call assert_true(exists('does_exist'))
  unlet does_exist
  call assert_false(exists('does_exist'))
endfunc

func Test_not_existing()
  unlet! does_not_exist
  call assert_fails('unlet does_not_exist', 'E108:')
endfunc

func Test_unlet_fails()
  call assert_fails('unlet v:["count"]', 'E46:')
  call assert_fails('unlet $', 'E475:')
  let v = {}
  call assert_fails('unlet v[:]', 'E719:')
  let l = []
  call assert_fails("unlet l['k'", 'E111:')
  let d = {'k' : 1}
  call assert_fails("unlet d.k2", 'E716:')
  call assert_fails("unlet {a};", 'E488:')
endfunc

func Test_unlet_env()
  let envcmd = has('win32') ? 'set' : 'env'

  let $FOOBAR = 'test'
  let found = 0
  for kv in split(system(envcmd), "\r*\n")
    if kv == 'FOOBAR=test'
      let found = 1
    endif
  endfor
  call assert_equal(1, found)

  unlet $FOOBAR
  let found = 0
  for kv in split(system(envcmd), "\r*\n")
    if kv == 'FOOBAR=test'
      let found = 1
    endif
  endfor
  call assert_equal(0, found)

  unlet $MUST_NOT_BE_AN_ERROR
endfunc

func Test_unlet_complete()
  let g:FOOBAR = 1
  call feedkeys(":unlet g:FOO\t\n", 'tx')
  call assert_true(!exists('g:FOOBAR'))

  let $FOOBAR = 1
  call feedkeys(":unlet $FOO\t\n", 'tx')
  call assert_true(!exists('$FOOBAR') || empty($FOOBAR))
endfunc

" vim: shiftwidth=2 sts=2 expandtab
