Skip to content

Commit

Permalink
test(nut): add tests for tab.winlist
Browse files Browse the repository at this point in the history
  • Loading branch information
MunifTanjim committed Jan 7, 2024
1 parent 9d8da68 commit 093cd59
Show file tree
Hide file tree
Showing 3 changed files with 312 additions and 33 deletions.
44 changes: 13 additions & 31 deletions tests/nougat/nut/tab/tablist_spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,9 @@ local t = require("tests.util")
describe("nut.tab.tablist", function()
local tablist

---@type { bufnr: integer, winid: integer, tabid: integer }[]
local tabs = {}
local tabs = t.make_tabs()
local bar, ctx, ns

local function add_tab()
vim.cmd.tabnew()
local tab = {
bufnr = vim.api.nvim_get_current_buf(),
winid = vim.api.nvim_get_current_win(),
tabid = vim.api.nvim_get_current_tabpage(),
}
table.insert(tabs, tab)
return tab
end

before_each(function()
require("nougat.store")._clear()

Expand All @@ -37,8 +25,6 @@ describe("nut.tab.tablist", function()
number_hl = require("nougat.nut.tab.tablist.number").hl,
}

tabs = {}

ns = vim.api.nvim_create_namespace("test:nut.tab.tablist")

local bufnr = vim.api.nvim_create_buf(false, false)
Expand All @@ -50,20 +36,16 @@ describe("nut.tab.tablist", function()
width = vim.api.nvim_win_get_width(0),
})

table.insert(tabs, { bufnr = ctx.bufnr, winid = ctx.winid, tabid = ctx.tabid })
tabs.init()
end)

after_each(function()
vim.cmd.tabonly({ bang = true })

for _, tab in ipairs(tabs) do
vim.api.nvim_buf_delete(tab.bufnr, { force = true })
end
tabs.cleanup()
end)

