1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-02-04 03:40:05 +08:00
SpaceVim/bundle/plenary.nvim/tests/plenary/async/deque_spec.lua

92 lines
1.4 KiB
Lua
Raw Normal View History

2022-05-16 22:20:10 +08:00
local Deque = require("plenary.async.structs").Deque
local eq = assert.are.same
-- just a helper to create the test deque
local function new_deque()
local deque = Deque.new()
eq(deque:len(), 0)
deque:pushleft(1)
eq(deque:len(), 1)
deque:pushleft(2)
eq(deque:len(), 2)
deque:pushright(3)
eq(deque:len(), 3)
deque:pushright(4)
eq(deque:len(), 4)
deque:pushright(5)
eq(deque:len(), 5)
return deque
end
describe("deque", function()
it("should allow pushing and popping and finding len", function()
new_deque()
end)
it("should be able to iterate from left", function()
local deque = new_deque()
local iter = deque:ipairs_left()
local i, v = iter()
eq(i, -2)
eq(v, 2)
i, v = iter()
eq(i, -1)
eq(v, 1)
i, v = iter()
eq(i, 0)
eq(v, 3)
i, v = iter()
eq(i, 1)
eq(v, 4)
i, v = iter()
eq(i, 2)
eq(v, 5)
end)
it("should be able to iterate from right", function()
local deque = new_deque()
local iter = deque:ipairs_right()
local i, v = iter()
eq(i, 2)
eq(v, 5)
i, v = iter()
eq(i, 1)
eq(v, 4)
i, v = iter()
eq(i, 0)
eq(v, 3)
i, v = iter()
eq(i, -1)
eq(v, 1)
i, v = iter()
eq(i, -2)
eq(v, 2)
end)
it("should allow clearing", function()
local deque = new_deque()
deque:clear()
assert(deque:is_empty())
end)
end)