266 lines
6.6 KiB
Lua
266 lines
6.6 KiB
Lua
-- Null
|
|
json = Json.Null ()
|
|
assert (json:is_null())
|
|
assert (json:parse() == nil)
|
|
assert (json:get_data() == "null")
|
|
assert (json:get_size() == 4)
|
|
assert (json:get_data() == json:to_string())
|
|
|
|
-- Boolean
|
|
json = Json.Boolean (true)
|
|
assert (json:is_boolean())
|
|
assert (json:parse())
|
|
assert (json:get_data() == "true")
|
|
assert (json:get_size() == 4)
|
|
assert (json:get_data() == json:to_string())
|
|
json = Json.Boolean (false)
|
|
assert (json:is_boolean())
|
|
assert (not json:parse())
|
|
assert (json:get_data() == "false")
|
|
assert (json:get_size() == 5)
|
|
assert (json:get_data() == json:to_string())
|
|
|
|
-- Int
|
|
json = Json.Int (3)
|
|
assert (json:is_int())
|
|
assert (json:parse() == 3)
|
|
assert (json:get_data() == "3")
|
|
assert (json:get_size() == 1)
|
|
assert (json:get_data() == json:to_string())
|
|
|
|
-- Float
|
|
json = Json.Float(3.14)
|
|
assert (json:is_float())
|
|
val = json:parse ()
|
|
assert (val > 3.13 and val < 3.15)
|
|
|
|
-- String
|
|
json = Json.String ("wireplumber")
|
|
assert (json:is_string())
|
|
assert (json:parse() == "wireplumber")
|
|
assert (json:get_data() == "\"wireplumber\"")
|
|
assert (json:get_size() == 13)
|
|
assert (json:get_data() == json:to_string())
|
|
|
|
-- Array
|
|
json = Json.Array { Json.Null (), Json.Null () }
|
|
assert (json:is_array())
|
|
val = json:parse ()
|
|
assert (val[1] == nil)
|
|
assert (val[2] == nil)
|
|
assert (json:get_data() == "[null, null]")
|
|
assert (json:get_size() == 12)
|
|
assert (json:get_data() == json:to_string())
|
|
|
|
json = Json.Array { true, false }
|
|
assert (json:is_array())
|
|
val = json:parse ()
|
|
assert (val[1])
|
|
assert (not val[2])
|
|
assert (json:get_data() == "[true, false]")
|
|
assert (json:get_size() == 13)
|
|
assert (json:get_data() == json:to_string())
|
|
|
|
json = Json.Array {1, 2, 3}
|
|
assert (json:is_array())
|
|
val = json:parse ()
|
|
assert (val[1] == 1)
|
|
assert (val[2] == 2)
|
|
assert (val[3] == 3)
|
|
assert (json:get_data() == "[1, 2, 3]")
|
|
assert (json:get_size() == 9)
|
|
assert (json:get_data() == json:to_string())
|
|
|
|
json = Json.Array {1.11, 2.22, 3.33}
|
|
assert (json:is_array())
|
|
val = json:parse ()
|
|
assert (val[1] > 1.10 and val[1] < 1.12)
|
|
assert (val[2] > 2.21 and val[2] < 2.23)
|
|
assert (val[3] > 3.32 and val[3] < 3.34)
|
|
|
|
json = Json.Array {"lua", "spa", "json"}
|
|
assert (json:is_array())
|
|
val = json:parse ()
|
|
assert (val[1] == "lua")
|
|
assert (val[2] == "spa")
|
|
assert (val[3] == "json")
|
|
assert (val[4] == nil)
|
|
assert (json:get_data() == "[\"lua\", \"spa\", \"json\"]")
|
|
assert (json:get_size() == 22)
|
|
assert (json:get_data() == json:to_string())
|
|
|
|
json = Json.Array {}
|
|
assert (json:is_array())
|
|
val = json:parse ()
|
|
assert (#val == 0)
|
|
assert (json:get_data() == "[]")
|
|
|
|
json = Json.Array {
|
|
Json.Array {
|
|
Json.Object {
|
|
key1 = 1
|
|
},
|
|
Json.Object {
|
|
key2 = 2
|
|
},
|
|
}
|
|
}
|
|
assert (json:is_array())
|
|
assert (json:get_data() == "[[{\"key1\":1}, {\"key2\":2}]]")
|
|
assert (json:get_data() == json:to_string())
|
|
val = json:parse ()
|
|
assert (val[1][1].key1 == 1)
|
|
assert (val[1][2].key2 == 2)
|
|
|
|
table = {}
|
|
table[1] = 1
|
|
table[2] = 2
|
|
table[3] = 3
|
|
table["4"] = 4
|
|
json = Json.Array (table)
|
|
assert (json:is_array())
|
|
val = json:parse ()
|
|
assert (val[1] == 1)
|
|
assert (val[2] == 2)
|
|
assert (val[3] == 3)
|
|
assert (val["4"] == nil)
|
|
|
|
-- Object
|
|
json = Json.Object {
|
|
key1 = Json.Null(),
|
|
key2 = true,
|
|
key3 = 3,
|
|
key4 = 4.44,
|
|
key5 = "foo",
|
|
key6 = Json.Array {5, 6, 7},
|
|
key7 = Json.Object {
|
|
key_nested1 = "nested",
|
|
key_nested2 = 8,
|
|
key_nested3 = Json.Array {false, true, false},
|
|
["Key with spaces and (special % characters)"] = 50.0,
|
|
}
|
|
}
|
|
assert (json:is_object())
|
|
val = json:parse ()
|
|
assert (val.key1 == nil)
|
|
assert (val.key2 == true)
|
|
assert (val.key3 == 3)
|
|
assert (val.key4 > 4.43 and val.key4 < 4.45)
|
|
assert (val.key5 == "foo")
|
|
assert (val.key6[1] == 5)
|
|
assert (val.key6[2] == 6)
|
|
assert (val.key6[3] == 7)
|
|
assert (val.key7.key_nested1 == "nested")
|
|
assert (val.key7.key_nested2 == 8)
|
|
assert (not val.key7.key_nested3[1])
|
|
assert (val.key7.key_nested3[2])
|
|
assert (not val.key7.key_nested3[3])
|
|
assert (val.key7["Key with spaces and (special % characters)"] == 50.0)
|
|
|
|
table = {}
|
|
table["1"] = 1
|
|
table["2"] = 2
|
|
table["3"] = 3
|
|
table[4] = 4
|
|
json = Json.Object (table)
|
|
assert (json:is_object())
|
|
val = json:parse ()
|
|
assert (val["1"] == 1)
|
|
assert (val["2"] == 2)
|
|
assert (val["3"] == 3)
|
|
assert (val[4] == nil)
|
|
|
|
json = Json.Object {}
|
|
assert (json:is_object())
|
|
val = json:parse ()
|
|
assert (#val == 0)
|
|
assert (val.key1 == nil)
|
|
assert (json:get_data() == "{}")
|
|
|
|
-- Raw
|
|
json = Json.Raw ("[\"foo\", \"bar\"]")
|
|
assert (json:is_array())
|
|
assert (json:get_data() == "[\"foo\", \"bar\"]")
|
|
assert (json:get_data() == json:to_string())
|
|
val = json:parse ()
|
|
assert (val[1] == "foo")
|
|
assert (val[2] == "bar")
|
|
|
|
json = Json.Raw ("[foo, bar]")
|
|
assert (json:is_array())
|
|
assert (json:get_data() == "[foo, bar]")
|
|
assert (json:get_data() == json:to_string())
|
|
val = json:parse ()
|
|
assert (val[1] == "foo")
|
|
assert (val[2] == "bar")
|
|
|
|
json = Json.Raw ("{\"name\": \"wireplumber\", \"version\": [0, 4, 7]}")
|
|
assert (json:is_object())
|
|
assert (json:get_data() == "{\"name\": \"wireplumber\", \"version\": [0, 4, 7]}")
|
|
assert (json:get_data() == json:to_string())
|
|
val = json:parse ()
|
|
assert (val.name == "wireplumber")
|
|
assert (val.version[1] == 0)
|
|
assert (val.version[2] == 4)
|
|
assert (val.version[3] == 7)
|
|
|
|
-- recursion limit
|
|
json = Json.Raw ("{ name = wireplumber, version = [0, 4, 15], args = { test = [0, 1] } }")
|
|
|
|
val = json:parse (0)
|
|
assert (type (val) == "string")
|
|
assert (val == "{ name = wireplumber, version = [0, 4, 15], args = { test = [0, 1] } }")
|
|
|
|
val = json:parse (1)
|
|
assert (type (val) == "table")
|
|
assert (val.name == "wireplumber")
|
|
assert (type (val.version) == "string")
|
|
assert (val.version == "[0, 4, 15]")
|
|
assert (type (val.args) == "string")
|
|
assert (val.args == "{ test = [0, 1] }")
|
|
|
|
val = json:parse(2)
|
|
assert (type (val) == "table")
|
|
assert (val.name == "wireplumber")
|
|
assert (type (val.version) == "table")
|
|
assert (val.version[1] == 0)
|
|
assert (val.version[2] == 4)
|
|
assert (val.version[3] == 15)
|
|
assert (type (val.args) == "table")
|
|
assert (val.args.test == "[0, 1]")
|
|
|
|
val = json:parse(3)
|
|
assert (type (val) == "table")
|
|
assert (val.name == "wireplumber")
|
|
assert (type (val.version) == "table")
|
|
assert (val.version[1] == 0)
|
|
assert (val.version[2] == 4)
|
|
assert (val.version[3] == 15)
|
|
assert (type (val.args) == "table")
|
|
assert (type (val.args.test) == "table")
|
|
assert (val.args.test[1] == 0)
|
|
assert (val.args.test[2] == 1)
|
|
|
|
json = Json.Array { "foo" }
|
|
json2 = Json.Array { "bar" }
|
|
json = json:merge(json2)
|
|
assert (json:is_array())
|
|
val = json:parse ()
|
|
assert (val[1] == "foo")
|
|
assert (val[2] == "bar")
|
|
|
|
table = {}
|
|
table["1"] = 1
|
|
table["2"] = 2
|
|
json = Json.Object (table)
|
|
table = {}
|
|
table["3"] = 3
|
|
table["4"] = 4
|
|
json2 = Json.Object (table)
|
|
json = json:merge(json2)
|
|
val = json:parse ()
|
|
assert (val["1"] == 1)
|
|
assert (val["2"] == 2)
|
|
assert (val["3"] == 3)
|
|
assert (val["4"] == 4)
|