it("works", function()
vim.api.nvim_buf_set_name(tabs[1].bufnr, "TAB:A")
vim.api.nvim_buf_set_name(add_tab().bufnr, "TAB:B")
vim.api.nvim_buf_set_name(tabs.add().bufnr, "TAB:B")

bar:add_item(tablist.tabs({
active_tab = {
Expand Down Expand Up @@ -181,8 +163,8 @@ describe("nut.tab.tablist", function()
describe("label", function()
it("handles tab move", function()
vim.api.nvim_buf_set_name(tabs[1].bufnr, "_A_")
vim.api.nvim_buf_set_name(add_tab().bufnr, "_B_")
vim.api.nvim_buf_set_name(add_tab().bufnr, "_C_")
vim.api.nvim_buf_set_name(tabs.add().bufnr, "_B_")
vim.api.nvim_buf_set_name(tabs.add().bufnr, "_C_")

bar:add_item(tablist.tabs({}))

Expand Down Expand Up @@ -246,7 +228,7 @@ describe("nut.tab.tablist", function()

it(".hl.diagnostic()", function()
vim.api.nvim_buf_set_name(tabs[1].bufnr, "_A_")
vim.api.nvim_buf_set_name(add_tab().bufnr, "_B_")
vim.api.nvim_buf_set_name(tabs.add().bufnr, "_B_")

bar:add_item(tablist.tabs({
active_tab = {
Expand Down Expand Up @@ -345,7 +327,7 @@ describe("nut.tab.tablist", function()

it("handles filename change", function()
vim.api.nvim_buf_set_name(tabs[1].bufnr, "_A_")
vim.api.nvim_buf_set_name(add_tab().bufnr, "_B_")
vim.api.nvim_buf_set_name(tabs.add().bufnr, "_B_")

bar:add_item(tablist.tabs({
active_tab = {
Expand Down Expand Up @@ -399,8 +381,8 @@ describe("nut.tab.tablist", function()
describe("number", function()
it("handles tab move", function()
vim.api.nvim_buf_set_name(tabs[1].bufnr, "_A_")
vim.api.nvim_buf_set_name(add_tab().bufnr, "_B_")
vim.api.nvim_buf_set_name(add_tab().bufnr, "_C_")
vim.api.nvim_buf_set_name(tabs.add().bufnr, "_B_")
vim.api.nvim_buf_set_name(tabs.add().bufnr, "_C_")

bar:add_item(tablist.tabs({
active_tab = {
Expand Down Expand Up @@ -456,9 +438,9 @@ describe("nut.tab.tablist", function()

it("diagnostic_count", function()
vim.api.nvim_buf_set_name(tabs[1].bufnr, "_A_")
vim.api.nvim_buf_set_name(add_tab().bufnr, "_B_")
vim.api.nvim_buf_set_name(add_tab().bufnr, "_C_")
vim.api.nvim_buf_set_name(add_tab().bufnr, "_D_")
vim.api.nvim_buf_set_name(tabs.add().bufnr, "_B_")
vim.api.nvim_buf_set_name(tabs.add().bufnr, "_C_")
vim.api.nvim_buf_set_name(tabs.add().bufnr, "_D_")

bar:add_item(tablist.tabs({
active_tab = {
Expand Down
213 changes: 213 additions & 0 deletions tests/nougat/nut/tab/winlist_spec.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,213 @@
pcall(require, "luacov")

local Bar = require("nougat.bar")

local t = require("tests.util")

describe("nut.tab.winlist", function()
local winlist

local tabs = t.make_tabs()
local bar, ctx

before_each(function()
vim.go.showtabline = 2

require("nougat.store")._clear()

winlist = {
wins = require("nougat.nut.tab.winlist").create,
label = require("nougat.nut.tab.winlist.label").create,
}

bar = Bar("tabline")
ctx = t.make_ctx(0, {
ctx = {},
width = vim.api.nvim_win_get_width(0),
})

tabs.init()
end)

after_each(function()
tabs.cleanup()

vim.go.showtabline = 1
end)

it("works", function()
vim.api.nvim_buf_set_name(tabs[1].wins[1].bufnr, "WIN:A")
vim.api.nvim_buf_set_name(tabs[1].wins.new().bufnr, "WIN:B")

bar:add_item(winlist.wins({}))

t.eq(
bar:generate(ctx),
table.concat({
"%#bg_0a0b10_fg_c4c6cd_#",
"%1@v:lua.nougat_core_click_handler@WIN:B%T",
"%#bg_0a0b10_fg_c4c6cd_#",
"%#bg_0a0b10_fg_c4c6cd_b#",
"%2@v:lua.nougat_core_click_handler@WIN:A%T",
"%#bg_0a0b10_fg_c4c6cd_#",
}, "")
)
end)

it("handles win move", function()
vim.api.nvim_buf_set_name(tabs[1].wins[1].bufnr, "WIN:A")
vim.api.nvim_buf_set_name(tabs[1].wins.new().bufnr, "WIN:B")

vim.api.nvim_set_current_win(ctx.winid)

bar:add_item(winlist.wins({
active_item = {
hl = { bg = "black", fg = "blue" },
prefix = " ",
suffix = " ",
content = {
winlist.label({}),
},
},
inactive_item = {
hl = { bg = "gray", fg = "black" },
prefix = " ",
suffix = " ",
content = {
winlist.label({}),
},
},
}))

t.eq(
bar:generate(ctx),
table.concat({
"%#bg_gray_fg_black_#",
" ",
"%1@v:lua.nougat_core_click_handler@WIN:B%T",
" ",
"%#bg_0a0b10_fg_c4c6cd_#",
"%#bg_black_fg_blue_#",
" ",
"%2@v:lua.nougat_core_click_handler@WIN:A%T",
" ",
"%#bg_0a0b10_fg_c4c6cd_#",
}, "")
)

t.feedkeys("<C-W>K", "x")

t.eq(
bar:generate(ctx),
table.concat({
"%#bg_black_fg_blue_#",
" ",
"%2@v:lua.nougat_core_click_handler@WIN:A%T",
" ",
"%#bg_0a0b10_fg_c4c6cd_#",
"%#bg_gray_fg_black_#",
" ",
"%1@v:lua.nougat_core_click_handler@WIN:B%T",
" ",
"%#bg_0a0b10_fg_c4c6cd_#",
}, "")
)
end)

describe("label", function()
it("on_click", function()
vim.api.nvim_buf_set_name(tabs[1].wins[1].bufnr, "WIN:A")
vim.api.nvim_buf_set_name(tabs[1].wins.new().bufnr, "WIN:B")

vim.api.nvim_set_current_win(ctx.winid)

bar:add_item(winlist.wins({}))

t.eq(
bar:generate(ctx),
table.concat({
"%#bg_0a0b10_fg_c4c6cd_#",
"%1@v:lua.nougat_core_click_handler@WIN:B%T",
"%#bg_0a0b10_fg_c4c6cd_#",
"%#bg_0a0b10_fg_c4c6cd_b#",
"%2@v:lua.nougat_core_click_handler@WIN:A%T",
"%#bg_0a0b10_fg_c4c6cd_#",
}, "")
)

local click_fn, fn_id = t.get_click_fn(bar:generate(ctx), "WIN:B")
click_fn(fn_id, 1, "l", "")

t.eq(vim.api.nvim_get_current_win(), tabs[1].wins[2].winid)
end)
end)

describe("w/ tablist", function()
local tablist = {
tabs = require("nougat.nut.tab.tablist").create,
number = require("nougat.nut.tab.tablist.number").create,
win_count = require("nougat.nut.tab.tablist.win_count").create,
}

it("works", function()
vim.api.nvim_buf_set_name(tabs[1].wins[1].bufnr, "WIN:A")
vim.api.nvim_buf_set_name(tabs[1].wins.new().bufnr, "WIN:B")

vim.api.nvim_buf_set_name(tabs.add().wins[1].bufnr, "WIN:X")
vim.api.nvim_buf_set_name(tabs[2].wins.new().bufnr, "WIN:Y")

vim.api.nvim_set_current_win(ctx.winid)

bar:add_item(tablist.tabs({
active_tab = {
content = {
tablist.number({}),
winlist.wins({}),
},
},
inactive_tab = {
content = {
tablist.number({}),
tablist.win_count({ prefix = "(", suffix = ")" }),
winlist.wins({}),
},
},
}))

vim.api.nvim_set_current_win(ctx.winid)

bar:generate(ctx)

t.eq(
bar:generate(ctx),
table.concat({
"%#bg_0a0b10_fg_c4c6cd_b#",
"%1T1%T",
"%#bg_0a0b10_fg_c4c6cd_#",
"%1@v:lua.nougat_core_click_handler@WIN:B%T",
"%#bg_0a0b10_fg_c4c6cd_#",
"%#bg_0a0b10_fg_c4c6cd_b#",
"%2@v:lua.nougat_core_click_handler@WIN:A%T",
"%#bg_0a0b10_fg_c4c6cd_#",
"%#bg_0a0b10_fg_c4c6cd_#",
"%#bg_0a0b10_fg_c4c6cd_#",
"%2T2%T",
"(2)",
"%#bg_0a0b10_fg_c4c6cd_#",
"%3@v:lua.nougat_core_click_handler@WIN:Y%T",
"%#bg_0a0b10_fg_c4c6cd_#",
"%#bg_0a0b10_fg_c4c6cd_#",
"%4@v:lua.nougat_core_click_handler@WIN:X%T",
"%#bg_0a0b10_fg_c4c6cd_#",
"%#bg_0a0b10_fg_c4c6cd_#",
}, "")
)

local click_fn, fn_id = t.get_click_fn(bar:generate(ctx), "WIN:Y")
click_fn(fn_id, 1, "l", "")

t.eq(vim.api.nvim_get_current_win(), tabs[2].wins[2].winid)
t.eq(vim.api.nvim_get_current_tabpage(), tabs[2].tabid)
end)
end)
end)
Loading

0 comments on commit 093cd59

Please sign in to comment.