xref: /vim-8.2.3635/src/testdir/test_maparg.vim (revision 8fe1000e)
1" Tests for maparg().
2" Also test utf8 map with a 0x80 byte.
3" Also test mapcheck()
4
5function s:SID()
6  return str2nr(matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze_SID$'))
7endfun
8
9function Test_maparg()
10  new
11  set cpo-=<
12  set encoding=utf8
13  " Test maparg() with a string result
14  let sid = s:SID()
15  let lnum = expand('<sflnum>')
16  map foo<C-V> is<F4>foo
17  vnoremap <script> <buffer> <expr> <silent> bar isbar
18  call assert_equal("is<F4>foo", maparg('foo<C-V>'))
19  call assert_equal({'silent': 0, 'noremap': 0, 'lhs': 'foo<C-V>',
20        \ 'mode': ' ', 'nowait': 0, 'expr': 0, 'sid': sid, 'lnum': lnum + 1,
21	\ 'rhs': 'is<F4>foo', 'buffer': 0},
22	\ maparg('foo<C-V>', '', 0, 1))
23  call assert_equal({'silent': 1, 'noremap': 1, 'lhs': 'bar', 'mode': 'v',
24        \ 'nowait': 0, 'expr': 1, 'sid': sid, 'lnum': lnum + 2,
25	\ 'rhs': 'isbar', 'buffer': 1},
26        \ 'bar'->maparg('', 0, 1))
27  let lnum = expand('<sflnum>')
28  map <buffer> <nowait> foo bar
29  call assert_equal({'silent': 0, 'noremap': 0, 'lhs': 'foo', 'mode': ' ',
30        \ 'nowait': 1, 'expr': 0, 'sid': sid, 'lnum': lnum + 1, 'rhs': 'bar',
31	\ 'buffer': 1},
32        \ maparg('foo', '', 0, 1))
33  let lnum = expand('<sflnum>')
34  tmap baz foo
35  call assert_equal({'silent': 0, 'noremap': 0, 'lhs': 'baz', 'mode': 't',
36        \ 'nowait': 0, 'expr': 0, 'sid': sid, 'lnum': lnum + 1, 'rhs': 'foo',
37	\ 'buffer': 0},
38        \ maparg('baz', 't', 0, 1))
39
40  map abc x<char-114>x
41  call assert_equal("xrx", maparg('abc'))
42  map abc y<S-char-114>y
43  call assert_equal("yRy", maparg('abc'))
44
45  map abc <Nop>
46  call assert_equal("<Nop>", maparg('abc'))
47  unmap abc
48endfunction
49
50func Test_mapcheck()
51  call assert_equal('', mapcheck('a'))
52  call assert_equal('', mapcheck('abc'))
53  call assert_equal('', mapcheck('ax'))
54  call assert_equal('', mapcheck('b'))
55
56  map a something
57  call assert_equal('something', mapcheck('a'))
58  call assert_equal('something', mapcheck('a', 'n'))
59  call assert_equal('', mapcheck('a', 'c'))
60  call assert_equal('', mapcheck('a', 'i'))
61  call assert_equal('something', 'abc'->mapcheck())
62  call assert_equal('something', 'ax'->mapcheck())
63  call assert_equal('', mapcheck('b'))
64  unmap a
65
66  map ab foobar
67  call assert_equal('foobar', mapcheck('a'))
68  call assert_equal('foobar', mapcheck('abc'))
69  call assert_equal('', mapcheck('ax'))
70  call assert_equal('', mapcheck('b'))
71  unmap ab
72
73  map abc barfoo
74  call assert_equal('barfoo', mapcheck('a'))
75  call assert_equal('barfoo', mapcheck('a', 'n', 0))
76  call assert_equal('', mapcheck('a', 'n', 1))
77  call assert_equal('barfoo', mapcheck('abc'))
78  call assert_equal('', mapcheck('ax'))
79  call assert_equal('', mapcheck('b'))
80  unmap abc
81
82  abbr ab abbrev
83  call assert_equal('abbrev', mapcheck('a', 'i', 1))
84  call assert_equal('', mapcheck('a', 'n', 1))
85  call assert_equal('', mapcheck('a', 'i', 0))
86  unabbr ab
87endfunc
88
89function Test_range_map()
90  new
91  " Outside of the range, minimum
92  inoremap <Char-0x1040> a
93  execute "normal a\u1040\<Esc>"
94  " Inside of the range, minimum
95  inoremap <Char-0x103f> b
96  execute "normal a\u103f\<Esc>"
97  " Inside of the range, maximum
98  inoremap <Char-0xf03f> c
99  execute "normal a\uf03f\<Esc>"
100  " Outside of the range, maximum
101  inoremap <Char-0xf040> d
102  execute "normal a\uf040\<Esc>"
103  call assert_equal("abcd", getline(1))
104endfunction
105