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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
function AssertEquals(want, got)
if (want ~= got) then
error(
string.format("Assertion failed: wanted %q; got %q\n",
tostring(want), tostring(got)))
end
end
function AssertNull(got)
if got then
error(
string.format("Assertion failed: wanted null(ish); got %q\n",
tostring(got)))
end
end
function AssertNotNull(got)
if not got then
error(
string.format("Assertion failed: wanted not null(ish); got %q\n",
tostring(got)))
end
end
function AssertTableEquals(want, got)
local failed = false
if (#want ~= #got) then
failed = true
else
for k, v in ipairs(want) do
if (want[k] ~= got[k]) then
failed = true
break
end
end
end
if failed then
error(
string.format("Assertion failed: wanted %s; got %s\n",
TableToString(want), TableToString(got)))
end
end
local function TableEquals(want, got)
local wantkeys = {}
for k, v in pairs(want) do
wantkeys[k] = true
end
for k, v in pairs(got) do
if not wantkeys[k] then
return false
else
local wantv = want[k]
if (type(v) ~= type(wantv)) then
return false
elseif (v ~= wantv) then
if (type(v) ~= "table") then
return false
end
if not TableEquals(wantv, v) then
return false
end
end
wantkeys[k] = nil
end
end
if next(wantkeys) then
return false
end
return true
end
function AssertTableAndPropertiesEquals(want, got)
if not TableEquals(want, got) then
error(
string.format("Assertion failed: wanted %s; got %s\n",
TableToString(want), TableToString(got)))
end
end
function LoggingObject()
local object = {}
local result = {}
setmetatable(object, {
__index = function(self, k)
local log = (result[k] or {})
result[k] = log
return function(...)
table.insert(log, {...})
end
end
})
return object, result
end
function LoggingCallback()
local log = {}
local function cb(...)
table.insert(log, {...})
end
return cb, log
end
local hidemessages =
{
["Document upgraded"] = true
}
function AddAllowedMessage(m)
hidemessages[m] = true
end
function ModalMessage(s1, s2)
if not hidemessages[s1] then
print(s1)
print(s2)
end
end
local oldSaveGlobalSettings = SaveGlobalSettings
function SaveGlobalSettings(f)
if f then
return oldSaveGlobalSettings(f)
end
end
GlobalSettings.systemdictionary.filename = nil
return {}
|