45 lines
1.4 KiB
Lua
45 lines
1.4 KiB
Lua
|
|
||
|
local gtable = require("gears.table")
|
||
|
|
||
|
describe("gears.table", function()
|
||
|
it("table.keys_filter", function()
|
||
|
local t = { "a", 1, function() end, false}
|
||
|
assert.is.same(gtable.keys_filter(t, "number", "function"), { 2, 3 })
|
||
|
end)
|
||
|
|
||
|
it("table.reverse", function()
|
||
|
local t = { "a", "b", c = "c", "d" }
|
||
|
assert.is.same(gtable.reverse(t), { "d", "b", "a", c = "c" })
|
||
|
end)
|
||
|
|
||
|
describe("table.iterate", function()
|
||
|
it("no filter", function()
|
||
|
local t = { "a", "b", c = "c", "d" }
|
||
|
local f = gtable.iterate(t, function() return true end)
|
||
|
assert.is.equal(f(), "a")
|
||
|
assert.is.equal(f(), "b")
|
||
|
assert.is.equal(f(), "d")
|
||
|
assert.is.equal(f(), nil)
|
||
|
assert.is.equal(f(), nil)
|
||
|
end)
|
||
|
|
||
|
it("b filter", function()
|
||
|
local t = { "a", "b", c = "c", "d" }
|
||
|
local f = gtable.iterate(t, function(i) return i == "b" end)
|
||
|
assert.is.equal(f(), "b")
|
||
|
assert.is.equal(f(), nil)
|
||
|
assert.is.equal(f(), nil)
|
||
|
end)
|
||
|
|
||
|
it("with offset", function()
|
||
|
local t = { "a", "b", c = "c", "d" }
|
||
|
local f = gtable.iterate(t, function() return true end, 2)
|
||
|
assert.is.equal(f(), "b")
|
||
|
assert.is.equal(f(), "d")
|
||
|
assert.is.equal(f(), "a")
|
||
|
assert.is.equal(f(), nil)
|
||
|
assert.is.equal(f(), nil)
|
||
|
end)
|
||
|
end)
|
||
|
end)
|