73 lines
1.2 KiB
Lua
73 lines
1.2 KiB
Lua
local json = require("json")
|
|
local lunit = require("lunit")
|
|
|
|
module("lunit-encoding", lunit.testcase, package.seeall)
|
|
|
|
function test_cloned_array_sibling()
|
|
local obj = {}
|
|
assert_pass(function()
|
|
json.encode({obj, obj})
|
|
end)
|
|
end
|
|
|
|
function test_cloned_object_sibling()
|
|
local obj = {}
|
|
assert_pass(function()
|
|
json.encode({x = obj, y = obj})
|
|
end)
|
|
end
|
|
|
|
function test_cloned_array_deep_sibling()
|
|
local obj = {}
|
|
assert_pass(function()
|
|
json.encode({
|
|
{obj}, {obj}
|
|
})
|
|
end)
|
|
end
|
|
|
|
function test_cloned_array_multilevel_sibling()
|
|
local obj = {}
|
|
assert_pass(function()
|
|
json.encode({
|
|
{obj, {obj}}
|
|
})
|
|
end)
|
|
end
|
|
|
|
function test_recursive_object()
|
|
local obj = {}
|
|
obj.x = obj
|
|
assert_error(function()
|
|
json.encode(obj)
|
|
end)
|
|
end
|
|
|
|
function test_recursive_array()
|
|
local obj = {}
|
|
obj[1] = obj
|
|
assert_error(function()
|
|
json.encode(obj)
|
|
end)
|
|
end
|
|
|
|
function test_custom_encode()
|
|
local obj = { x = "y" }
|
|
local sawX
|
|
local function preProcessor(value, isObjectKey)
|
|
if value == "x" then
|
|
sawX = true
|
|
assert_true(isObjectKey)
|
|
else
|
|
assert_false(isObjectKey)
|
|
end
|
|
return value
|
|
end
|
|
local encoder = json.encode.getEncoder({
|
|
preProcess = preProcessor
|
|
})
|
|
assert_nil(sawX)
|
|
encoder(obj)
|
|
assert_true(sawX)
|
|
end
|