mirror of
https://github.com/stevearc/aerial.nvim
synced 2024-09-16 14:34:08 +02:00
test: add tests for prev/next/prev_up/next_up
This commit is contained in:
parent
c222e5abb5
commit
e76aec1fc2
2 changed files with 123 additions and 62 deletions
|
@ -2,6 +2,7 @@ require("plenary.async").tests.add_to_env()
|
|||
local aerial = require("aerial")
|
||||
local backends = require("aerial.backends")
|
||||
local test_util = require("tests.test_util")
|
||||
local window = require("aerial.window")
|
||||
|
||||
local markdown_content = [[
|
||||
# First symbol
|
||||
|
@ -11,10 +12,22 @@ local markdown_content = [[
|
|||
# Third symbol
|
||||
]]
|
||||
|
||||
local function create_md_buf()
|
||||
local markdown_nested_content = [[
|
||||
# One
|
||||
|
||||
## One.A
|
||||
|
||||
## One.B
|
||||
|
||||
# Two
|
||||
|
||||
## Two.A
|
||||
]]
|
||||
|
||||
local function create_md_buf(content)
|
||||
local bufnr = vim.api.nvim_create_buf(false, true)
|
||||
vim.bo[bufnr].bufhidden = "wipe"
|
||||
vim.api.nvim_buf_set_lines(bufnr, 0, -1, true, vim.split(markdown_content, "\n"))
|
||||
vim.api.nvim_buf_set_lines(bufnr, 0, -1, true, vim.split(content, "\n"))
|
||||
vim.api.nvim_set_current_buf(bufnr)
|
||||
vim.bo[bufnr].modified = false
|
||||
vim.bo[bufnr].filetype = "markdown"
|
||||
|
@ -34,69 +47,119 @@ a.describe("navigation", function()
|
|||
test_util.reset_editor()
|
||||
end)
|
||||
|
||||
a.it("select jumps to location", function()
|
||||
create_md_buf()
|
||||
vim.api.nvim_win_set_cursor(0, { 1, 0 })
|
||||
aerial.select({ index = 2 })
|
||||
local cursor = vim.api.nvim_win_get_cursor(0)
|
||||
assert.are.same({ 3, 0 }, cursor)
|
||||
a.describe("select", function()
|
||||
a.it("select jumps to location", function()
|
||||
create_md_buf(markdown_content)
|
||||
vim.api.nvim_win_set_cursor(0, { 1, 0 })
|
||||
aerial.select({ index = 2 })
|
||||
local cursor = vim.api.nvim_win_get_cursor(0)
|
||||
assert.are.same({ 3, 0 }, cursor)
|
||||
end)
|
||||
|
||||
a.it("in aerial window jumps to location", function()
|
||||
create_md_buf(markdown_content)
|
||||
vim.api.nvim_win_set_cursor(0, { 1, 0 })
|
||||
aerial.toggle()
|
||||
assert.equals("aerial", vim.bo.filetype)
|
||||
aerial.select({ index = 2 })
|
||||
local cursor = vim.api.nvim_win_get_cursor(0)
|
||||
assert.are.same({ 3, 0 }, cursor)
|
||||
end)
|
||||
|
||||
a.it("in aerial window uses cursor position as index", function()
|
||||
create_md_buf(markdown_content)
|
||||
vim.api.nvim_win_set_cursor(0, { 1, 0 })
|
||||
aerial.toggle()
|
||||
a.util.sleep(10) -- let the aerial window render
|
||||
assert.equals("aerial", vim.bo.filetype)
|
||||
vim.api.nvim_win_set_cursor(0, { 3, 0 })
|
||||
aerial.select()
|
||||
local cursor = vim.api.nvim_win_get_cursor(0)
|
||||
assert.are.same({ 5, 0 }, cursor)
|
||||
end)
|
||||
|
||||
a.it("doesn't have to jump", function()
|
||||
create_md_buf(markdown_content)
|
||||
vim.api.nvim_win_set_cursor(0, { 1, 0 })
|
||||
local winid = vim.api.nvim_get_current_win()
|
||||
aerial.toggle()
|
||||
a.util.sleep(10) -- let the aerial window render
|
||||
assert.equals("aerial", vim.bo.filetype)
|
||||
vim.api.nvim_win_set_cursor(0, { 3, 0 })
|
||||
aerial.select({ jump = false })
|
||||
|
||||
-- We should still be in the aerial window
|
||||
assert.equals("aerial", vim.bo.filetype)
|
||||
-- The source window cursor should be updated
|
||||
local cursor = vim.api.nvim_win_get_cursor(winid)
|
||||
assert.are.same({ 5, 0 }, cursor)
|
||||
end)
|
||||
|
||||
a.it("can open a new split when jumping", function()
|
||||
create_md_buf(markdown_content)
|
||||
vim.api.nvim_win_set_cursor(0, { 1, 0 })
|
||||
local winid = vim.api.nvim_get_current_win()
|
||||
aerial.toggle()
|
||||
a.util.sleep(10) -- let the aerial window render
|
||||
assert.equals("aerial", vim.bo.filetype)
|
||||
vim.api.nvim_win_set_cursor(0, { 3, 0 })
|
||||
aerial.select({ split = "v" })
|
||||
|
||||
assert.is_not.equals(winid, vim.api.nvim_get_current_win())
|
||||
assert.equals(3, #vim.api.nvim_tabpage_list_wins(0))
|
||||
|
||||
-- Source window cursor should be the same
|
||||
assert.are.same({ 1, 0 }, vim.api.nvim_win_get_cursor(winid))
|
||||
-- Split window cursor should be updated
|
||||
assert.are.same({ 5, 0 }, vim.api.nvim_win_get_cursor(0))
|
||||
end)
|
||||
end)
|
||||
|
||||
a.it("select in aerial window jumps to location", function()
|
||||
create_md_buf()
|
||||
vim.api.nvim_win_set_cursor(0, { 1, 0 })
|
||||
aerial.toggle()
|
||||
assert.equals("aerial", vim.bo.filetype)
|
||||
aerial.select({ index = 2 })
|
||||
local cursor = vim.api.nvim_win_get_cursor(0)
|
||||
assert.are.same({ 3, 0 }, cursor)
|
||||
end)
|
||||
a.describe("movement", function()
|
||||
a.it("can go to next symbol", function()
|
||||
create_md_buf(markdown_nested_content)
|
||||
vim.api.nvim_win_set_cursor(0, { 1, 0 })
|
||||
aerial.next()
|
||||
assert.are.same({ 3, 0 }, vim.api.nvim_win_get_cursor(0))
|
||||
end)
|
||||
|
||||
a.it("select in aerial window uses cursor position as index", function()
|
||||
create_md_buf()
|
||||
vim.api.nvim_win_set_cursor(0, { 1, 0 })
|
||||
aerial.toggle()
|
||||
a.util.sleep(10) -- let the aerial window render
|
||||
assert.equals("aerial", vim.bo.filetype)
|
||||
vim.api.nvim_win_set_cursor(0, { 3, 0 })
|
||||
aerial.select()
|
||||
local cursor = vim.api.nvim_win_get_cursor(0)
|
||||
assert.are.same({ 5, 0 }, cursor)
|
||||
end)
|
||||
a.it("can go to next N symbol", function()
|
||||
create_md_buf(markdown_nested_content)
|
||||
vim.api.nvim_win_set_cursor(0, { 1, 0 })
|
||||
aerial.next(2)
|
||||
assert.are.same({ 5, 0 }, vim.api.nvim_win_get_cursor(0))
|
||||
end)
|
||||
|
||||
a.it("can select without jumping", function()
|
||||
create_md_buf()
|
||||
vim.api.nvim_win_set_cursor(0, { 1, 0 })
|
||||
local winid = vim.api.nvim_get_current_win()
|
||||
aerial.toggle()
|
||||
a.util.sleep(10) -- let the aerial window render
|
||||
assert.equals("aerial", vim.bo.filetype)
|
||||
vim.api.nvim_win_set_cursor(0, { 3, 0 })
|
||||
aerial.select({ jump = false })
|
||||
a.it("can go to prev symbol", function()
|
||||
create_md_buf(markdown_nested_content)
|
||||
vim.api.nvim_win_set_cursor(0, { 3, 0 })
|
||||
window.update_position(0, 0) -- Not sure why the CursorMoved autocmd doesn't fire
|
||||
aerial.prev()
|
||||
assert.are.same({ 1, 0 }, vim.api.nvim_win_get_cursor(0))
|
||||
end)
|
||||
|
||||
-- We should still be in the aerial window
|
||||
assert.equals("aerial", vim.bo.filetype)
|
||||
-- The source window cursor should be updated
|
||||
local cursor = vim.api.nvim_win_get_cursor(winid)
|
||||
assert.are.same({ 5, 0 }, cursor)
|
||||
end)
|
||||
a.it("can go to prev N symbol", function()
|
||||
create_md_buf(markdown_nested_content)
|
||||
vim.api.nvim_win_set_cursor(0, { 5, 0 })
|
||||
window.update_position(0, 0) -- Not sure why the CursorMoved autocmd doesn't fire
|
||||
aerial.prev(2)
|
||||
assert.are.same({ 1, 0 }, vim.api.nvim_win_get_cursor(0))
|
||||
end)
|
||||
|
||||
a.it("can open a new split when jumping", function()
|
||||
create_md_buf()
|
||||
vim.api.nvim_win_set_cursor(0, { 1, 0 })
|
||||
local winid = vim.api.nvim_get_current_win()
|
||||
aerial.toggle()
|
||||
a.util.sleep(10) -- let the aerial window render
|
||||
assert.equals("aerial", vim.bo.filetype)
|
||||
vim.api.nvim_win_set_cursor(0, { 3, 0 })
|
||||
aerial.select({ split = "v" })
|
||||
a.it("can go up and backwards in the tree", function()
|
||||
create_md_buf(markdown_nested_content)
|
||||
vim.api.nvim_win_set_cursor(0, { 5, 0 })
|
||||
window.update_position(0, 0) -- Not sure why the CursorMoved autocmd doesn't fire
|
||||
aerial.prev_up()
|
||||
assert.are.same({ 1, 0 }, vim.api.nvim_win_get_cursor(0))
|
||||
end)
|
||||
|
||||
assert.is_not.equals(winid, vim.api.nvim_get_current_win())
|
||||
assert.equals(3, #vim.api.nvim_tabpage_list_wins(0))
|
||||
|
||||
-- Source window cursor should be the same
|
||||
assert.are.same({ 1, 0 }, vim.api.nvim_win_get_cursor(winid))
|
||||
-- Split window cursor should be updated
|
||||
assert.are.same({ 5, 0 }, vim.api.nvim_win_get_cursor(0))
|
||||
a.it("can go up and forwards in the tree", function()
|
||||
create_md_buf(markdown_nested_content)
|
||||
vim.api.nvim_win_set_cursor(0, { 3, 0 })
|
||||
window.update_position(0, 0) -- Not sure why the CursorMoved autocmd doesn't fire
|
||||
aerial.next_up()
|
||||
assert.are.same({ 7, 0 }, vim.api.nvim_win_get_cursor(0))
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
|
|
|
@ -100,9 +100,7 @@ M.reset_editor = function()
|
|||
vim.api.nvim_win_set_buf(0, vim.api.nvim_create_buf(false, true))
|
||||
vim.bo.bufhidden = "wipe"
|
||||
for _, bufnr in ipairs(vim.api.nvim_list_bufs()) do
|
||||
if vim.api.nvim_buf_get_option(bufnr, "buflisted") then
|
||||
vim.api.nvim_buf_delete(bufnr, { force = true })
|
||||
end
|
||||
vim.api.nvim_buf_delete(bufnr, { force = true })
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue