mirror of
https://github.com/neovim/neovim.git
synced 2024-12-24 13:15:09 -07:00
33464189bc
Lua's string.byte has a maximum (undocumented) allowable length, so vim.text.hencode fails on large strings with the error "string slice too long". Instead of converting the string to an array of bytes up front, convert each character to a byte one at a time.
31 lines
810 B
Lua
31 lines
810 B
Lua
local t = require('test.testutil')
|
|
local n = require('test.functional.testnvim')()
|
|
|
|
local clear = n.clear
|
|
local eq = t.eq
|
|
|
|
describe('vim.text', function()
|
|
before_each(clear)
|
|
|
|
describe('hexencode() and hexdecode()', function()
|
|
it('works', function()
|
|
local cases = {
|
|
{ 'Hello world!', '48656C6C6F20776F726C6421' },
|
|
{ '😂', 'F09F9882' },
|
|
}
|
|
|
|
for _, v in ipairs(cases) do
|
|
local input, output = unpack(v)
|
|
eq(output, vim.text.hexencode(input))
|
|
eq(input, vim.text.hexdecode(output))
|
|
end
|
|
end)
|
|
|
|
it('works with very large strings', function()
|
|
local input, output = string.rep('😂', 2 ^ 16), string.rep('F09F9882', 2 ^ 16)
|
|
eq(output, vim.text.hexencode(input))
|
|
eq(input, vim.text.hexdecode(output))
|
|
end)
|
|
end)
|
|
end)
|