summaryrefslogtreecommitdiff
path: root/mac/.config/mpv/script-modules/utf8/test/util.lua
diff options
context:
space:
mode:
Diffstat (limited to 'mac/.config/mpv/script-modules/utf8/test/util.lua')
-rw-r--r--mac/.config/mpv/script-modules/utf8/test/util.lua75
1 files changed, 75 insertions, 0 deletions
diff --git a/mac/.config/mpv/script-modules/utf8/test/util.lua b/mac/.config/mpv/script-modules/utf8/test/util.lua
new file mode 100644
index 0000000..bdc25e5
--- /dev/null
+++ b/mac/.config/mpv/script-modules/utf8/test/util.lua
@@ -0,0 +1,75 @@
+require "test.strict"
+
+local function equals(t1, t2)
+ for k,v in pairs(t1) do
+ if t2[k] == nil then return false end
+ if type(t2[k]) == 'cdata' and type(v) == 'cdata' then
+ return true -- don't know how to compare
+ elseif type(t2[k]) == 'table' and type(v) == 'table' then
+ if not equals(t2[k], v) then return false end
+ else
+ if t2[k] ~= v then return false end
+ end
+ end
+ for k,v in pairs(t2) do
+ if t1[k] == nil then return false end
+ if type(t1[k]) == 'cdata' and type(v) == 'cdata' then
+ return true -- don't know how to compare
+ elseif type(t1[k]) == 'table' and type(v) == 'table' then
+ if not equals(t1[k], v) then return false end
+ else
+ if t1[k] ~= v then return false end
+ end
+ end
+ return true
+end
+
+local old_tostring = tostring
+local function tostring(v)
+ local type = type(v)
+ if type == 'table' then
+ local tbl = "{"
+ for k,v in pairs(v) do
+ tbl = tbl .. tostring(k) .. ' = ' .. tostring(v) .. ', '
+ end
+ return tbl .. '}'
+ else
+ return old_tostring(v)
+ end
+end
+
+local old_assert = assert
+local assert = function(cond, ...)
+ if not cond then
+ local data = {...}
+ local msg = ""
+ for _, v in pairs(data) do
+ local type = type(v)
+ if type == 'table' then
+ local tbl = "{"
+ for k,v in pairs(v) do
+ tbl = tbl .. tostring(k) .. ' = ' .. tostring(v) .. ', '
+ end
+ msg = msg .. tbl .. '}'
+ else
+ msg = msg .. tostring(v)
+ end
+ end
+ error(#data > 0 and msg or "assertion failed!")
+ end
+ return cond
+end
+
+local function assert_equals(a,b)
+ assert(
+ type(a) == 'table' and type(b) == 'table' and equals(a,b) or a == b,
+ "expected: ", a and a or tostring(a), "\n",
+ "got: ", b and b or tostring(b)
+ )
+end
+
+return {
+ equals = equals,
+ assert = assert,
+ assert_equals = assert_equals,
+}