luaforwindows/files/examples/luajson/lunit-encoding.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