aboutsummaryrefslogtreecommitdiffstats
path: root/tests/mason-core/functional/table_spec.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tests/mason-core/functional/table_spec.lua')
-rw-r--r--tests/mason-core/functional/table_spec.lua51
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/mason-core/functional/table_spec.lua b/tests/mason-core/functional/table_spec.lua
new file mode 100644
index 00000000..012c981c
--- /dev/null
+++ b/tests/mason-core/functional/table_spec.lua
@@ -0,0 +1,51 @@
+local _ = require "mason-core.functional"
+
+describe("functional: table", function()
+ it("retrieves property of table", function()
+ assert.equals("hello", _.prop("a", { a = "hello" }))
+ end)
+
+ it("picks properties of table", function()
+ local function fn() end
+ assert.same(
+ {
+ ["key1"] = 1,
+ [fn] = 2,
+ },
+ _.pick({ "key1", fn }, {
+ ["key1"] = 1,
+ [fn] = 2,
+ [3] = 3,
+ })
+ )
+ end)
+
+ it("converts table to pairs", function()
+ assert.same(
+ _.sort_by(_.nth(1), {
+ {
+ "skies",
+ "cloudy",
+ },
+ {
+ "temperature",
+ "20°",
+ },
+ }),
+ _.sort_by(_.nth(1), _.to_pairs { skies = "cloudy", temperature = "20°" })
+ )
+ end)
+
+ it("should invert tables", function()
+ assert.same(
+ {
+ val1 = "key1",
+ val2 = "key2",
+ },
+ _.invert {
+ key1 = "val1",
+ key2 = "val2",
+ }
+ )
+ end)
+end)