Test for option autocommand

STARTTEST
:so small.vim
:if !has("eval") || !has("autocmd") || !exists("+autochdir") | e! test.ok | w! test.out | qa! | endif
:fu! AutoCommand(match)
:	let c=g:testcase
:       let item=remove(g:options, 0)
:       let c.=printf("Expected: Name: <%s>, Oldval: <%s>, NewVal: <%s>, Scope: <%s>\n", item[0], item[1], item[2], item[3])
:       let c.=printf("Autocmd Option: <%s>,", a:match)
:       let c.=printf(" OldVal: <%s>,", v:option_old)
:       let c.=printf(" NewVal: <%s>,", v:option_new)
:       let c.=printf(" Scope: <%s>\n", v:option_type)
:       call setreg('r', printf("%s\n%s", getreg('r'), c))
:endfu
:au OptionSet * :call AutoCommand(expand("<amatch>"))
:let g:testcase="1: Setting number option\n"
:let g:options=[['number', 0, 1, 'global']]
:set nu
:let g:testcase="2: Setting local number option\n"
:let g:options=[['number', 1, 0, 'local']]
:setlocal nonu
:let g:testcase="3: Setting global number option\n"
:let g:options=[['number', 1, 0, 'global']]
:setglobal nonu
:let g:testcase="4: Setting local autoindent option\n"
:let g:options=[['autoindent', 0, 1, 'local']]
:setlocal ai
:let g:testcase="5: Setting global autoindent option\n"
:let g:options=[['autoindent', 0, 1, 'global']]
:setglobal ai
:let g:testcase="6: Setting global autoindent option\n"
:let g:options=[['autoindent', 1, 0, 'global']]
:set ai!
: Should not print anything, use :noa
:noa :set nonu
:let g:testcase="7: Setting several global list and number option\n"
:let g:options=[['list', 0, 1, 'global'], ['number', 0, 1, 'global']]
:set list nu
:noa set nolist nonu
:let g:testcase="8: Setting global acd\n"
:let g:options=[['autochdir', 0, 1, 'global']]
:setlocal acd
:let g:testcase="9: Setting global autoread\n"
:let g:options=[['autoread', 0, 1, 'global']]
:set ar
:let g:testcase="10: Setting local autoread\n"
:let g:options=[['autoread', 0, 1, 'local']]
:setlocal ar
:let g:testcase="11: Setting global autoread\n"
:let g:options=[['autoread', 1, 0, 'global']]
:setglobal invar
:let g:testcase="12: Setting option backspace through :let\n"
:let g:options=[['backspace', '', 'eol,indent,start', 'global']]
:let &bs="eol,indent,start"
:let g:testcase="13: Setting option backspace through setbufvar()\n"
:let g:options=[['backup', '', '1', 'local']]
: "try twice, first time, shouldn't trigger because option name is invalid, second time, it should trigger
:call setbufvar(1, '&l:bk', 1)
: "should trigger, use correct option name
:call setbufvar(1, '&backup', 1)
:let g:testcase="14: Setting number option using setwinvar\n"
:let g:options=[['number', 0, 1, 'local']]
:call setwinvar(0, '&number', 1)
:" Write register now, because next test shouldn't output anything.
:$put r
:let @r=''
:let g:testcase="\n15: Setting key option, shouldn't trigger\n"
:let g:options=[['key', 'invalid', 'invalid1', 'invalid']]
:setlocal key=blah
:setlocal key=
:$put =g:testcase
:$put r
:/^dummy text/,$w! test.out
:qa!
ENDTEST
dummy text
