Jump to content

Module:Template parameter value/testcases: Difference between revisions

From Wikipedia, the free encyclopedia
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:test_TemplateEntry()
function p:_internal_test(module, name)
--Lazy and potentially risky hooking of functions, just cause
--Test _id grabbing for the TemplateN series
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


--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)
--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

--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