Moduuli:Vertailuarvotesti
Siirry navigaatioon
Siirry hakuun
Tämän moduulin ohjeistuksen voi tehdä sivulle Moduuli:Vertailuarvotesti/ohje
local t = {}
local base_path="Moduuli:Vertailuarvotesti/testdata/";
function load_reference_args (pagename )
local reference_args;
local title=base_path .. pagename;
moduletitle=mw.title.new(title);
if not moduletitle then
error('"' .. map .. '" is not a valid name for a module', 2)
elseif moduletitle.exists then
reference_args = mw.loadData(title)
end
return reference_args;
end
function t.print_reference_args (frame)
local ret="";
local pagename=frame.args['sivun nimi'] or mw.title.getCurrentTitle().rootText;
local reference_args=load_reference_args(pagename);
local args=cleanParameters(reference_args)
ret=dump(args);
return "<pre>return " .. ret .."</pre>";
end
function t.check(frame)
local tunnus=frame.args[1] or frame.args['tunnus'] or 'TEST_3';
local pagename=frame.args['sivun nimi'] or mw.title.getCurrentTitle().rootText;
local parent = frame:getParent();
local input_args={};
local ret="";
local fail_msg="<span class='wd_tests'>[https://tools.wmflabs.org/fiwiki-tools/testit/".. tunnus .."/FAIL/VERTAILU Vertailu-testin tulos virheellinen]</span>[[Luokka:Vertailu-testin tulos virheellinen]]";
local ok_msg="<span class='wd_tests'>[https://tools.wmflabs.org/fiwiki-tools/testit/".. tunnus .."/OK/VERTAILU Vertailu-testi OK]</span>";
if not parent then
return "";
end
input_args=cleanParameters(parent.args);
local reference_args=load_reference_args(pagename);
if not reference_args then
return "";
end
reference_args=cleanParameters(reference_args);
for k,v in pairs(reference_args) do
if v ~=nil and v~="" then
re=false;
input_v=input_args[k] or "";
if v=="-" then
v="";
elseif string.sub(v, 1,1)=="/" and string.sub(v, -1, -1)=="/" then
re=string.sub(v, 2,-2);
end
if (input_v~=v) and not (re and mw.ustring.find(input_v, re)) then
return fail_msg;
end
end
end
return ok_msg;
end
function t.print_test_results(frame)
local pagename=frame.args['sivun nimi'] or mw.title.getCurrentTitle().rootText;
pagename=mw.text.trim(pagename);
local title=base_path .. pagename;
-- return title;
local parent = frame:getParent();
local input_args={};
local ret="Vertailun tulokset.\n s=syöte, v=odotettu syöte.\n\n";
if not parent then
return "FAIL";
end
input_args=cleanParameters(parent.args);
local reference_args=load_reference_args(pagename);
if not reference_args then
return title;
end
reference_args=cleanParameters(reference_args);
for k,v in pairs(reference_args) do
if v ~=nil and v~="" then
input_v=input_args[k] or "";
if v=="-" then
v="";
elseif string.sub(v, 1,1)=="/" and string.sub(v, -1, -1)=="/" then
re=mw.text.unstripNoWiki(string.sub(v, 2,-2));
end
state=(input_v==v) or (re and mw.ustring.find(input_v, re)) ;
ret=ret .. k .." = " .. tostring(state) .. "\n s=\"" .. input_v .."\"\n v=\"" .. v .."\"\n\n";
end
end
return "Vertailutiedot: [[" .. base_path .. pagename .."]]\n\n<pre>" .. ret .."</pre>";
end
function t.print_args ( frame )
local pagename=mw.title.getCurrentTitle().rootText;
local parent = frame:getParent();
local args={};
local ret="";
if parent ~= nil then
args=cleanParameters(parent.args);
end
ret = dump(args);
return "Vertailutiedot: [[" .. base_path .. pagename .."]]\n\n<pre>return " .. ret .."</pre>";
end
function cleanParameters( frame_args )
local new_args = {};
local index = 1;
local value;
for k,v in pairs(frame_args) do
value = frame_args[k]
value=mw.text.killMarkers( value );
value=mw.ustring.gsub(tostring(value),"%b<>", "")
value=mw.ustring.gsub(tostring(value),"%s+", " ")
value=mw.text.trim(value);
value=mw.text.nowiki(value);
new_args[k] = value;
end
return new_args;
end
function dump(o)
if type(o) == 'table' then
local s = '{\n'
for k,v in pairs(o) do
if type(k) ~= 'number' then k = '"'..k..'"' end
if type(v) == 'nil' then k = '"'..tostring(k)..'"' end
s = s .. '['..k..'] = ' .. dump(v) .. ',\n'
end
return s .. '}'
else
return '"' .. tostring(o) .. '"'
end
end
return t