Difference between revisions of "Module:Arguments/testcases"

From blackwiki
Jump to navigation Jump to search
blackwiki>Mr. Stradivarius
(add some test structures)
blackwiki>Mr. Stradivarius
(getting there)
Line 3: Line 3:
 
local suite = ScribuntoUnit:new()
 
local suite = ScribuntoUnit:new()
  
function suite.expandTestTemplate(funcName)
+
------------------ Template invocations used by the module --------------------
 +
-- Module talk:Arguments/testInvoke:
 +
-- {{#invoke:arguments/testcases|{{{function|}}}|firstInvokeArg}}
 +
-- Module talk:Arguments/testTemplate:
 +
-- {{Module talk:Arguments/testInvoke|{{{1|}}}|{{{2|}}}|blank=|function={{{function|}}}}}
 +
 
 +
function suite.expandTestTemplate(funcName, para1, para2)
 
local frame = mw.getCurrentFrame()
 
local frame = mw.getCurrentFrame()
local val = frame:preprocess('{{Module talk:Arguments/testTemplate|function=' .. funcName .. '}}')
+
local val = frame:preprocess('{{Module talk:Arguments/testTemplate|' .. para1 .. '|' .. para2 .. '|function=' .. funcName .. '}}')
 
return val
 
return val
 
end
 
end
  
 
function suite.createInvokeFunction(funcName, key, options)
 
function suite.createInvokeFunction(funcName, key, options)
return function (frame)
+
suite[funcName] = function (frame)
 
options = options or {}
 
options = options or {}
 
local args = getArgs(frame, options)
 
local args = getArgs(frame, options)
 
return args[key]
 
return args[key]
 
end
 
end
 +
end
 +
 +
function suite:testDefaultPrecedence()
 +
suite.createInvokeFunction('defaultPrecedenceFirst', 1)
 +
local first = suite.expandTestTemplate('defaultPrecedence', 'firstTemplateArg', 'secondTemplateArg')
 +
self:assertEquals('firstInvokeArg', first)
 
end
 
end
  

Revision as of 01:25, 10 December 2013

Documentation for this module may be created at Module:Arguments/testcases/doc

local getArgs = require('Module:Arguments').getArgs
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()

------------------ Template invocations used by the module --------------------
-- Module talk:Arguments/testInvoke:
-- {{#invoke:arguments/testcases|{{{function|}}}|firstInvokeArg}}
-- Module talk:Arguments/testTemplate:
-- {{Module talk:Arguments/testInvoke|{{{1|}}}|{{{2|}}}|blank=|function={{{function|}}}}}

function suite.expandTestTemplate(funcName, para1, para2)
	local frame = mw.getCurrentFrame()
	local val = frame:preprocess('{{Module talk:Arguments/testTemplate|' .. para1 .. '|' .. para2 .. '|function=' .. funcName .. '}}')
	return val
end

function suite.createInvokeFunction(funcName, key, options)
	suite[funcName] = function (frame)
		options = options or {}
		local args = getArgs(frame, options)
		return args[key]
	end
end

function suite:testDefaultPrecedence()
	suite.createInvokeFunction('defaultPrecedenceFirst', 1)
	local first = suite.expandTestTemplate('defaultPrecedence', 'firstTemplateArg', 'secondTemplateArg')
	self:assertEquals('firstInvokeArg', first)
end

function suite.main(frame)
	local args = getArgs(frame)
	return args[1]
end

function suite.test()
	local frame = mw.getCurrentFrame()
	local mainVal = frame:preprocess('{{Module talk:Arguments/testInvoke|function=main}}')
	return mainVal
end

return suite