aboutsummaryrefslogtreecommitdiff
path: root/test/functional/ui/input_spec.lua
blob: 29d974b709fc5da517ae12c4b4de840465a5a8d6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
local helpers = require('test.functional.helpers')(after_each)
local clear, feed_command, nvim = helpers.clear, helpers.feed_command, helpers.nvim
local feed, next_message, eq = helpers.feed, helpers.next_message, helpers.eq
local expect = helpers.expect
local Screen = require('test.functional.ui.screen')

if helpers.pending_win32(pending) then return end

describe('mappings', function()
  local cid

  local add_mapping = function(mapping, send)
    local cmd = "nnoremap "..mapping.." :call rpcnotify("..cid..", 'mapped', '"
                ..send:gsub('<', '<lt>').."')<cr>"
    feed_command(cmd)
  end

  local check_mapping = function(mapping, expected)
    feed(mapping)
    eq({'notification', 'mapped', {expected}}, next_message())
  end

  before_each(function()
    clear()
    cid = nvim('get_api_info')[1]
    add_mapping('<s-up>', '<s-up>')
    add_mapping('<s-up>', '<s-up>')
    add_mapping('<c-s-up>', '<c-s-up>')
    add_mapping('<c-s-a-up>', '<c-s-a-up>')
    add_mapping('<c-s-a-d-up>', '<c-s-a-d-up>')
    add_mapping('<c-d-a>', '<c-d-a>')
    add_mapping('<d-1>', '<d-1>')
  end)

  it('ok', function()
    check_mapping('<s-up>', '<s-up>')
    check_mapping('<c-s-up>', '<c-s-up>')
    check_mapping('<s-c-up>', '<c-s-up>')
    check_mapping('<c-s-a-up>', '<c-s-a-up>')
    check_mapping('<s-c-a-up>', '<c-s-a-up>')
    check_mapping('<c-a-s-up>', '<c-s-a-up>')
    check_mapping('<s-a-c-up>', '<c-s-a-up>')
    check_mapping('<a-c-s-up>', '<c-s-a-up>')
    check_mapping('<a-s-c-up>', '<c-s-a-up>')
    check_mapping('<c-s-a-d-up>', '<c-s-a-d-up>')
    check_mapping('<s-a-d-c-up>', '<c-s-a-d-up>')
    check_mapping('<d-s-a-c-up>', '<c-s-a-d-up>')
    check_mapping('<c-d-a>', '<c-d-a>')
    check_mapping('<d-c-a>', '<c-d-a>')
    check_mapping('<d-1>', '<d-1>')
  end)
end)

describe('feeding large chunks of input with <Paste>', function()
  local screen
  before_each(function()
    clear()
    screen = Screen.new()
    screen:attach()
    feed_command('set ruler')
  end)

  it('ok', function()
    local t = {}
    for i = 1, 20000 do
      t[i] = 'item ' .. tostring(i)
    end
    feed('i<Paste>')
    screen:expect([[
      ^                                                     |
      ~                                                    |
      ~                                                    |
      ~                                                    |
      ~                                                    |
      ~                                                    |
      ~                                                    |
      ~                                                    |
      ~                                                    |
      ~                                                    |
      ~                                                    |
      ~                                                    |
      ~                                                    |
      -- INSERT (paste) --                                 |
    ]])
    feed(table.concat(t, '<Enter>'))
    screen:expect([[
      item 19988                                           |
      item 19989                                           |
      item 19990                                           |
      item 19991                                           |
      item 19992                                           |
      item 19993                                           |
      item 19994                                           |
      item 19995                                           |
      item 19996                                           |
      item 19997                                           |
      item 19998                                           |
      item 19999                                           |
      item 20000^                                           |
      -- INSERT (paste) --                                 |
    ]])
    feed('<Paste>')
    screen:expect([[
      item 19988                                           |
      item 19989                                           |
      item 19990                                           |
      item 19991                                           |
      item 19992                                           |
      item 19993                                           |
      item 19994                                           |
      item 19995                                           |
      item 19996                                           |
      item 19997                                           |
      item 19998                                           |
      item 19999                                           |
      item 20000^                                           |
      -- INSERT --                       20000,11      Bot |
    ]])
  end)
end)

describe('input utf sequences that contain CSI/K_SPECIAL', function()
  before_each(clear)
  it('ok', function()
    feed('i…<esc>')
    expect('…')
  end)
end)