" tests for 'langmap'

source check.vim
CheckFeature langmap

func Test_langmap()
  new
  set langmap=}l,^x,%v

  call setline(1, ['abc'])
  call feedkeys('gg0}^', 'tx')
  call assert_equal('ac', getline(1))

  " in Replace mode
  " need silent! to avoid a delay when entering Insert mode
  call setline(1, ['abcde'])
  silent! call feedkeys("gg0lR%{z\<Esc>00", 'tx')
  call assert_equal('a%{ze', getline(1))

  " in Select mode
  " need silent! to avoid a delay when entering Insert mode
  call setline(1, ['abcde'])
  silent! call feedkeys("gg0}%}\<C-G>}^\<Esc>00", 'tx')
  call assert_equal('a}^de', getline(1))

  " Error cases
  call assert_fails('set langmap=aA,b', 'E357:')
  call assert_fails('set langmap=z;y;y;z', 'E358:')

  " Map character > 256
  enew!
  set langmap=āx,ăl,āx
  call setline(1, ['abcde'])
  call feedkeys('gg2lā', 'tx')
  call assert_equal('abde', getline(1))

  " special characters in langmap
  enew!
  call setline(1, ['Hello World'])
  set langmap=\\;\\,,\\,\\;
  call feedkeys('ggfo,', 'tx')
  call assert_equal(8, col('.'))
  call feedkeys(';', 'tx')
  call assert_equal(5, col('.'))
  set langmap&
  set langmap=\\;\\,;\\,\\;
  call feedkeys('ggfo,', 'tx')
  call assert_equal(8, col('.'))
  call feedkeys(';', 'tx')
  call assert_equal(5, col('.'))

  set langmap=RL
  let g:counter = 0
  nnoremap L;L <Cmd>let g:counter += 1<CR>
  nnoremap <C-L> <Cmd>throw 'This mapping should not be triggered'<CR>

  " 'langmap' is applied to keys without modifiers when matching a mapping
  call feedkeys('R;R', 'tx')
  call assert_equal(1, g:counter)
  nunmap L;L
  unlet g:counter

  delete
  call assert_equal('', getline(1))
  undo
  call assert_equal('Hello World', getline(1))
  " 'langmap' does not change Ctrl-R to Ctrl-L for consistency
  call feedkeys("\<*C-R>", 'tx')
  call assert_equal('', getline(1))

  set langmap=6L
  undo
  setlocal bufhidden=hide
  let oldbuf = bufnr()
  enew
  call assert_notequal(oldbuf, bufnr())
  " 'langmap' does not change Ctrl-6 to Ctrl-L for consistency
  " Ctrl-6 becomes Ctrl-^ after merging the Ctrl modifier
  call feedkeys("\<*C-6>", 'tx')
  call assert_equal(oldbuf, bufnr())
  setlocal bufhidden&

  nunmap <C-L>

  set langmap&
  quit!
endfunc

" vim: shiftwidth=2 sts=2 expandtab
