Difference between revisions of "Module:Arguments/testcases"

From blackwiki
Jump to navigation Jump to search
blackwiki>Mr. Stradivarius
(try putting the function directly in the suite table)
blackwiki>Mr. Stradivarius
(use some more abstraction and try another test)
Line 2: Line 2:
 
local ScribuntoUnit = require('Module:ScribuntoUnit')
 
local ScribuntoUnit = require('Module:ScribuntoUnit')
 
local suite = ScribuntoUnit:new()
 
local suite = ScribuntoUnit:new()
 +
 +
-- Constants
 +
local firstInvokeArg = 'firstInvokeArg'
 +
local defaultFirstTemplateArg = 'firstTemplateArg'
 +
local defaultSecondTemplateArg = 'secondTemplateArg'
 +
 +
--------------------------------------------------------------------------
 +
-- Helper functions
 +
--------------------------------------------------------------------------
  
 
------------------ Template invocations used by the module --------------------
 
------------------ Template invocations used by the module --------------------
Line 13: Line 22:
 
local val = frame:preprocess('{{Module talk:Arguments/testTemplate|' .. para1 .. '|' .. para2 .. '|function=' .. funcName .. '}}')
 
local val = frame:preprocess('{{Module talk:Arguments/testTemplate|' .. para1 .. '|' .. para2 .. '|function=' .. funcName .. '}}')
 
return val
 
return val
 +
end
 +
 +
function suite.getDefaultTemplateExpansion(funcName)
 +
return suite.expandTestTemplate(funcName, defaultFirstTemplateArg, defaultSecondTemplateArg)
 
end
 
end
  
Line 22: Line 35:
 
end
 
end
 
end
 
end
 +
 +
--------------------------------------------------------------------------
 +
-- Test default precedence
 +
--------------------------------------------------------------------------
  
 
suite.defaultPrecedenceFirst = suite.createInvokeFunction(1)
 
suite.defaultPrecedenceFirst = suite.createInvokeFunction(1)
 +
suite.defaultPrecedenceSecond = suite.createInvokeFunction(2)
  
 
function suite:testDefaultPrecedence()
 
function suite:testDefaultPrecedence()
local first = suite.expandTestTemplate('defaultPrecedenceFirst', 'firstTemplateArg', 'secondTemplateArg')
+
local first = suite.getDefaultTemplateExpansion('defaultPrecedenceFirst')
self:assertEquals('firstInvokeArg', first)
+
local second = suite.getDefaultTemplateExpansion('defaultPrecedenceSecond')
end
+
self:assertEquals(firstInvokeArg, first)
 
+
self:assertEquals(defaultSecondTemplateArg, second)
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
 
end
  
 
return suite
 
return suite

Revision as of 01:49, 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()

-- Constants
local firstInvokeArg = 'firstInvokeArg'
local defaultFirstTemplateArg = 'firstTemplateArg'
local defaultSecondTemplateArg = 'secondTemplateArg'

--------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------

------------------ 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.getDefaultTemplateExpansion(funcName)
	return suite.expandTestTemplate(funcName, defaultFirstTemplateArg, defaultSecondTemplateArg)
end

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

--------------------------------------------------------------------------
-- Test default precedence
--------------------------------------------------------------------------

suite.defaultPrecedenceFirst = suite.createInvokeFunction(1)
suite.defaultPrecedenceSecond = suite.createInvokeFunction(2)

function suite:testDefaultPrecedence()
	local first = suite.getDefaultTemplateExpansion('defaultPrecedenceFirst')
	local second = suite.getDefaultTemplateExpansion('defaultPrecedenceSecond')
	self:assertEquals(firstInvokeArg, first)
	self:assertEquals(defaultSecondTemplateArg, second)
end

return suite