From d75e1cb7f0418615e208f49c6209b7c144591f14 Mon Sep 17 00:00:00 2001 From: Mark Pulford Date: Sat, 7 May 2011 03:48:58 +0930 Subject: Add test to compare objects after decode/encode --- tests/common.lua | 31 +++++++++++++++++++++++++++++++ tests/test.lua | 12 +++++++++--- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/tests/common.lua b/tests/common.lua index e935032..219de3f 100644 --- a/tests/common.lua +++ b/tests/common.lua @@ -76,4 +76,35 @@ function benchmark(tests, iter, rep) return test_results end +function compare_values(val1, val2) + local type1 = type(val1) + local type2 = type(val2) + if type1 ~= type2 then + return false + end + if type1 ~= "table" then + return val1 == val2 + end + local val1_keys = {} + -- Note all the keys in val1 need to be checked + for k, _ in pairs(val1) do + check_keys[k] = true + end + for k, v in pairs(val2) do + if not check_keys[k] then + -- Key didn't exist in val1 + return false + end + if not compare_value(val1[k], val2[k]) then + return false + end + check_keys[k] = nil + end + for k, _ in pairs(check_keys) do + -- Not the same if any keys left to check + return false + end + return true +end + -- vi:ai et sw=4 ts=4: diff --git a/tests/test.lua b/tests/test.lua index 9424e8f..3c8c404 100755 --- a/tests/test.lua +++ b/tests/test.lua @@ -122,11 +122,17 @@ local ascii2 = json.decode(json.encode(ascii)) print("8bit clean encode/decode: " .. tostring(ascii1 ~= ascii2)) for i = 1, #arg do - print(arg[i] .. " enc->dec..") local obj1 = json.decode(file_load(arg[i])) local obj2 = json.decode(json.encode(obj1)) - -- obj_compare(obj_json1, obj_json2) - print(".. unimplemented") + if compare_values(obj, obj) then + print(arg[i] .. ": PASS") + else + print(arg[i] .. ": FAIL") + print("== obj1 ==") + dump_value(obj1) + print("== obj2 ==") + dump_value(obj2) + end end -- vi:ai et sw=4 ts=4: -- cgit v1.2.3-55-g6feb