summaryrefslogtreecommitdiff
path: root/tests/modules/json/test.lua
blob: a09f0918ac1b223e0fbfcaaf1bd8c14a705c5539 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import("core.base.json")

local json_null = json.null
local json_pure_null = json.purenull

function json_decode(jsonstr)
    return json.decode(jsonstr)
end

function json_encode(luatable)
    return json.encode(luatable)
end

function json_pure_decode(jsonstr)
    return json.decode(jsonstr, {pure = true})
end

function json_pure_encode(luatable)
    return json.encode(luatable, {pure = true})
end

function test_json_decode(t)
    t:are_equal(json_decode('{}'), {})
    t:are_equal(json_decode('[]'), {})
    t:are_equal(json.is_marked_as_array(json_decode('[]')), true)
    t:are_equal(not json.is_marked_as_array(json_decode('{}')), true)
    t:are_equal(json_decode('{"a":1, "b":"2", "c":true, "d":false, "e":null, "f":[]}'), {a = 1, b = "2", c = true, d = false, e = json_null, f = {}})
    t:are_equal(json_decode('{"a":[], "b":[1,2], "c":{"a":1}}'), {a = {}, b = {1,2}, c = {a = 1}})
    t:are_equal(json_decode('[1,"2"]'), {1, "2"})
    t:are_equal(json_decode('[1,"2", {"a":1, "b":true}]'), {1, "2", {a = 1, b = true}})
    t:are_equal(json_decode('[1,0xa,0xdeadbeef, 0xffffffff,-1]'), {1, 0xa, 0xdeadbeef, 0xffffffff, -1})
end

function test_json_encode(t)
    t:are_equal(json_encode({}), '{}')
    t:are_equal(json_encode(json.mark_as_array({})), '[]')
    t:are_equal(json_encode({json_null, 1, "2", false, true}), '[null,1,"2",false,true]')
    t:are_equal(json_encode({1, "2", {a = 1}}), '[1,"2",{"a":1}]')
    t:are_equal(json_encode({1, "2", {b = true}}), '[1,"2",{"b":true}]')
    t:are_equal(json_encode(json.mark_as_array({1, 0xa, 0xdeadbeef, 0xffffffff, -1})), '[1,10,3735928559,4294967295,-1]')
end

function test_pure_json_decode(t)
    t:are_equal(json_pure_decode('{}'), {})
    t:are_equal(json_pure_decode('[]'), {})
    t:are_equal(json.is_marked_as_array(json_pure_decode('[]')), true)
    t:are_equal(not json.is_marked_as_array(json_pure_decode('{}')), true)
    t:are_equal(json_pure_decode('{"a":1, "b":"2", "c":true, "d":false, "e":null, "f":[]}'), {a = 1, b = "2", c = true, d = false, e = json_pure_null, f = {}})
    t:are_equal(json_pure_decode('{"a":[], "b":[1,2], "c":{"a":1}}'), {a = {}, b = {1,2}, c = {a = 1}})
    t:are_equal(json_pure_decode('[1,"2"]'), {1, "2"})
    t:are_equal(json_pure_decode('[1,"2", {"a":1, "b":true}]'), {1, "2", {a = 1, b = true}})
    t:are_equal(json_pure_decode('[1,0xa,0xdeadbeef, 0xffffffff,-1]'), {1, 0xa, 0xdeadbeef, 0xffffffff, -1})
end

function test_pure_json_encode(t)
    t:are_equal(json_pure_encode({}), '{}')
    t:are_equal(json_pure_encode(json.mark_as_array({})), '[]')
    t:are_equal(json_pure_encode({json_pure_null, 1, "2", false, true}), '[null,1,"2",false,true]')
    t:are_equal(json_pure_encode({1, "2", {a = 1}}), '[1,"2",{"a":1}]')
    t:are_equal(json_pure_encode({1, "2", {b = true}}), '[1,"2",{"b":true}]')
    t:are_equal(json_pure_encode(json.mark_as_array({1, 0xa, 0xdeadbeef, 0xffffffff, -1})), '[1,10,3735928559,4294967295,-1]')
end