Skip to content

Commit c065031

Browse files
chore(tests): more unit test updates
1 parent 1a73fa4 commit c065031

File tree

12 files changed

+255
-233
lines changed

12 files changed

+255
-233
lines changed

tests/ad_hoc_spec.lua

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ local util = require('tests.util')
55
---@param start_row integer
66
---@param end_row integer
77
---@param level integer
8-
---@return render.md.MarkInfo[]
8+
---@return render.md.test.MarkInfo[]
99
local function setext_heading(start_row, end_row, level)
1010
local sign_mark, icon_mark, background_mark = unpack(util.heading(start_row, level))
1111
local icon, highlight = unpack(icon_mark.virt_text[1])
@@ -38,34 +38,34 @@ describe('ad_hoc.md', function()
3838

3939
marks:add(util.bullet(row:inc(), 0, 1))
4040
marks:add(util.conceal(row:get(), { 2, 3 }))
41-
marks:add(util.inline(row:get(), { 3, 14 }, { '󱗖 ', 'RenderMarkdownWikiLink' }))
41+
marks:add(util.inline(row:get(), { 3, 14 }, { '󱗖 ', 'RmWikiLink' }))
4242
marks:add(util.conceal(row:get(), { 14, 15 }))
4343

4444
marks:add(util.bullet(row:inc(), 0, 1))
4545
marks:add(util.conceal(row:get(), { 2, 3 }))
46-
marks:add(util.inline(row:get(), { 3, 24 }, { '󱗖 ', 'RenderMarkdownWikiLink' }))
46+
marks:add(util.inline(row:get(), { 3, 24 }, { '󱗖 ', 'RmWikiLink' }))
4747
marks:add(util.conceal(row:get(), { 4, 13 }))
4848
marks:add(util.conceal(row:get(), { 24, 25 }))
4949

5050
marks:add(util.bullet(row:inc(), 0, 1))
5151
marks:add(util.conceal(row:get(), { 2, 3 }))
52-
marks:add(util.inline(row:get(), { 2, 20 }, { '󰀓 ', 'RenderMarkdownLink' }))
52+
marks:add(util.inline(row:get(), { 2, 20 }, { '󰀓 ', 'RmLink' }))
5353
marks:add(util.highlight(row:get(), { 2, 20 }, 'link'))
5454
marks:add(util.conceal(row:get(), { 19, 20 }))
5555

5656
marks:add(util.bullet(row:inc(), 0, 1))
5757
marks:add(util.conceal(row:get(), { 2, 3 }))
58-
marks:add(util.inline(row:get(), { 2, 26 }, { '󰊤 ', 'RenderMarkdownLink' }))
58+
marks:add(util.inline(row:get(), { 2, 26 }, { '󰊤 ', 'RmLink' }))
5959
marks:add(util.highlight(row:get(), { 2, 26 }, 'link'))
6060
marks:add(util.conceal(row:get(), { 25, 26 }))
6161

6262
marks:add(util.bullet(row:inc(), 0, 1))
63-
marks:add(util.inline(row:get(), { 2, 61 }, { '󰗃 ', 'RenderMarkdownLink' }))
63+
marks:add(util.inline(row:get(), { 2, 61 }, { '󰗃 ', 'RmLink' }))
6464

6565
marks:add(util.bullet(row:inc(), 0, 1))
66-
marks:add(util.inline(row:get(), { 16, 25 }, { '¹ ᴵⁿᶠᵒ', 'RenderMarkdownLink' }, ''))
66+
marks:add(util.inline(row:get(), { 16, 25 }, { '¹ ᴵⁿᶠᵒ', 'RmLink' }, ''))
6767
marks:add(util.conceal(row:inc(2), { 0, 16 }))
68-
marks:add(util.inline(row:inc(2), { 0, 9 }, { '¹ ᴵⁿᶠᵒ', 'RenderMarkdownLink' }, ''))
68+
marks:add(util.inline(row:inc(2), { 0, 9 }, { '¹ ᴵⁿᶠᵒ', 'RmLink' }, ''))
6969

7070
util.assert_view(marks, {
7171
'󰫎 1 󰲡 Heading',

tests/box_dash_quote_spec.lua

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,17 @@ describe('box_dash_quote.md', function()
1111
marks:extend(util.heading(row:get(), 1))
1212

1313
marks:add(util.conceal(row:inc(2), { 0, 2 }))
14-
marks:add(util.inline(row:get(), { 2, 5 }, { '󰄱 ', 'RenderMarkdownUnchecked' }, ''))
14+
marks:add(util.inline(row:get(), { 2, 5 }, { '󰄱 ', 'RmUnchecked' }, ''))
1515
marks:add(util.conceal(row:inc(), { 0, 2 }))
16-
marks:add(util.inline(row:get(), { 2, 5 }, { '󰱒 ', 'RenderMarkdownChecked' }, ''))
16+
marks:add(util.inline(row:get(), { 2, 5 }, { '󰱒 ', 'RmChecked' }, ''))
1717
marks:add(util.conceal(row:inc(), { 0, 2 }))
18-
marks:add(util.inline(row:get(), { 2, 5 }, { '󰥔 ', 'RenderMarkdownTodo' }, ''))
18+
marks:add(util.inline(row:get(), { 2, 5 }, { '󰥔 ', 'RmTodo' }, ''))
1919
marks:add(util.bullet(row:inc(), 0, 1))
2020

21-
marks:add(util.overlay(row:inc(2), { 0 }, { string.rep('', vim.o.columns), 'RenderMarkdownDash' }))
21+
marks:add(util.overlay(row:inc(2), { 0 }, { string.rep('', vim.o.columns), 'RmDash' }))
2222

23-
marks:add(util.quote(row:inc(2), ' %s ', 'RenderMarkdownQuote'))
24-
marks:add(util.quote(row:inc(), ' %s ', 'RenderMarkdownQuote'))
23+
marks:add(util.quote(row:inc(2), ' %s ', 'RmQuote'))
24+
marks:add(util.quote(row:inc(), ' %s ', 'RmQuote'))
2525

2626
util.assert_view(marks, {
2727
'󰫎 1 󰲡 Checkbox / Dash / Quote',

tests/callout_spec.lua

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ describe('callout.md', function()
88

99
local marks, row = util.marks(), util.row()
1010

11-
local info = 'RenderMarkdownInfo'
11+
local info = 'RmInfo'
1212
marks:extend(util.heading(row:get(), 1))
1313
marks:add(util.quote(row:inc(2), '%s ', info))
1414
marks:add(util.overlay(row:get(), { 2, 9 }, { '󰋽 Note', info }))
@@ -17,7 +17,7 @@ describe('callout.md', function()
1717
marks:add(util.quote(row:inc(), '%s', info))
1818
marks:add(util.quote(row:inc(), '%s ', info))
1919

20-
local ok = 'RenderMarkdownSuccess'
20+
local ok = 'RmSuccess'
2121
marks:extend(util.heading(row:inc(2), 1))
2222
marks:add(util.quote(row:inc(2), '%s ', ok))
2323
marks:add(util.overlay(row:get(), { 2, 8 }, { '󰌶 Tip', ok }))
@@ -30,19 +30,19 @@ describe('callout.md', function()
3030
marks:add(util.quote(row:inc(), '%s ', ok))
3131
marks:add(util.code_border(row:get(), 2, false))
3232

33-
local hint = 'RenderMarkdownHint'
33+
local hint = 'RmHint'
3434
marks:extend(util.heading(row:inc(2), 1))
3535
marks:add(util.quote(row:inc(2), '%s ', hint))
3636
marks:add(util.overlay(row:get(), { 2, 14 }, { '󰅾 Important', hint }))
3737
marks:add(util.quote(row:inc(), '%s ', hint))
3838

39-
local warn = 'RenderMarkdownWarn'
39+
local warn = 'RmWarn'
4040
marks:extend(util.heading(row:inc(2), 1))
4141
marks:add(util.quote(row:inc(2), '%s ', warn))
4242
marks:add(util.overlay(row:get(), { 2, 12 }, { '󰀪 Custom Title', warn }, ''))
4343
marks:add(util.quote(row:inc(), '%s ', warn))
4444

45-
local err = 'RenderMarkdownError'
45+
local err = 'RmError'
4646
marks:extend(util.heading(row:inc(2), 1))
4747
marks:add(util.quote(row:inc(2), '%s ', err))
4848
marks:add(util.overlay(row:get(), { 2, 12 }, { '󰳦 Caution', err }))

tests/code_spec.lua

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,16 @@ local util = require('tests.util')
77
---@param offset integer
88
---@param left integer
99
---@param priority integer
10-
---@return render.md.MarkInfo
10+
---@return render.md.test.MarkInfo
1111
local function padding(row, col, offset, left, priority)
1212
local virt_text = {}
1313
if offset > 0 then
1414
table.insert(virt_text, { string.rep(' ', offset), 'Normal' })
1515
end
1616
if left > 0 then
17-
table.insert(virt_text, { string.rep(' ', left), 'RenderMarkdownCode' })
17+
table.insert(virt_text, { string.rep(' ', left), 'RmCode' })
1818
end
19-
---@type render.md.MarkInfo
19+
---@type render.md.test.MarkInfo
2020
return {
2121
row = { row },
2222
col = { col },

tests/helpers/details.lua

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
---@class render.md.test.MarkDetails: render.md.test.MarkInfo
2+
local MarkDetails = {}
3+
MarkDetails.__index = MarkDetails
4+
5+
---@param row integer
6+
---@param col integer
7+
---@param details vim.api.keyset.extmark_details
8+
---@return render.md.test.MarkDetails
9+
function MarkDetails.new(row, col, details)
10+
local self = setmetatable({}, MarkDetails)
11+
self.row = { row, details.end_row }
12+
self.col = { col, details.end_col }
13+
self.hl_eol = details.hl_eol
14+
self.hl_group = details.hl_group
15+
if self.hl_group ~= nil then
16+
self.hl_group = MarkDetails.simplify(self.hl_group)
17+
end
18+
---@diagnostic disable-next-line: assign-type-mismatch
19+
self.conceal = details.conceal
20+
self.virt_text = details.virt_text
21+
if self.virt_text ~= nil then
22+
for _, text in ipairs(self.virt_text) do
23+
text[2] = MarkDetails.simplify(text[2])
24+
end
25+
end
26+
self.virt_text_pos = details.virt_text_pos
27+
self.virt_text_win_col = details.virt_text_win_col
28+
self.virt_lines = details.virt_lines
29+
if self.virt_lines ~= nil then
30+
for _, line in ipairs(self.virt_lines) do
31+
for _, text in ipairs(line) do
32+
text[2] = MarkDetails.simplify(text[2])
33+
end
34+
end
35+
end
36+
self.virt_lines_above = details.virt_lines_above
37+
self.sign_text = details.sign_text
38+
self.sign_hl_group = details.sign_hl_group
39+
if self.sign_hl_group ~= nil then
40+
self.sign_hl_group = MarkDetails.simplify(self.sign_hl_group)
41+
end
42+
if details.priority ~= 4096 then
43+
self.priority = details.priority
44+
end
45+
return self
46+
end
47+
48+
---@param highlights number|string|string[]
49+
---@return string
50+
function MarkDetails.simplify(highlights)
51+
if type(highlights) == 'number' then
52+
return tostring(highlights)
53+
end
54+
if type(highlights) == 'string' then
55+
highlights = { highlights }
56+
end
57+
local result = {}
58+
for _, highlight in ipairs(highlights) do
59+
highlight = string.gsub(highlight, 'RenderMarkdown', 'Rm')
60+
table.insert(result, highlight)
61+
end
62+
return table.concat(result, ':')
63+
end
64+
65+
---@return integer[]
66+
function MarkDetails:priorities()
67+
local result = {}
68+
69+
local row_offset = 0
70+
if self.virt_lines ~= nil then
71+
row_offset = self.virt_lines_above and -0.5 or 0.5
72+
end
73+
table.insert(result, self.row[1] + row_offset)
74+
table.insert(result, (self.row[2] or self.row[1]) + row_offset)
75+
76+
local col = self.virt_text_win_col or 0
77+
table.insert(result, math.max(self.col[1], col))
78+
table.insert(result, math.max((self.col[2] or self.col[1]), col))
79+
80+
-- Inline text comes first
81+
table.insert(result, self.virt_text_pos == 'inline' and 0 or 1)
82+
-- Signs come later
83+
table.insert(result, self.sign_text == nil and 0 or 1)
84+
85+
-- Fewer text entries comes first
86+
local text = #(self.virt_text or {})
87+
for _, line in ipairs(self.virt_lines or {}) do
88+
text = text + #line
89+
end
90+
table.insert(result, text)
91+
92+
return result
93+
end
94+
95+
---@param a render.md.test.MarkDetails
96+
---@param b render.md.test.MarkDetails
97+
---@return boolean
98+
function MarkDetails.__lt(a, b)
99+
local as, bs = a:priorities(), b:priorities()
100+
for i = 1, math.max(#as, #bs) do
101+
if as[i] ~= bs[i] then
102+
return as[i] < bs[i]
103+
end
104+
end
105+
return false
106+
end
107+
108+
return MarkDetails

tests/helpers/marks.lua

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
---@class render.md.test.Marks
2+
---@field private marks render.md.test.MarkInfo[]
3+
local Marks = {}
4+
Marks.__index = Marks
5+
6+
---@return render.md.test.Marks
7+
function Marks.new()
8+
local self = setmetatable({}, Marks)
9+
self.marks = {}
10+
return self
11+
end
12+
13+
---@return render.md.test.MarkInfo[]
14+
function Marks:get()
15+
return self.marks
16+
end
17+
18+
---@param mark render.md.test.MarkInfo
19+
function Marks:add(mark)
20+
table.insert(self.marks, mark)
21+
end
22+
23+
---@param marks render.md.test.MarkInfo[]
24+
function Marks:extend(marks)
25+
vim.list_extend(self.marks, marks)
26+
end
27+
28+
return Marks

tests/helpers/row.lua

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---@class render.md.test.Row
2+
---@field private value integer
3+
local Row = {}
4+
Row.__index = Row
5+
6+
---@return render.md.test.Row
7+
function Row.new()
8+
local self = setmetatable({}, Row)
9+
self.value = 0
10+
return self
11+
end
12+
13+
---@return integer
14+
function Row:get()
15+
return self.value
16+
end
17+
18+
---@param n? integer
19+
---@return integer
20+
function Row:inc(n)
21+
self.value = self.value + (n or 1)
22+
return self.value
23+
end
24+
25+
return Row

tests/indent_spec.lua

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,17 @@ local util = require('tests.util')
55
---@param row integer
66
---@param level integer
77
---@param position 'above'|'below'
8-
---@return render.md.MarkInfo
8+
---@return render.md.test.MarkInfo
99
local function border(row, level, position)
10-
local background = string.format('RenderMarkdown_bgtofg_RenderMarkdownH%dBg', level)
10+
local background = string.format('Rm_bgtofg_RmH%dBg', level)
1111
local icon = position == 'above' and '' or ''
1212
local virtual = row == 0 and position == 'above'
1313
local line = {}
1414
if virtual then
1515
table.insert(line, { ' ', 'Normal' })
1616
end
1717
table.insert(line, { icon:rep(vim.o.columns), background })
18-
---@type render.md.MarkInfo
18+
---@type render.md.test.MarkInfo
1919
return {
2020
row = { row },
2121
col = { 0 },
@@ -32,7 +32,7 @@ local function indent_line(lengths)
3232
local result = {}
3333
for _, length in ipairs(lengths) do
3434
if length == 1 then
35-
table.insert(result, { '', 'RenderMarkdownIndent' })
35+
table.insert(result, { '', 'RmIndent' })
3636
else
3737
table.insert(result, { string.rep(' ', length), 'Normal' })
3838
end
@@ -42,9 +42,9 @@ end
4242

4343
---@param row integer
4444
---@param lengths integer[]
45-
---@return render.md.MarkInfo
45+
---@return render.md.test.MarkInfo
4646
local function indent(row, lengths)
47-
---@type render.md.MarkInfo
47+
---@type render.md.test.MarkInfo
4848
return {
4949
row = { row },
5050
col = { 0 },
@@ -54,9 +54,9 @@ local function indent(row, lengths)
5454
}
5555
end
5656

57-
---@param mark render.md.MarkInfo
57+
---@param mark render.md.test.MarkInfo
5858
---@param lengths integer[]
59-
---@return render.md.MarkInfo
59+
---@return render.md.test.MarkInfo
6060
local function indent_mark(mark, lengths)
6161
local line = indent_line(lengths)
6262
vim.list_extend(line, mark.virt_lines[1])

tests/latex_spec.lua

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@ end
2020

2121
---@param row integer
2222
---@param lines string[]
23-
---@return render.md.MarkInfo
23+
---@return render.md.test.MarkInfo
2424
local function latex(row, lines)
2525
local virt_lines = vim.iter(lines)
2626
:map(function(line)
27-
return { { line, 'RenderMarkdownMath' } }
27+
return { { line, 'RmMath' } }
2828
end)
2929
:totable()
30-
---@type render.md.MarkInfo
30+
---@type render.md.test.MarkInfo
3131
return {
3232
row = { row },
3333
col = { 0 },

tests/list_table_spec.lua

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
local util = require('tests.util')
44

5-
---@param mark render.md.MarkInfo
6-
---@return render.md.MarkInfo[]
5+
---@param mark render.md.test.MarkInfo
6+
---@return render.md.test.MarkInfo[]
77
local function padded(mark)
88
local col = mark.col[2]
99
assert(col ~= nil)

0 commit comments

Comments
 (0)