Difference between revisions of "Module:Arguments/testcases"
Jump to navigation
Jump to search
blackwiki>Mr. Stradivarius (test getting the testcase module invocation) |
blackwiki>Mr. Stradivarius (more abstraction) |
||
| Line 4: | Line 4: | ||
-- Constants | -- Constants | ||
| − | local | + | |
| − | + | local defaultArgs = {} | |
| − | + | ||
| + | defaultArgs.invoke = 'firstInvokeArg' | ||
| + | defaultArgs[1] = 'firstTemplateArg' | ||
| + | defaultArgs[2] = 'secondTemplateArg' | ||
-------------------------------------------------------------------------- | -------------------------------------------------------------------------- | ||
| Line 25: | Line 28: | ||
function suite.getDefaultTemplateExpansion(funcName) | function suite.getDefaultTemplateExpansion(funcName) | ||
| − | return suite.expandTestTemplate(funcName, | + | return suite.expandTestTemplate(funcName, defaultArgs[1], defaultArgs[2]) |
end | end | ||
| Line 34: | Line 37: | ||
end | end | ||
| − | function suite. | + | function suite.getDefaultExpansions(testcaseName) |
| + | local first = suite.getDefaultTemplateExpansion(testcaseName .. 'First') | ||
| + | local second = suite.getDefaultTemplateExpansion(testcaseName .. 'Second') | ||
| + | local invoke = suite.getInvocation(testcaseName .. 'First') | ||
| + | return first, second, invoke | ||
| + | end | ||
| + | |||
| + | function suite.makeInvokeFunction(key, options) | ||
return function (frame) | return function (frame) | ||
options = options or {} | options = options or {} | ||
| Line 40: | Line 50: | ||
return args[key] | return args[key] | ||
end | end | ||
| + | end | ||
| + | |||
| + | function suite.makeArgInvokeFunctions(testcaseName, options) | ||
| + | suite[testcaseName .. 'First'] = suite.makeInvokeFunction(1, options) | ||
| + | suite[testcaseName .. 'Second'] = suite.makeInvokeFunction(2, options) | ||
end | end | ||
| Line 46: | Line 61: | ||
-------------------------------------------------------------------------- | -------------------------------------------------------------------------- | ||
| − | suite. | + | suite.makeArgInvokeFunctions('defaultPrecedence') |
| − | |||
function suite:testDefaultPrecedence() | function suite:testDefaultPrecedence() | ||
| − | local first | + | local first, second, invoke = suite.getDefaultExpansions('defaultPrecedence') |
| − | + | self:assertEquals(defaultArgs.invoke, first) | |
| − | + | self:assertEquals(defaultArgs[2], second) | |
| − | self:assertEquals( | + | self:assertEquals(defaultArgs.invoke, invoke) |
| − | self:assertEquals( | ||
| − | self:assertEquals( | ||
end | end | ||
return suite | return suite | ||
Revision as of 02:13, 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 defaultArgs = {}
defaultArgs.invoke = 'firstInvokeArg'
defaultArgs[1] = 'firstTemplateArg'
defaultArgs[2] = '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, defaultArgs[1], defaultArgs[2])
end
function suite.getInvocation(funcName)
local frame = mw.getCurrentFrame()
local val = frame:preprocess('{{Module talk:Arguments/testInvoke|function=' .. funcName .. '}}')
return val
end
function suite.getDefaultExpansions(testcaseName)
local first = suite.getDefaultTemplateExpansion(testcaseName .. 'First')
local second = suite.getDefaultTemplateExpansion(testcaseName .. 'Second')
local invoke = suite.getInvocation(testcaseName .. 'First')
return first, second, invoke
end
function suite.makeInvokeFunction(key, options)
return function (frame)
options = options or {}
local args = getArgs(frame, options)
return args[key]
end
end
function suite.makeArgInvokeFunctions(testcaseName, options)
suite[testcaseName .. 'First'] = suite.makeInvokeFunction(1, options)
suite[testcaseName .. 'Second'] = suite.makeInvokeFunction(2, options)
end
--------------------------------------------------------------------------
-- Test default precedence
--------------------------------------------------------------------------
suite.makeArgInvokeFunctions('defaultPrecedence')
function suite:testDefaultPrecedence()
local first, second, invoke = suite.getDefaultExpansions('defaultPrecedence')
self:assertEquals(defaultArgs.invoke, first)
self:assertEquals(defaultArgs[2], second)
self:assertEquals(defaultArgs.invoke, invoke)
end
return suite