mirror of
https://github.com/neovim/neovim.git
synced 2024-09-17 20:58:20 -04:00
Compare commits
2 Commits
bf9ed8dbb3
...
cc323f19bf
Author | SHA1 | Date | |
---|---|---|---|
|
cc323f19bf | ||
|
d8337b47d7 |
98
test/unit/termkey_spec.lua
Normal file
98
test/unit/termkey_spec.lua
Normal file
@ -0,0 +1,98 @@
|
||||
local t = require('test.unit.testutil')
|
||||
local itp = t.gen_itp(it)
|
||||
|
||||
local termkey = t.cimport('./src/nvim/tui/termkey/termkey.h', './src/nvim/tui/termkey/termkey-internal.h')
|
||||
|
||||
describe('termkey', function()
|
||||
itp('01base', function()
|
||||
local tk = termkey.termkey_new_abstract("vt100", 0)
|
||||
t.neq(tk, nil);
|
||||
|
||||
t.eq(termkey.termkey_get_buffer_size(tk), 256);
|
||||
t.eq(tk.is_started, 1) -- tk->is_started true after construction
|
||||
|
||||
termkey.termkey_stop(tk);
|
||||
t.neq(tk.is_started, 1) -- tk->is_started false after termkey_stop()
|
||||
|
||||
termkey.termkey_start(tk);
|
||||
t.eq(tk.is_started, 1) -- tk->is_started true after termkey_start()
|
||||
|
||||
termkey.termkey_destroy(tk);
|
||||
end)
|
||||
|
||||
itp('02getkey', function()
|
||||
local tk = termkey.termkey_new_abstract("vt100", 0)
|
||||
|
||||
-- buffer free initially 256
|
||||
t.eq(termkey.termkey_get_buffer_remaining(tk), 256)
|
||||
|
||||
local key = t.ffi.new('TermKeyKey')
|
||||
|
||||
t.eq(termkey.termkey_getkey(tk, key), termkey.TERMKEY_RES_NONE) -- getkey yields RES_NONE when empty
|
||||
|
||||
t.eq(termkey.termkey_push_bytes(tk, "h", 1), 1) -- push_bytes returns 1
|
||||
|
||||
t.eq(termkey.termkey_get_buffer_remaining(tk), 255) -- buffer free 255 after push_bytes
|
||||
|
||||
t.eq(termkey.termkey_getkey(tk, key), termkey.TERMKEY_RES_KEY) -- getkey yields RES_KEY after h
|
||||
|
||||
t.eq(key.type, termkey.TERMKEY_TYPE_UNICODE) -- key.type after h
|
||||
t.eq(key.code.codepoint, 104) -- key.code.codepoint after h
|
||||
t.eq(key.modifiers, 0) -- key.modifiers after h
|
||||
-- is_str(key.utf8, "h", "key.utf8 after h");
|
||||
|
||||
-- is_int(termkey_get_buffer_remaining(tk), 256, "buffer free 256 after getkey");
|
||||
--
|
||||
-- is_int(termkey_getkey(tk, &key), TERMKEY_RES_NONE, "getkey yields RES_NONE a second time");
|
||||
--
|
||||
-- termkey_push_bytes(tk, "\x01", 1);
|
||||
--
|
||||
-- is_int(termkey_getkey(tk, &key), TERMKEY_RES_KEY, "getkey yields RES_KEY after C-a");
|
||||
--
|
||||
-- is_int(key.type, TERMKEY_TYPE_UNICODE, "key.type after C-a");
|
||||
-- is_int(key.code.codepoint, 'a', "key.code.codepoint after C-a");
|
||||
-- is_int(key.modifiers, TERMKEY_KEYMOD_CTRL, "key.modifiers after C-a");
|
||||
--
|
||||
-- termkey_push_bytes(tk, "\033OA", 3);
|
||||
--
|
||||
-- is_int(termkey_getkey(tk, &key), TERMKEY_RES_KEY, "getkey yields RES_KEY after Up");
|
||||
--
|
||||
-- is_int(key.type, TERMKEY_TYPE_KEYSYM, "key.type after Up");
|
||||
-- is_int(key.code.sym, TERMKEY_SYM_UP, "key.code.sym after Up");
|
||||
-- is_int(key.modifiers, 0, "key.modifiers after Up");
|
||||
--
|
||||
-- is_int(termkey_push_bytes(tk, "\033O", 2), 2, "push_bytes returns 2");
|
||||
--
|
||||
-- is_int(termkey_get_buffer_remaining(tk), 254, "buffer free 254 after partial write");
|
||||
--
|
||||
-- is_int(termkey_getkey(tk, &key), TERMKEY_RES_AGAIN, "getkey yields RES_AGAIN after partial write");
|
||||
--
|
||||
-- termkey_push_bytes(tk, "C", 1);
|
||||
--
|
||||
-- is_int(termkey_getkey(tk, &key), TERMKEY_RES_KEY, "getkey yields RES_KEY after Right completion");
|
||||
--
|
||||
-- is_int(key.type, TERMKEY_TYPE_KEYSYM, "key.type after Right");
|
||||
-- is_int(key.code.sym, TERMKEY_SYM_RIGHT, "key.code.sym after Right");
|
||||
-- is_int(key.modifiers, 0, "key.modifiers after Right");
|
||||
--
|
||||
-- is_int(termkey_get_buffer_remaining(tk), 256, "buffer free 256 after completion");
|
||||
--
|
||||
-- termkey_push_bytes(tk, "\033[27;5u", 7);
|
||||
--
|
||||
-- is_int(termkey_getkey(tk, &key), TERMKEY_RES_KEY, "getkey yields RES_KEY after Ctrl-Escape");
|
||||
--
|
||||
-- is_int(key.type, TERMKEY_TYPE_KEYSYM, "key.type after Ctrl-Escape");
|
||||
-- is_int(key.code.sym, TERMKEY_SYM_ESCAPE, "key.code.sym after Ctrl-Escape");
|
||||
-- is_int(key.modifiers, TERMKEY_KEYMOD_CTRL, "key.modifiers after Ctrl-Escape");
|
||||
--
|
||||
-- termkey_push_bytes(tk, "\0", 1);
|
||||
--
|
||||
-- is_int(termkey_getkey(tk, &key), TERMKEY_RES_KEY, "getkey yields RES_KEY after Ctrl-Space");
|
||||
--
|
||||
-- is_int(key.type, TERMKEY_TYPE_UNICODE, "key.type after Ctrl-Space");
|
||||
-- is_int(key.code.codepoint, ' ', "key.code.codepoint after Ctrl-Space");
|
||||
-- is_int(key.modifiers, TERMKEY_KEYMOD_CTRL, "key.modifiers after Ctrl-Space");
|
||||
--
|
||||
-- termkey_destroy(tk);
|
||||
end)
|
||||
end)
|
Loading…
Reference in New Issue
Block a user