Revision as of 18:39, 23 June 2018 editErutuon (talk | contribs)Autopatrolled, Extended confirmed users32,173 edits start testcases |
Latest revision as of 13:01, 10 December 2024 edit undoGonnym (talk | contribs)Autopatrolled, Extended confirmed users, Template editors222,872 editsNo edit summary |
(38 intermediate revisions by 4 users not shown) |
Line 1: |
Line 1: |
|
-- Example Unit tests for ]. Click talk page to run tests. |
|
-- Unit tests for ]. Click talk page to run tests. |
|
local p = require 'Module:UnitTests' |
|
local p = require('Module:UnitTests') |
|
local m_Language = require 'Module:Language' |
|
local m_Language = require('Module:Wikt-lang') |
|
|
local name_from_tag = require('Module:Lang')._name_from_tag |
|
|
|
|
|
function p:iterate(examples, func) |
|
function p:test_1_link() |
|
|
self:preprocess_equals_preprocess_many('{{#invoke:Wikt-lang/sandbox|main|', '}}', '{{#invoke:Wikt-lang|wiktlang|', '}}', |
|
if type(examples) ~= 'table' then |
|
|
|
{ |
|
error('First argument of iterate should be a table, not ' .. type(examples) .. '.') |
|
|
|
{"grc|δημοκρᾰτῐ́ᾱ"}, |
|
end |
|
|
|
{"ha|àzàhàr̃iyyā̀"}, |
|
if type(func) == 'string' then |
|
|
|
{"la|coëō"}, |
|
func = self |
|
|
|
{"nci|Quetzalcōātl"}, |
|
for i, example in ipairs(examples) do |
|
|
|
{"ru|ру́сский язы́к"}, |
|
if type(example) == 'table' then |
|
|
|
{"he|שלום"}, |
|
func(self, unpack(example)) |
|
|
|
{"sh|ćá|ća"}, -- fake word with c-acute and tonal acute; add a real word if you know one |
|
else |
|
|
|
}, {nowiki=1}) |
|
error('iterate does not know what to do with example number ' .. i .. ', whose type is ' .. type(example) .. '.') |
|
|
end |
|
end |
|
|
|
|
|
function p:test_2_private_codes() |
|
|
self:preprocess_equals_preprocess_many('{{#invoke:Wikt-lang/sandbox|main|', '}}', '{{#invoke:Wikt-lang|wiktlang|', '}}', |
|
|
{ |
|
|
{"cel-x-proto|*beru"}, -- this private code is taken from Module:Lang's data |
|
|
{"cel-x-bryproto|test"}, |
|
|
{"gem-x-proto|test"}, |
|
|
{"gmw-x-proto|test"}, |
|
|
{"grk-x-proto|test́к"}, |
|
|
{"ine-x-bsproto|test"}, |
|
|
{"ine-x-proto|test"}, |
|
|
{"non-x-proto|test"}, |
|
|
{"poz-x-polproto|test"}, |
|
|
{"sem-x-proto|test"}, |
|
|
{"sla-x-proto|test"}, |
|
|
{"zle-x-ort|test"}, |
|
|
}, {nowiki=1}) |
|
|
end |
|
|
|
|
|
local function get_test_patterns(main) |
|
|
local data = require('Module:Wikt-lang/data/sandbox') |
|
|
local language_codes = {} |
|
|
|
|
|
if main then |
|
|
for code, values in pairs(data) do |
|
|
table.insert(language_codes, {code, values.name}) |
|
end |
|
end |
|
else |
|
|
error('Second argument of iterate should be a string, not ' .. type(func) .. '.') |
|
|
end |
|
end |
|
end |
|
|
|
|
|
|
|
local function comp(a, b) |
|
function p:check_makeEntryName(languageCode, word, expected) |
|
|
|
return a < b |
|
self:equals(word, m_Language.makeEntryName(word, languageCode), expected) |
|
|
|
end |
|
|
|
|
|
table.sort(language_codes, comp) |
|
|
return language_codes |
|
end |
|
end |
|
|
|
|
|
|
function p:test_3_all_database_links() |
|
p = function (self) |
|
|
|
local wiktionary_test_patterns = get_test_patterns(true) |
|
local examples = { |
|
|
|
local full_test_patterns = {} |
|
{ "la", "homō", "homo" }, |
|
|
|
|
|
{ "grc", "δημοκρᾰτῐ́ᾱ", "δημοκρατία" }, |
|
|
|
for i = 1, #wiktionary_test_patterns do |
|
} |
|
|
|
local code = wiktionary_test_patterns |
|
|
table.insert(full_test_patterns, {code .. "|test", code .. "|test"}) |
|
|
end |
|
|
|
|
|
|
self:preprocess_equals_preprocess_many('{{#invoke:Wikt-lang/sandbox|main|', '}}', '{{#invoke:Wikt-lang|wiktlang|no_cat=yes|', '}}', full_test_patterns, {nowiki=1}) |
|
self:iterate(examples, "check_makeEntryName") |
|
|
|
end |
|
|
|
|
|
function p:test_4_errors() |
|
|
self:preprocess_equals_preprocess_many('{{#invoke:Wikt-lang/sandbox|main|', '}}', '{{#invoke:Wikt-lang|wiktlang|', '}}', |
|
|
{ |
|
|
-- not a valid code |
|
|
{"abcd|test"}, |
|
|
|
|
|
-- not a valid private code |
|
|
{"abc-x-proto|test"}, |
|
|
|
|
|
-- no code |
|
|
{""}, |
|
|
|
|
|
-- text, but no code |
|
|
{"|test"}, |
|
|
|
|
|
-- display text, but no code |
|
|
{"||test"}, |
|
|
|
|
|
-- no text |
|
|
{"la|"}, |
|
|
|
|
|
-- no link text |
|
|
{"la||test"}, |
|
|
|
|
|
-- invalid unnamed |4= |
|
|
{"la|test|test|number 4"}, |
|
|
|
|
|
-- invalid parameter (|test=) |
|
|
{"la|test|test|test=number 4"}, |
|
|
|
|
|
}, {nowiki=1}) |
|
end |
|
end |
|
|
|
|