aboutsummaryrefslogtreecommitdiffstats
path: root/tests/core/functional
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2022-07-06 19:41:43 +0200
committerWilliam Boman <william@redwill.se>2022-07-07 00:39:59 +0200
commit5f634e0c37e723fc0c33e06b4fd5c2180178db40 (patch)
treefa4f09363adefa8259e23e4d1ea036db628b1243 /tests/core/functional
parentfeat(health): use stderr for java version, also check for JAVA_HOME (#765) (diff)
downloadmason-5f634e0c37e723fc0c33e06b4fd5c2180178db40.tar
mason-5f634e0c37e723fc0c33e06b4fd5c2180178db40.tar.gz
mason-5f634e0c37e723fc0c33e06b4fd5c2180178db40.tar.bz2
mason-5f634e0c37e723fc0c33e06b4fd5c2180178db40.tar.lz
mason-5f634e0c37e723fc0c33e06b4fd5c2180178db40.tar.xz
mason-5f634e0c37e723fc0c33e06b4fd5c2180178db40.tar.zst
mason-5f634e0c37e723fc0c33e06b4fd5c2180178db40.zip
mason.nvim
Diffstat (limited to 'tests/core/functional')
-rw-r--r--tests/core/functional/data_spec.lua2
-rw-r--r--tests/core/functional/function_spec.lua2
-rw-r--r--tests/core/functional/list_spec.lua70
-rw-r--r--tests/core/functional/logic_spec.lua16
-rw-r--r--tests/core/functional/number_spec.lua2
-rw-r--r--tests/core/functional/relation_spec.lua2
-rw-r--r--tests/core/functional/string_spec.lua19
-rw-r--r--tests/core/functional/table_spec.lua46
-rw-r--r--tests/core/functional/type_spec.lua2
9 files changed, 149 insertions, 12 deletions
diff --git a/tests/core/functional/data_spec.lua b/tests/core/functional/data_spec.lua
index b89176e2..cdc26809 100644
--- a/tests/core/functional/data_spec.lua
+++ b/tests/core/functional/data_spec.lua
@@ -1,4 +1,4 @@
-local _ = require "nvim-lsp-installer.core.functional"
+local _ = require "mason.core.functional"
describe("functional: data", function()
it("creates enums", function()
diff --git a/tests/core/functional/function_spec.lua b/tests/core/functional/function_spec.lua
index 4b9cbba6..21951dc3 100644
--- a/tests/core/functional/function_spec.lua
+++ b/tests/core/functional/function_spec.lua
@@ -1,6 +1,6 @@
local spy = require "luassert.spy"
local match = require "luassert.match"
-local _ = require "nvim-lsp-installer.core.functional"
+local _ = require "mason.core.functional"
describe("functional: function", function()
it("curries functions", function()
diff --git a/tests/core/functional/list_spec.lua b/tests/core/functional/list_spec.lua
index 21aa4e69..a03fee68 100644
--- a/tests/core/functional/list_spec.lua
+++ b/tests/core/functional/list_spec.lua
@@ -1,5 +1,6 @@
local spy = require "luassert.spy"
-local _ = require "nvim-lsp-installer.core.functional"
+local _ = require "mason.core.functional"
+local Optional = require "mason.core.optional"
describe("functional: list", function()
it("should produce list without nils", function()
@@ -41,6 +42,24 @@ describe("functional: list", function()
assert.same({ "BLUE", "YELLOW", "RED" }, colors)
end)
+ it("filter_map over list", function()
+ local colors = { "BROWN", "BLUE", "YELLOW", "GREEN", "CYAN" }
+ assert.same(
+ {
+ "BROWN EYES",
+ "BLUE EYES",
+ "GREEN EYES",
+ },
+ _.filter_map(function(color)
+ if _.any_pass({ _.equals "BROWN", _.equals "BLUE", _.equals "GREEN" }, color) then
+ return Optional.of(("%s EYES"):format(color))
+ else
+ return Optional.empty()
+ end
+ end, colors)
+ )
+ end)
+
it("finds first item that fulfills predicate", function()
local predicate = spy.new(function(item)
return item == "Waldo"
@@ -122,4 +141,53 @@ describe("functional: list", function()
assert.equals(1, _.length { "" })
assert.equals(4, _.length "fire")
end)
+
+ it("should sort by comparator", function()
+ local list = {
+ {
+ name = "William",
+ },
+ {
+ name = "Boman",
+ },
+ }
+ assert.same({
+ {
+ name = "Boman",
+ },
+ {
+ name = "William",
+ },
+ }, _.sort_by(_.prop "name", list))
+
+ -- Should not mutate original list
+ assert.same({
+ {
+ name = "William",
+ },
+ {
+ name = "Boman",
+ },
+ }, list)
+ end)
+
+ it("should append to list", function()
+ local list = { "Earth", "Wind" }
+ assert.same({ "Earth", "Wind", { "Fire" } }, _.append({ "Fire" }, list))
+
+ -- Does not mutate original list
+ assert.same({ "Earth", "Wind" }, list)
+ end)
+
+ it("should prepend to list", function()
+ local list = { "Fire" }
+ assert.same({ { "Earth", "Wind" }, "Fire" }, _.prepend({ "Earth", "Wind" }, list))
+
+ -- Does not mutate original list
+ assert.same({ "Fire" }, list)
+ end)
+
+ it("joins lists", function()
+ assert.equals("Hello, John", _.join(", ", { "Hello", "John" }))
+ end)
end)
diff --git a/tests/core/functional/logic_spec.lua b/tests/core/functional/logic_spec.lua
index 291d8979..073ca52c 100644
--- a/tests/core/functional/logic_spec.lua
+++ b/tests/core/functional/logic_spec.lua
@@ -1,16 +1,24 @@
local spy = require "luassert.spy"
-local _ = require "nvim-lsp-installer.core.functional"
+local _ = require "mason.core.functional"
describe("functional: logic", function()
it("should check that all_pass checks that all predicates pass", function()
- local is_waldo = function(i)
- return i == "waldo"
- end
+ local is_waldo = _.equals "waldo"
assert.is_true(_.all_pass { _.T, _.T, is_waldo, _.T } "waldo")
assert.is_false(_.all_pass { _.T, _.T, is_waldo, _.F } "waldo")
assert.is_false(_.all_pass { _.T, _.T, is_waldo, _.T } "waldina")
end)
+ it("should check that any_pass checks that any predicates pass", function()
+ local is_waldo = _.equals "waldo"
+ local is_waldina = _.equals "waldina"
+ local is_luigi = _.equals "luigi"
+
+ assert.is_true(_.any_pass { is_waldo, is_waldina } "waldo")
+ assert.is_false(_.any_pass { is_waldina, is_luigi } "waldo")
+ assert.is_true(_.any_pass { is_waldina, is_luigi } "waldina")
+ end)
+
it("should branch if_else", function()
local a = spy.new()
local b = spy.new()
diff --git a/tests/core/functional/number_spec.lua b/tests/core/functional/number_spec.lua
index 644547fb..f23156fe 100644
--- a/tests/core/functional/number_spec.lua
+++ b/tests/core/functional/number_spec.lua
@@ -1,4 +1,4 @@
-local _ = require "nvim-lsp-installer.core.functional"
+local _ = require "mason.core.functional"
describe("functional: number", function()
it("should negate numbers", function()
diff --git a/tests/core/functional/relation_spec.lua b/tests/core/functional/relation_spec.lua
index 41325cf2..4c92ffb5 100644
--- a/tests/core/functional/relation_spec.lua
+++ b/tests/core/functional/relation_spec.lua
@@ -1,4 +1,4 @@
-local _ = require "nvim-lsp-installer.core.functional"
+local _ = require "mason.core.functional"
describe("functional: relation", function()
it("should check equality", function()
diff --git a/tests/core/functional/string_spec.lua b/tests/core/functional/string_spec.lua
index cbee0617..4f9f4722 100644
--- a/tests/core/functional/string_spec.lua
+++ b/tests/core/functional/string_spec.lua
@@ -1,4 +1,4 @@
-local _ = require "nvim-lsp-installer.core.functional"
+local _ = require "mason.core.functional"
describe("functional: string", function()
it("matches string patterns", function()
@@ -23,4 +23,21 @@ describe("functional: string", function()
it("should gsub strings", function()
assert.same("predator", _.gsub("^apex%s*", "", "apex predator"))
end)
+
+ it("should dedent strings", function()
+ assert.equals(
+ [[Lorem
+Ipsum
+ Dolor
+ Sit
+ Amet]],
+ _.dedent [[
+ Lorem
+ Ipsum
+ Dolor
+ Sit
+ Amet
+]]
+ )
+ end)
end)
diff --git a/tests/core/functional/table_spec.lua b/tests/core/functional/table_spec.lua
index 25adff59..b10527f1 100644
--- a/tests/core/functional/table_spec.lua
+++ b/tests/core/functional/table_spec.lua
@@ -1,7 +1,51 @@
-local _ = require "nvim-lsp-installer.core.functional"
+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)
diff --git a/tests/core/functional/type_spec.lua b/tests/core/functional/type_spec.lua
index b99262b5..8e8068df 100644
--- a/tests/core/functional/type_spec.lua
+++ b/tests/core/functional/type_spec.lua
@@ -1,4 +1,4 @@
-local _ = require "nvim-lsp-installer.core.functional"
+local _ = require "mason.core.functional"
describe("functional: type", function()
it("should check nil value", function()