Difference between revisions of "Module:Arguments/testcases"
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. | + | local first = suite.getDefaultTemplateExpansion('defaultPrecedenceFirst') |
| − | self:assertEquals( | + | local second = suite.getDefaultTemplateExpansion('defaultPrecedenceSecond') |
| − | + | self:assertEquals(firstInvokeArg, first) | |
| − | + | self:assertEquals(defaultSecondTemplateArg, second) | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
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