diff options
Diffstat (limited to '')
| -rw-r--r-- | tests/common.lua | 31 |
1 files changed, 31 insertions, 0 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) | |||
| 76 | return test_results | 76 | return test_results |
| 77 | end | 77 | end |
| 78 | 78 | ||
| 79 | function compare_values(val1, val2) | ||
| 80 | local type1 = type(val1) | ||
| 81 | local type2 = type(val2) | ||
| 82 | if type1 ~= type2 then | ||
| 83 | return false | ||
| 84 | end | ||
| 85 | if type1 ~= "table" then | ||
| 86 | return val1 == val2 | ||
| 87 | end | ||
| 88 | local val1_keys = {} | ||
| 89 | -- Note all the keys in val1 need to be checked | ||
| 90 | for k, _ in pairs(val1) do | ||
| 91 | check_keys[k] = true | ||
| 92 | end | ||
| 93 | for k, v in pairs(val2) do | ||
| 94 | if not check_keys[k] then | ||
| 95 | -- Key didn't exist in val1 | ||
| 96 | return false | ||
| 97 | end | ||
| 98 | if not compare_value(val1[k], val2[k]) then | ||
| 99 | return false | ||
| 100 | end | ||
| 101 | check_keys[k] = nil | ||
| 102 | end | ||
| 103 | for k, _ in pairs(check_keys) do | ||
| 104 | -- Not the same if any keys left to check | ||
| 105 | return false | ||
| 106 | end | ||
| 107 | return true | ||
| 108 | end | ||
| 109 | |||
| 79 | -- vi:ai et sw=4 ts=4: | 110 | -- vi:ai et sw=4 ts=4: |
