2017-03-08 21:18:33 +01:00
|
|
|
|
|
|
|
local gtable = require("gears.table")
|
|
|
|
|
|
|
|
describe("gears.table", function()
|
2021-03-22 20:05:17 +01:00
|
|
|
it("table.keys", function()
|
|
|
|
local t = { 1, a = 2, 3 }
|
|
|
|
assert.is.same(gtable.keys(t), { 1, 2, "a" })
|
|
|
|
end)
|
|
|
|
|
2021-03-22 20:21:15 +01:00
|
|
|
describe("gears.table.count_keys", function()
|
|
|
|
it("counts keys in an empty table", function()
|
|
|
|
local t = {}
|
|
|
|
assert.is.same(gtable.count_keys(t), 0)
|
|
|
|
end)
|
|
|
|
|
|
|
|
it("counts keys in a sparse array", function()
|
|
|
|
local t = { 1, nil, 3 }
|
|
|
|
assert.is.same(gtable.count_keys(t), 2)
|
|
|
|
end)
|
|
|
|
|
|
|
|
it("counts keys in a regular array", function()
|
|
|
|
local t = { 1, 2, 3 }
|
|
|
|
assert.is.same(gtable.count_keys(t), 3)
|
|
|
|
end)
|
|
|
|
|
|
|
|
it("counts keys in a hash table", function()
|
|
|
|
local t = { a = 1, b = "2", c = true }
|
|
|
|
assert.is.same(gtable.count_keys(t), 3)
|
|
|
|
end)
|
|
|
|
|
|
|
|
it("counts keys in a mixed table", function()
|
|
|
|
local t = { 1, a = 2, nil, 4 }
|
|
|
|
assert.is.same(gtable.count_keys(t), 3)
|
|
|
|
end)
|
|
|
|
|
|
|
|
end)
|
|
|
|
|
2017-03-08 21:18:33 +01:00
|
|
|
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)
|
2018-10-16 16:17:45 +02:00
|
|
|
|
2019-12-13 07:10:10 +01:00
|
|
|
|
|
|
|
describe("table.cycle_value", function()
|
|
|
|
it("nil argument", function()
|
|
|
|
local t = { "a", "b", "c", "d" }
|
|
|
|
local f = gtable.cycle_value(t, "a")
|
|
|
|
assert.is.same(f, "b")
|
|
|
|
end)
|
|
|
|
it("with step size", function()
|
|
|
|
local t = { "a", "b", "c", "d" }
|
|
|
|
local f = gtable.cycle_value(t, "a", 2)
|
|
|
|
assert.is.same(f, "c")
|
|
|
|
end)
|
|
|
|
it("b filter", function()
|
|
|
|
local t = { "a", "b", "c", "d" }
|
|
|
|
local f = gtable.cycle_value(t, "a", 1, function(i) return i == "b" end)
|
|
|
|
assert.is.equal(f, "b")
|
|
|
|
end)
|
|
|
|
it("e filter", function()
|
|
|
|
local t = { "a", "b", "c", "d" }
|
|
|
|
local f = gtable.cycle_value(t, "a", 1, function(i) return i == "e" end)
|
|
|
|
assert.is.equal(f, nil)
|
|
|
|
end)
|
|
|
|
it("b filter and step size", function()
|
|
|
|
local t = { "a", "b", "c", "d" }
|
|
|
|
local f = gtable.cycle_value(t, "b", 2, function(i) return i == "b" end)
|
|
|
|
assert.is.equal(f, nil)
|
|
|
|
end)
|
|
|
|
end)
|
|
|
|
|
2019-11-25 04:38:54 +01:00
|
|
|
describe("table.find_keys", function()
|
|
|
|
it("nil argument", function()
|
|
|
|
local t = { "a", "b", c = "c", "d" }
|
|
|
|
local f = gtable.find_keys(t, function(k) return k == "c" end)
|
|
|
|
assert.is.same(f, {"c"})
|
|
|
|
end)
|
|
|
|
end)
|
|
|
|
|
|
|
|
describe("table.hasitem", function()
|
|
|
|
it("exist", function()
|
|
|
|
local t = {"a", "b", c = "c"}
|
|
|
|
local f = gtable.hasitem(t, "c")
|
|
|
|
assert.is.equal(f, "c")
|
|
|
|
end)
|
|
|
|
it("nil", function()
|
|
|
|
local t = {"a", "b"}
|
|
|
|
local f = gtable.hasitem(t, "c")
|
|
|
|
assert.is.equal(f, nil)
|
|
|
|
end)
|
|
|
|
end)
|
|
|
|
|
2018-10-16 16:17:45 +02:00
|
|
|
describe("table.join", function()
|
|
|
|
it("nil argument", function()
|
|
|
|
local t = gtable.join({"a"}, nil, {"b"})
|
|
|
|
assert.is.same(t, {"a", "b"})
|
|
|
|
end)
|
|
|
|
end)
|
2017-03-08 21:18:33 +01:00
|
|
|
end)
|
2021-03-22 20:22:12 +01:00
|
|
|
|
|
|
|
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80
|