diff options
| author | William Boman <william@redwill.se> | 2023-04-18 01:16:39 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-18 01:16:39 +0200 |
| commit | a0604613f5887ba14722d710e2b9290b3894e8db (patch) | |
| tree | 46995dde77d00b96b24dbfe4212583e2e745f02f /tests | |
| parent | feat: add require("mason").has_setup flag (#1226) (diff) | |
| download | mason-a0604613f5887ba14722d710e2b9290b3894e8db.tar mason-a0604613f5887ba14722d710e2b9290b3894e8db.tar.gz mason-a0604613f5887ba14722d710e2b9290b3894e8db.tar.bz2 mason-a0604613f5887ba14722d710e2b9290b3894e8db.tar.lz mason-a0604613f5887ba14722d710e2b9290b3894e8db.tar.xz mason-a0604613f5887ba14722d710e2b9290b3894e8db.tar.zst mason-a0604613f5887ba14722d710e2b9290b3894e8db.zip | |
refactor(expr): remove redundant core filters and always stringify reduced value (#1227)
The removed filters are not used by mason-registry and are too Lua-specific in nature.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/mason-core/functional/relation_spec.lua | 13 | ||||
| -rw-r--r-- | tests/mason-core/installer/registry/expr_spec.lua | 101 |
2 files changed, 114 insertions, 0 deletions
diff --git a/tests/mason-core/functional/relation_spec.lua b/tests/mason-core/functional/relation_spec.lua index a8207b55..8f60b7a6 100644 --- a/tests/mason-core/functional/relation_spec.lua +++ b/tests/mason-core/functional/relation_spec.lua @@ -14,6 +14,19 @@ describe("functional: relation", function() assert.is_false(is_42(32)) end) + it("should check non-equality", function() + local tbl = {} + local is_not_tbl = _.not_equals(tbl) + local is_not_a = _.not_equals "a" + local is_not_42 = _.not_equals(42) + + assert.is_false(is_not_tbl(tbl)) + assert.is_false(is_not_a "a") + assert.is_false(is_not_42(42)) + assert.is_true(is_not_a "b") + assert.is_true(is_not_42(32)) + end) + it("should check property equality", function() local fn_key = function() end local tbl = { a = "a", b = "b", number = 42, [fn_key] = "fun" } diff --git a/tests/mason-core/installer/registry/expr_spec.lua b/tests/mason-core/installer/registry/expr_spec.lua index a84500ce..f17e49ee 100644 --- a/tests/mason-core/installer/registry/expr_spec.lua +++ b/tests/mason-core/installer/registry/expr_spec.lua @@ -1,4 +1,5 @@ local Result = require "mason-core.result" +local _ = require "mason-core.functional" local expr = require "mason-core.installer.registry.expr" local match = require "luassert.match" @@ -27,6 +28,7 @@ describe("registry expressions", function() Result.success "Hello, JOHNDOE JR.!", expr.interpolate("Hello, {{greeting.firstname .. greeting.lastname .. tostring(tbl) | to_upper}}!", { greeting = { firstname = "John", lastname = "Doe" }, + tostring = tostring, tbl = setmetatable({}, { __tostring = function() return " Jr." @@ -48,6 +50,7 @@ describe("registry expressions", function() Result.success "Hello, MR. John!", expr.interpolate("Hello, {{prefix|to_upper}} {{ name | trim }}!", { prefix = "Mr.", + trim = _.trim, name = " John ", }) ) @@ -55,6 +58,8 @@ describe("registry expressions", function() assert.same( Result.success "Hello, Sir MR. John!", expr.interpolate("Hello, {{prefix|to_upper | format 'Sir %s'}} {{ name | trim }}!", { + format = _.format, + trim = _.trim, prefix = "Mr.", name = " John ", }) @@ -87,6 +92,102 @@ describe("registry expressions", function() end) end) +describe("expr filters :: equals/not_equals", function() + it("should equals", function() + assert.same( + Result.success "true", + expr.interpolate("{{equals('Hello, world!', value)}}", { + value = "Hello, world!", + }) + ) + + assert.same( + Result.success "true", + expr.interpolate("{{ value | equals('Hello, world!') }}", { + value = "Hello, world!", + }) + ) + + assert.same( + Result.success "false", + expr.interpolate("{{ value | equals('Hello, John!') }}", { + value = "Hello, world!", + }) + ) + end) + + it("should not equals", function() + assert.same( + Result.success "true", + expr.interpolate("{{not_equals('Hello, John!', value)}}", { + value = "Hello, world!", + }) + ) + + assert.same( + Result.success "true", + expr.interpolate("{{ value | not_equals('Hello, John!') }}", { + value = "Hello, world!", + }) + ) + + assert.same( + Result.success "false", + expr.interpolate("{{ value | not_equals('Hello, world!') }}", { + value = "Hello, world!", + }) + ) + end) +end) + +describe("expr filters :: take_if{_not}", function() + it("should take if value matches", function() + assert.same( + Result.success "Hello, world!", + expr.interpolate("Hello, {{ take_if(equals('world!'), value) }}", { + value = "world!", + }) + ) + + assert.same( + Result.success "Hello, world!", + expr.interpolate("Hello, {{ value | take_if(equals('world!')) }}", { + value = "world!", + }) + ) + + assert.same( + Result.success "", + expr.interpolate("{{ take_if(equals('Hello John!'), greeting) }}", { + greeting = "Hello World!", + }) + ) + end) + + it("should not take if value matches", function() + assert.same( + Result.success "Hello, world!", + expr.interpolate("Hello, {{ take_if_not(equals('John!'), value) }}", { + value = "world!", + }) + ) + + assert.same( + Result.success "Hello, world!", + expr.interpolate("Hello, {{ value | take_if_not(equals('john!')) }}", { + value = "world!", + }) + ) + + assert.same( + Result.success "", + expr.interpolate("{{ take_if_not(equals('Hello World!'), greeting) }}", { + greeting = "Hello World!", + }) + ) + end) +end) + describe("table interpolation", function() it("should interpolate nested values", function() assert.same( |
