2024-04-20 08:44:13 -07:00
|
|
|
local t = require('test.testutil')
|
|
|
|
local n = require('test.functional.testnvim')()
|
|
|
|
|
|
|
|
local clear = n.clear
|
2024-04-08 02:03:20 -07:00
|
|
|
local eq = t.eq
|
2023-11-16 10:35:54 -07:00
|
|
|
|
|
|
|
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)
|
2024-08-17 20:28:03 -07:00
|
|
|
|
|
|
|
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)
|
2024-11-26 12:56:01 -07:00
|
|
|
|
|
|
|
it('errors on invalid input', function()
|
|
|
|
-- Odd number of hex characters
|
|
|
|
do
|
|
|
|
local res, err = vim.text.hexdecode('ABC')
|
|
|
|
eq(nil, res)
|
|
|
|
eq('string must have an even number of hex characters', err)
|
|
|
|
end
|
|
|
|
|
|
|
|
-- Non-hexadecimal input
|
|
|
|
do
|
|
|
|
local res, err = vim.text.hexdecode('nothex')
|
|
|
|
eq(nil, res)
|
|
|
|
eq('string must contain only hex characters', err)
|
|
|
|
end
|
|
|
|
end)
|
2023-11-16 10:35:54 -07:00
|
|
|
end)
|
|
|
|
end)
|