mirror of
https://github.com/sbrl/Minetest-WorldEditAdditions.git
synced 2024-12-04 21:13:50 +01:00
123 lines
3.5 KiB
Lua
123 lines
3.5 KiB
Lua
_G.worldeditadditions_core = {
|
|
split = require("worldeditadditions_core.utils.strings.split"),
|
|
table = {
|
|
contains = require("worldeditadditions_core.utils.table.table_contains")
|
|
}
|
|
}
|
|
local parse_map = require("worldeditadditions_core.utils.parse.map")
|
|
|
|
describe("parse.map", function()
|
|
it("should work with a single param", function()
|
|
local success, result = parse_map("apples yay")
|
|
assert.are.equal(true, success)
|
|
assert.are.same(
|
|
{ apples = "yay" },
|
|
result
|
|
)
|
|
end)
|
|
it("should work with 2 params", function()
|
|
local success, result = parse_map("apples yay oranges yummy")
|
|
assert.are.equal(true, success)
|
|
assert.are.same(
|
|
{ apples = "yay", oranges = "yummy" },
|
|
result
|
|
)
|
|
end)
|
|
it("should work with an int value", function()
|
|
local success, result = parse_map("apples 2")
|
|
assert.are.equal(true, success)
|
|
assert.are.same(
|
|
{ apples = 2 },
|
|
result
|
|
)
|
|
end)
|
|
it("should work with a float value", function()
|
|
local success, result = parse_map("apples 2.71")
|
|
assert.are.equal(true, success)
|
|
assert.are.same(
|
|
{ apples = 2.71 },
|
|
result
|
|
)
|
|
end)
|
|
it("should work with 2 int values", function()
|
|
local success, result = parse_map("apples 2 banana 23")
|
|
assert.are.equal(true, success)
|
|
assert.are.same(
|
|
{ apples = 2, banana = 23 },
|
|
result
|
|
)
|
|
end)
|
|
it("should work with mixed values", function()
|
|
local success, result = parse_map("apples 2 banana yummy")
|
|
assert.are.equal(true, success)
|
|
assert.are.same(
|
|
{ apples = 2, banana = "yummy" },
|
|
result
|
|
)
|
|
end)
|
|
it("should work with a value that starts as a number and ends as a string", function()
|
|
local success, result = parse_map("apples 20t banana yummy")
|
|
assert.are.equal(true, success)
|
|
assert.are.same(
|
|
{ apples = "20t", banana = "yummy" },
|
|
result
|
|
)
|
|
end)
|
|
it("should work with a value that starts as a string and ends as a number", function()
|
|
local success, result = parse_map("apples t20 banana yummy")
|
|
assert.are.equal(true, success)
|
|
assert.are.same(
|
|
{ apples = "t20", banana = "yummy" },
|
|
result
|
|
)
|
|
end)
|
|
it("should work with multiple spaces", function()
|
|
local success, result = parse_map("apples 2 banana \t yummy")
|
|
assert.are.equal(true, success)
|
|
assert.are.same(
|
|
{ apples = 2, banana = "yummy" },
|
|
result
|
|
)
|
|
end)
|
|
it("should ignore a hanging item at the end", function()
|
|
local success, result = parse_map("apples 2 banana")
|
|
assert.are.equal(true, success)
|
|
assert.are.same(
|
|
{ apples = 2 },
|
|
result
|
|
)
|
|
end)
|
|
it("should work with hanging items declared as keywords at the end", function()
|
|
local success, result = parse_map("apples 2 banana", { "banana" })
|
|
assert.are.equal(true, success)
|
|
assert.are.same(
|
|
{ apples = 2, banana = true },
|
|
result
|
|
)
|
|
end)
|
|
it("should work with hanging items declared as keywords in the middle", function()
|
|
local success, result = parse_map("apples 2 banana pear paris", { "banana" })
|
|
assert.are.equal(true, success)
|
|
assert.are.same(
|
|
{ apples = 2, banana = true, pear = "paris" },
|
|
result
|
|
)
|
|
end)
|
|
it("should work with some but not other hanging items declared as keywords", function()
|
|
local success, result = parse_map("apples 2 banana pear paris arrange", { "banana" })
|
|
assert.are.equal(true, success)
|
|
assert.are.same(
|
|
{ apples = 2, banana = true, pear = "paris" },
|
|
result
|
|
)
|
|
end)
|
|
it("should work with hanging items declared as keywords at the beginning", function()
|
|
local success, result = parse_map("banana apples 2 pear paris", { "banana" })
|
|
assert.are.equal(true, success)
|
|
assert.are.same(
|
|
{ apples = 2, banana = true, pear = "paris" },
|
|
result
|
|
)
|
|
end)
|
|
end)
|