fix: add util unit test and fix util.center mistake
This commit is contained in:
parent
b12bef50f9
commit
b27bc4ed26
@ -60,6 +60,7 @@ end
|
||||
---Puase coroutine for {ms} milliseconds
|
||||
---@param ms integer
|
||||
function M.pause(ms)
|
||||
assert(ms)
|
||||
local co = coroutine.running()
|
||||
vim.defer_fn(function()
|
||||
coroutine.resume(co)
|
||||
@ -114,7 +115,6 @@ function M.center(node, win_width)
|
||||
end
|
||||
|
||||
local str = node[1]
|
||||
win_width = str:width()
|
||||
local space = math.max(0, math.floor((win_width - str:width()) / 2))
|
||||
node[1] = string.rep(' ', space) .. str
|
||||
return node
|
||||
|
@ -6,6 +6,7 @@ _G.api = vim.api
|
||||
_G.fn = vim.fn
|
||||
_G.mock = require 'luassert.mock'
|
||||
_G.stub = require 'luassert.stub'
|
||||
string.width = api.nvim_strwidth
|
||||
|
||||
---@param func fun(buffer: TransBuffer)
|
||||
---@return fun()
|
||||
|
@ -1,9 +1,78 @@
|
||||
---@diagnostic disable: param-type-mismatch
|
||||
require 'test.setup'
|
||||
|
||||
local util = Trans.util
|
||||
|
||||
describe('util.display_height', with_buffer(function(buffer)
|
||||
--- TODO :
|
||||
describe('util.display_height', function()
|
||||
it('can calculate the height of lines when window with wrap option', function()
|
||||
local lines = {
|
||||
'1234567890',
|
||||
'1234567890',
|
||||
'1234567890',
|
||||
'1234567890',
|
||||
'1234567890',
|
||||
'1234567890',
|
||||
'1234567890',
|
||||
'1234567890',
|
||||
'1234567890',
|
||||
}
|
||||
|
||||
assert.are.equal(#lines, util.display_height(lines, 10))
|
||||
assert.are.equal(#lines, util.display_height(lines, 11))
|
||||
assert.are.equal(2 * #lines, util.display_height(lines, 9))
|
||||
|
||||
-- Unicode width test
|
||||
local u_lines = {
|
||||
'12345678👍', -- 10
|
||||
'あうえお', -- 8
|
||||
'𠮷野い𠮷家野家家', -- 16
|
||||
'👍👍👍お家', -- 10
|
||||
}
|
||||
|
||||
assert.are.equal(4, util.display_height(u_lines, 20))
|
||||
assert.are.equal(4, util.display_height(u_lines, 16))
|
||||
assert.are.equal(5, util.display_height(u_lines, 10))
|
||||
assert.are.equal(7, util.display_height(u_lines, 8))
|
||||
assert.are.equal(9, util.display_height(u_lines, 7))
|
||||
end)
|
||||
end))
|
||||
end)
|
||||
|
||||
describe('util.display_width', function()
|
||||
it('can calculate the max width of lines', function()
|
||||
local lines = {
|
||||
'1234567890',
|
||||
'123456789',
|
||||
'12345678',
|
||||
'1234567',
|
||||
'123456',
|
||||
'12345',
|
||||
'1234',
|
||||
'123',
|
||||
'12',
|
||||
'1',
|
||||
}
|
||||
|
||||
assert.are.equal(10, util.display_width(lines))
|
||||
-- Unicode width test
|
||||
local u_lines = {
|
||||
'12345678👍', -- 10
|
||||
'あうえお', -- 8
|
||||
'𠮷野い𠮷家野家家', -- 16
|
||||
'👍👍👍お家', -- 10
|
||||
}
|
||||
|
||||
assert.are.equal(16, util.display_width(u_lines))
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('util.center', function()
|
||||
it('will return the node if its width more than width', function()
|
||||
local node = i { '1234567890' }
|
||||
assert.are.same(node, util.center(node, 9))
|
||||
end)
|
||||
|
||||
it('will auto padding space', function()
|
||||
local node = i { '1234567890' }
|
||||
assert.are.same(i { (' '):rep(2) .. '1234567890' }, util.center(node, 15))
|
||||
end)
|
||||
end)
|
||||
|
2
makefile
2
makefile
@ -1,4 +1,4 @@
|
||||
.PHONE: test
|
||||
|
||||
test:
|
||||
nvim --headless --noplugin -u script/minimal_init.vim -c "PlenaryBustedDirectory lua/test/ { minimal_init = './scripts/minimal_init.vim' }" -c 'qa!'
|
||||
nvim --headless --noplugin -u scripts/minimal_init.vim -c "PlenaryBustedDirectory lua/test/ { minimal_init = './scripts/minimal_init.vim' }" -c 'qa!'
|
||||
|
Loading…
x
Reference in New Issue
Block a user