1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-02-03 09:50:04 +08:00
SpaceVim/bundle/plenary.nvim/tests/plenary/py_list_spec.lua
2022-05-16 22:20:10 +08:00

61 lines
2.0 KiB
Lua

local List = require "plenary.collections.py_list"
local Iter = require "plenary.iterators"
describe("List", function()
it("should detect whether a value is an instance of List", function()
local l = List { 1, 2 }
local n = 42
assert(List.is_list(l))
assert(not List.is_list(n))
end)
it("should be equal if all elements are equal", function()
local l1 = List { 1, 2, 3 }
local l2 = List { 1, 2, 3 }
local l3 = List { 4, 5, 6 }
assert.are.equal(l1, l2)
assert.are_not.equal(l1, l3)
end)
it("can be concatenated to other list-like tables", function()
local l1 = List { 1, 2, 3 } .. { 4 }
assert.are.equal(l1, List { 1, 2, 3, 4 })
end)
it("can create a copy of itself with equal elements", function()
local l1 = List { 1, 2, 3 }
local l2 = l1:copy()
assert.are.equal(l1, l2)
end)
it("can create a slice between two indices", function()
local l1 = List { 1, 2, 3, 4 }
local l2 = l1:slice(2, 4)
assert.are.equal(l2, List { 2, 3, 4 })
end)
it("can reverse itself in place", function()
local l = List { 1, 2, 3, 4 }
l:reverse()
assert.are.equal(l, List { 4, 3, 2, 1 })
end)
it("can push elements to itself", function()
local l = List { 1, 2, 3 }
l:push(4)
assert.are.equal(l, List { 1, 2, 3, 4 })
end)
it("can pop the n-th element from itself (last one by default)", function()
local l = List { 1, 2, 3, 4 }
local n = l:pop()
assert.are.equal(l, List { 1, 2, 3 })
assert.are.equal(n, 4)
end)
it("can create a list from an iterable", function()
local l = List.from_iter(Iter.range(5, 10))
assert.are.equal(l, List { 5, 6, 7, 8, 9, 10 })
end)
it("can be partitioned based on a predicate", function()
local l = List.from_iter(Iter.range(1, 10))
local evens, odds = l:iter():partition(function(e)
return e % 2 == 0
end)
assert.are.equal(evens, List { 2, 4, 6, 8, 10 })
assert.are.equal(odds, List { 1, 3, 5, 7, 9 })
end)
end)