You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
koreader/spec/unit/inputtext_spec.lua

58 lines
1.9 KiB
Lua

describe("InputText widget module", function()
local InputText
local equals
setup(function()
require("commonrequire")
InputText = require("ui/widget/inputtext")
-- thanks to https://stackoverflow.com/a/32660766/2470572
equals = function(o1, o2, ignore_mt)
if o1 == o2 then return true end
local o1Type = type(o1)
local o2Type = type(o2)
if o1Type ~= o2Type then return false end
if o1Type ~= 'table' then return false end
if not ignore_mt then
local mt1 = getmetatable(o1)
if mt1 and mt1.__eq then
--compare using built in method
return o1 == o2
end
end
local keySet = {}
for key1, value1 in pairs(o1) do
local value2 = o2[key1]
if value2 == nil or equals(value1, value2, ignore_mt) == false then
return false
end
keySet[key1] = true
end
for key2, _ in pairs(o2) do
if not keySet[key2] then return false end
end
return true
end
end)
describe("addChars()", function()
it("should add regular text", function()
InputText:initTextBox("")
InputText:addChars("a")
assert.is_true( equals({"a"}, InputText.charlist) )
InputText:addChars("aa")
assert.is_true( equals({"a", "a", "a"}, InputText.charlist) )
end)
it("should add unicode text", function()
InputText:initTextBox("")
InputText:addChars("Л")
assert.is_true( equals({"Л"}, InputText.charlist) )
InputText:addChars("Луа")
assert.is_true( equals({"Л", "Л", "у", "а"}, InputText.charlist) )
end)
end)
end)