" 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&
  quit!
endfunc

" vim: shiftwidth=2 sts=2 expandtab
