local tests = require("Module:UnitTests")
local m = require("Module:User:Lunabunn/ko-pron")
local raw_swap = require("Module:User:Lunabunn/ko-translit").raw_swap
local ko_pron = require("Module:ko-pron")
function parse_arg(arg)
if not arg then return {} end
local parsed = {}
for e in mw.text.gsplit(arg, ",") do
e = tonumber(e)
if e then parsed = true end
end
return parsed
end
function tests:pron(text, params)
for k, v in pairs(params) do
params = tostring(v)
end
local expected = ko_pron.make({ = function () return {={
= text,
= params.l,
= params.com,
= params.nn,
= params.ui,
= params.uie,
= params.nobc,
= params.ni,
= params.bcred,
= params.svar,
= params.iot,
}} end })
_, _, expected = mw.ustring.find(expected, "<li class=\"ko%-pron__ph\">.-%")
expected = mw.ustring.gsub(expected, "%b<>", "")
params.l = parse_arg(params.l)
params.com = parse_arg(params.com)
params.nn = parse_arg((params.nn or "") .. "," .. (params.ni or ""))
mw.logObject(params.nn)
params.bcred = parse_arg(params.bcred)
params.nobc = tonumber(params.nobc)
local actual = m.pron(text, params)
return self:equals(text, actual, expected, {
show_difference = true,
})
end
function tests:ipa(text, params)
for k, v in pairs(params) do
params = tostring(v)
end
local expected = ko_pron.make({ = function () return {={
= text,
= params.l,
= params.com,
= params.nn,
= params.ui,
= params.uie,
= params.nobc,
= params.ni,
= params.bcred,
= params.svar,
= params.iot,
}} end })
_, _, expected = mw.ustring.find(expected, "<span class=\"IPA\">(.-)</span>")
params.l = parse_arg(params.l)
params.com = parse_arg(params.com)
params.nn = parse_arg((params.nn or "") .. "," .. (params.ni or ""))
params.bcred = parse_arg(params.bcred)
params.nobc = tonumber(params.nobc)
local actual = m.pron(text, params, true)
return self:equals(text, actual, expected, {
show_difference = true,
})
end
function tests:test_pron()
self:pron("법률학", {})
self:pron("음식값", {l=1})
self:pron("공산주의", {l=1, ui=4})
self:pron("고춧가루", {nobc=2})
self:pron("굵다랗다", {l=1})
self:pron("새해 복많이 받으세요", {})
self:pron("새해 복 많이 받으세요", {})
self:pron("한국", {l=1, cap=1})
self:pron("상사병", {com=2})
self:pron("서클", {com=0})
self:pron("의견란", {nn=3, l=1})
self:pron("의", {uie=1})
self:pron("깻잎", {ni=2})
self:pron("값어치", {bcred=1})
self:pron("맞흥정", {bcred=1})
self:pron("곧이어", {bcred=1})
self:pron("멋있다", {svar=1})
self:pron("뛰어들다", {iot=2})
self:pron("계속", {l=1})
self:pron("계속되다", {l=1})
self:pron("세 명", {l=1})
self:pron("서예", {})
end
function tests:test_ipa()
self:ipa("법률학", {})
self:ipa("음식값", {l=1})
self:ipa("공산주의", {l=1, ui=4})
self:ipa("고춧가루", {nobc=2})
self:ipa("굵다랗다", {l=1})
self:ipa("새해 복많이 받으세요", {})
self:ipa("새해 복 많이 받으세요", {})
self:ipa("한국", {l=1, cap=1})
self:ipa("상사병", {com=2})
self:ipa("서클", {com=0})
self:ipa("의견란", {nn=3, l=1})
self:ipa("의", {uie=1})
self:ipa("깻잎", {ni=2})
self:ipa("값어치", {bcred=1})
self:ipa("맞흥정", {bcred=1})
self:ipa("곧이어", {bcred=1})
self:ipa("멋있다", {svar=1})
self:ipa("뛰어들다", {iot=2})
self:ipa("계속", {l=1})
self:ipa("계속되다", {l=1})
self:ipa("세 명", {l=1})
end
return tests