From c2a60ae10e7badad9186de59a9994fc8c9f539e0 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Thu, 23 Jan 2020 16:19:54 +0100 Subject: patch 8.2.0144: some mapping code is not fully tested Problem: Some mapping code is not fully tested. Solution: Add more test cases. (Yegappan Lakshmanan, closes #5519) --- src/testdir/test_langmap.vim | 27 +++++ src/testdir/test_maparg.vim | 25 +++++ src/testdir/test_mapping.vim | 250 ++++++++++++++++++++++++++++++++++++++++++- src/version.c | 2 + 4 files changed, 303 insertions(+), 1 deletion(-) diff --git a/src/testdir/test_langmap.vim b/src/testdir/test_langmap.vim index 420ff0fe8..4f831aa40 100644 --- a/src/testdir/test_langmap.vim +++ b/src/testdir/test_langmap.vim @@ -23,5 +23,32 @@ func Test_langmap() silent! call feedkeys("gg0}%}\}^\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 diff --git a/src/testdir/test_maparg.vim b/src/testdir/test_maparg.vim index 15bbf3b9b..d6b61019b 100644 --- a/src/testdir/test_maparg.vim +++ b/src/testdir/test_maparg.vim @@ -47,9 +47,34 @@ function Test_maparg() call assert_equal(['{', 'w', 'o'], [d.lhs, d.rhs, d.mode]) ounmap { + lmap { w + let d = maparg('{', 'l', 0, 1) + call assert_equal(['{', 'w', 'l'], [d.lhs, d.rhs, d.mode]) + lunmap { + + nmap { w + let d = maparg('{', 'n', 0, 1) + call assert_equal(['{', 'w', 'n'], [d.lhs, d.rhs, d.mode]) + nunmap { + + xmap { w + let d = maparg('{', 'x', 0, 1) + call assert_equal(['{', 'w', 'x'], [d.lhs, d.rhs, d.mode]) + xunmap { + + smap { w + let d = maparg('{', 's', 0, 1) + call assert_equal(['{', 'w', 's'], [d.lhs, d.rhs, d.mode]) + sunmap { + map abc call assert_equal("", maparg('abc')) unmap abc + + call feedkeys(":abbr esc \\\\\\\", "xt") + let d = maparg('esc', 'i', 1, 1) + call assert_equal(['esc', "\\\", '!'], [d.lhs, d.rhs, d.mode]) + abclear endfunction func Test_mapcheck() diff --git a/src/testdir/test_mapping.vim b/src/testdir/test_mapping.vim index 3d5bb19a2..92ffc53eb 100644 --- a/src/testdir/test_mapping.vim +++ b/src/testdir/test_mapping.vim @@ -461,6 +461,22 @@ func Test_list_mappings() call assert_equal(['i * ShiftSlash'], execute('imap')->trim()->split("\n")) iunmap call assert_equal(['No mapping found'], execute('imap')->trim()->split("\n")) + + " List global, buffer local and script local mappings + nmap ,f /^\k\+ ( + nmap ,f /^\k\+ ( + nmap