prosody/spec/util_jsonpointer_spec.lua
Kim Alvefur 5bf6e7f501 util.jsonpointer: Improve tests
Result of mutation testing

Remaining mutants are mostly relating to the math.type() fallback.

Another case being that array[#array+1] == array[#array+2] and thus
doesn't matter.
2022-10-19 14:21:13 +02:00

40 lines
1.1 KiB
Lua

describe("util.jsonpointer", function()
local json, jp;
setup(function()
json = require "util.json";
jp = require "util.jsonpointer";
end)
describe("resolve()", function()
local example;
setup(function()
example = json.decode([[{
"foo": ["bar", "baz"],
"": 0,
"a/b": 1,
"c%d": 2,
"e^f": 3,
"g|h": 4,
"i\\j": 5,
"k\"l": 6,
" ": 7,
"m~n": 8
}]])
end)
it("works", function()
assert.is_nil(jp.resolve("string", "/string"))
assert.same(example, jp.resolve(example, ""));
assert.same({ "bar", "baz" }, jp.resolve(example, "/foo"));
assert.same("bar", jp.resolve(example, "/foo/0"));
assert.same(nil, jp.resolve(example, "/foo/-"));
assert.same(0, jp.resolve(example, "/"));
assert.same(1, jp.resolve(example, "/a~1b"));
assert.same(2, jp.resolve(example, "/c%d"));
assert.same(3, jp.resolve(example, "/e^f"));
assert.same(4, jp.resolve(example, "/g|h"));
assert.same(5, jp.resolve(example, "/i\\j"));
assert.same(6, jp.resolve(example, "/k\"l"));
assert.same(7, jp.resolve(example, "/ "));
assert.same(8, jp.resolve(example, "/m~0n"));
end)
end)
end)