mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-04 01:10:06 +08:00
92 lines
1.4 KiB
Lua
92 lines
1.4 KiB
Lua
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)
|