Module:Template parameter value/testcases: Difference between revisions
Appearance
Content deleted Content added
m right, that changed |
Use module entry points as best as possible to get around preprocessing in template entry point |
||
Line 7: | Line 7: | ||
end |
end |
||
function p: |
function p:_internal_test(module, name) |
||
--Lazy and potentially risky hooking of functions, just cause |
|||
⚫ | |||
if not module.getValue then --Temporary handler while live uses a different system (dont ask) |
|||
self:preprocess_equals_sandbox_many('{{#invoke:Template parameter value', 'main', { |
|||
module.test = function(a,b,c,d) |
|||
{TestPage.."|X13||_id", "1"}, |
|||
d = d or {} |
|||
{TestPage.."|X11||_id", "2"}, |
|||
local f = mw.getCurrentFrame() |
|||
{TestPage.."|X11|1|_id", "2"}, |
|||
f.getParent = function() return f end |
|||
{TestPage.."|X12||_id", "3"}, |
|||
f.args = {a, b, tostring(d.templateIndex or "1"), c, tostring(d.parameterIndex or "1")} |
|||
{TestPage.."|X11|2|_id", "4"}, |
|||
return module.main(f) |
|||
{TestPage.."|X11|3|_id", "5"}, |
|||
end |
|||
{TestPage.."|X11|4|_id", "subtemplate"}, |
|||
else |
|||
{TestPage.."|X11|4|_id|2", "6"}, |
|||
module.test = function(...) |
|||
{TestPage.."|X11|4|_id|ignore_subtemplates=y", "6"}, |
|||
local s,r = module.getValue(...) |
|||
}, {nowiki=1}) |
|||
return r --Truncate to one value |
|||
end |
|||
end |
|||
⚫ | |||
self:equals(name.."basic grabbing 1", module.test(TestPage, "X13", "_id"), "1") |
|||
self:equals(name.."basic grabbing 2", module.test(TestPage, "X11", "_id"), "2") |
|||
self:equals(name.."basic grabbing 3", module.test(TestPage, "X11", "_id", {templateIndex=1}), "2") |
|||
self:equals(name.."basic grabbing 4", module.test(TestPage, "X12", "_id"), "3") |
|||
self:equals(name.."basic grabbing 5", module.test(TestPage, "X11", "_id", {templateIndex=2}), "4") |
|||
self:equals(name.."basic grabbing 6", module.test(TestPage, "X11", "_id", {templateIndex=3}), "5") |
|||
self:equals(name.."basic grabbing 7", module.test(TestPage, "X11", "_id", {templateIndex=4}), "subtemplate") |
|||
self:equals(name.."basic grabbing 8", module.test(TestPage, "X11", "_id", {templateIndex=4, parameterIndex=2}), "6") |
|||
self:equals(name.."basic grabbing 9", module.test(TestPage, "X11", "_id", {templateIndex=4, ignoreSubtemplates=true}), "6") |
|||
--Test grabbing for the other tests (NumericalParameters, HeavyNesting) |
--Test grabbing for the other tests (NumericalParameters, HeavyNesting) |
||
self:equals(name.."numerical parameters 1", module.test(TestPage, "X21", "1"), "X") |
|||
self:preprocess_equals_sandbox_many('{{#invoke:Template parameter value', 'main', { |
|||
self:equals(name.."numerical parameters 2", module.test(TestPage, "X21", "2"), "Y") |
|||
{TestPage.."|X21||1", "X"}, |
|||
self:equals(name.."numerical parameters 3", module.test(TestPage, "X21", "3"), "Z") |
|||
{TestPage.."|X21||2", "Y"}, |
|||
self:equals(name.."numerical parameters 4", module.test(TestPage, "X21", "4"), "W") |
|||
{TestPage.."|X21||3", "Z"}, |
|||
self:equals(name.."numerical parameters 5", module.test(TestPage, "X21", "5"), "") |
|||
{TestPage.."|X21||4", "W"}, |
|||
self:equals(name.."numerical parameters 6", module.test(TestPage, "X21", "6"), "P") |
|||
{TestPage.."|X21||5", ""}, |
|||
{TestPage.."|X21||6", "P"}, |
|||
self:equals(name.."nesting templates 1", module.test(TestPage, "X22", "1"), "2") |
|||
}, {nowiki=1}) |
|||
self:equals(name.."nesting templates 2", module.test(TestPage, "X22", "1", {ignoreSubtemplates=true}), "") |
|||
self:preprocess_equals_sandbox_many('{{#invoke:Template parameter value', 'main', { |
|||
self:equals(name.."nesting templates 3", module.test(TestPage, "X22", "A1"), "Nest1") |
|||
{TestPage.."|X22||1", "2"}, |
|||
self:equals(name.."nesting templates 4", module.test(TestPage, "X22", "A2"), "Nest2{{X20 |x=y|1=2|_id=9}} Content", {nowiki=1}) |
|||
{TestPage.."|X22||1|ignore_subtemplates=y", ""}, |
|||
self:equals(name.."nesting templates 5", module.test(TestPage, "X22", "A3a"), "{{Text|A|4|A4=A5}}", {nowiki=1}) |
|||
{TestPage.."|X22||A1", "Nest1"}, |
|||
self:equals(name.."nesting templates 6", module.test(TestPage, "X22", "A3b"), "1{{Text|A|4|A4=A5}}2", {nowiki=1}) |
|||
{TestPage.."|X22||A2", process("Nest2{{X20|x=y|1=2|_id=9}} Content")}, |
|||
self:equals(name.."nesting templates 7", module.test(TestPage, "X22", "A4", {parameterIndex=2}), "A5") |
|||
{TestPage.."|X22||A3a", process("{{Text|A|4|A4=A5}}")}, |
|||
self:equals(name.."nesting templates 8", module.test(TestPage, "X22", "A4", {parameterIndex=3}), "[[Help:Example|{{X20|[[Help:Example]]|_id=%10}}]]", {nowiki=1}) |
|||
{TestPage.."|X22||A3b", process("1{{Text|A|4|A4=A5}}2")}, |
|||
self:equals(name.."nesting templates 9", module.test(TestPage, "X22", "A5"), "") |
|||
{TestPage.."|X22||A4|2", "A5"}, |
|||
self:equals(name.."nesting templates 10", module.test(TestPage, "X22", "A6"), "") |
|||
{TestPage.."|X22||A4|3", process("[[Help:Example|{{X20|[[Help:Example]]|_id=%10}}]]")}, |
|||
self:equals(name.."nesting templates 11", module.test(TestPage, "X22", "A7"), "{{X22 |_id=11}}", {nowiki=1}) |
|||
{TestPage.."|X22||A5", ""}, |
|||
end |
|||
{TestPage.."|X22||A6", ""}, |
|||
{TestPage.."|X22||A7", process("{{X22|_id=11}}")}, |
|||
function p:test_live() |
|||
}, {nowiki=1}) |
|||
p:_internal_test(require("Module:Template parameter value"), "Live ") |
|||
end |
|||
function p:test_sandbox() |
|||
p:_internal_test(require("Module:Template parameter value/sandbox"), "Sandbox ") |
|||
end |
end |
||
Revision as of 14:00, 2 March 2023
![]() | This is the test cases page for the module Module:Template parameter value. Results of the test cases. |
--Go to the talk page to see the results of the tests. See [[Template:Template parameter value/testpage]] for the content used in testing
local p = require('Module:UnitTests')
local TestPage = "Template:Template parameter value/testpage"
local function process(x)
return x--return mw.getCurrentFrame():preprocess(x)
end
function p:_internal_test(module, name)
--Lazy and potentially risky hooking of functions, just cause
if not module.getValue then --Temporary handler while live uses a different system (dont ask)
module.test = function(a,b,c,d)
d = d or {}
local f = mw.getCurrentFrame()
f.getParent = function() return f end
f.args = {a, b, tostring(d.templateIndex or "1"), c, tostring(d.parameterIndex or "1")}
return module.main(f)
end
else
module.test = function(...)
local s,r = module.getValue(...)
return r --Truncate to one value
end
end
--Test _id grabbing for the TemplateN series
self:equals(name.."basic grabbing 1", module.test(TestPage, "X13", "_id"), "1")
self:equals(name.."basic grabbing 2", module.test(TestPage, "X11", "_id"), "2")
self:equals(name.."basic grabbing 3", module.test(TestPage, "X11", "_id", {templateIndex=1}), "2")
self:equals(name.."basic grabbing 4", module.test(TestPage, "X12", "_id"), "3")
self:equals(name.."basic grabbing 5", module.test(TestPage, "X11", "_id", {templateIndex=2}), "4")
self:equals(name.."basic grabbing 6", module.test(TestPage, "X11", "_id", {templateIndex=3}), "5")
self:equals(name.."basic grabbing 7", module.test(TestPage, "X11", "_id", {templateIndex=4}), "subtemplate")
self:equals(name.."basic grabbing 8", module.test(TestPage, "X11", "_id", {templateIndex=4, parameterIndex=2}), "6")
self:equals(name.."basic grabbing 9", module.test(TestPage, "X11", "_id", {templateIndex=4, ignoreSubtemplates=true}), "6")
--Test grabbing for the other tests (NumericalParameters, HeavyNesting)
self:equals(name.."numerical parameters 1", module.test(TestPage, "X21", "1"), "X")
self:equals(name.."numerical parameters 2", module.test(TestPage, "X21", "2"), "Y")
self:equals(name.."numerical parameters 3", module.test(TestPage, "X21", "3"), "Z")
self:equals(name.."numerical parameters 4", module.test(TestPage, "X21", "4"), "W")
self:equals(name.."numerical parameters 5", module.test(TestPage, "X21", "5"), "")
self:equals(name.."numerical parameters 6", module.test(TestPage, "X21", "6"), "P")
self:equals(name.."nesting templates 1", module.test(TestPage, "X22", "1"), "2")
self:equals(name.."nesting templates 2", module.test(TestPage, "X22", "1", {ignoreSubtemplates=true}), "")
self:equals(name.."nesting templates 3", module.test(TestPage, "X22", "A1"), "Nest1")
self:equals(name.."nesting templates 4", module.test(TestPage, "X22", "A2"), "Nest2{{X20 |x=y|1=2|_id=9}} Content", {nowiki=1})
self:equals(name.."nesting templates 5", module.test(TestPage, "X22", "A3a"), "{{Text|A|4|A4=A5}}", {nowiki=1})
self:equals(name.."nesting templates 6", module.test(TestPage, "X22", "A3b"), "1{{Text|A|4|A4=A5}}2", {nowiki=1})
self:equals(name.."nesting templates 7", module.test(TestPage, "X22", "A4", {parameterIndex=2}), "A5")
self:equals(name.."nesting templates 8", module.test(TestPage, "X22", "A4", {parameterIndex=3}), "[[Help:Example|{{X20|[[Help:Example]]|_id=%10}}]]", {nowiki=1})
self:equals(name.."nesting templates 9", module.test(TestPage, "X22", "A5"), "")
self:equals(name.."nesting templates 10", module.test(TestPage, "X22", "A6"), "")
self:equals(name.."nesting templates 11", module.test(TestPage, "X22", "A7"), "{{X22 |_id=11}}", {nowiki=1})
end
function p:test_live()
p:_internal_test(require("Module:Template parameter value"), "Live ")
end
function p:test_sandbox()
p:_internal_test(require("Module:Template parameter value/sandbox"), "Sandbox ")
end
return p