Difference between revisions of "Module:Arguments/testcases"
Jump to navigation
Jump to search
blackwiki>Mr. Stradivarius m (comment grammar fix) |
blackwiki>Mr. Stradivarius (start rewriting the tests) |
||
| Line 3: | Line 3: | ||
local suite = ScribuntoUnit:new() | local suite = ScribuntoUnit:new() | ||
| − | -- | + | -------------------------------------------------------------------------- |
| − | + | -- Default values | |
| − | + | -------------------------------------------------------------------------- | |
| − | |||
| − | |||
| − | |||
| − | local | + | local d = {} |
| − | + | d.frameTitle = 'Frame title' | |
| − | + | d.firstFrameArg = 'first frame argument' | |
| − | + | d.parentTitle = 'Parent title' | |
| − | + | d.firstParentArg = 'first parent argument' | |
| + | d.secondParentArg = 'second parent argument' | ||
| + | d.uniqueFrameArg = 'unique frame argument' | ||
| + | d.uniqueFrameArgKey = 'uniqueFrameArgKey' | ||
| + | d.uniqueParentArg = 'unique parent argument' | ||
| + | d.uniqueParentArgKey = 'uniqueParentArgKey' | ||
-------------------------------------------------------------------------- | -------------------------------------------------------------------------- | ||
| Line 20: | Line 22: | ||
-------------------------------------------------------------------------- | -------------------------------------------------------------------------- | ||
| − | + | function suite.getFrames(frameTitle, frameArgs, parentTitle, parentArgs) | |
| − | + | local currentFrame = mw.getCurrentFrame() | |
| − | + | local parent = currentFrame:newChild{title = parentTitle, args = parentArgs} | |
| − | + | local frame = parent:newChild{title = frameTitle, args = frameArgs} | |
| − | + | return frame, parent | |
| − | |||
| − | function suite. | ||
| − | local | ||
| − | local | ||
| − | return | ||
end | end | ||
| − | function suite. | + | function suite.getDefaultFrames() |
| − | + | local frameTitle = d.frameTitle | |
| + | local frameArgs = { | ||
| + | d.firstFrameArg, | ||
| + | [d.uniqueFrameArgKey] = d.uniqueFrameArg | ||
| + | } | ||
| + | local parentTitle = d.parentTitle | ||
| + | local parentArgs = { | ||
| + | d.firstParentArg, | ||
| + | d.secondParentArg, | ||
| + | [d.uniqueParentArgKey] = d.uniqueParentArg | ||
| + | } | ||
| + | return suite.getFrames(frameTitle, frameArgs, parentTitle, parentArgs) | ||
end | end | ||
| − | function suite. | + | function suite.getDefaultArgs(options) |
| − | local frame = | + | local frame, parent = suite.getDefaultFrames() |
| − | local | + | local args = getArgs(frame, options) |
| − | return | + | return args |
end | end | ||
| − | + | -------------------------------------------------------------------------- | |
| − | + | -- Extra assert functions | |
| − | + | -------------------------------------------------------------------------- | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
function suite:assertHtmlError(s) | function suite:assertHtmlError(s) | ||
| Line 76: | Line 61: | ||
-- Test default precedence | -- Test default precedence | ||
-------------------------------------------------------------------------- | -------------------------------------------------------------------------- | ||
| − | |||
| − | |||
function suite:testDefaultPrecedence() | function suite:testDefaultPrecedence() | ||
| − | local | + | local args = suite.getDefaultArgs() |
| − | self:assertEquals( | + | self:assertEquals(d.firstFrameArg, args[1]) |
| − | self:assertEquals( | + | self:assertEquals(d.secondParentArg, args[2]) |
| − | self:assertEquals( | + | self:assertEquals(d.uniqueFrameArg, args[d.uniqueFrameArgKey]) |
| + | self:assertEquals(d.uniqueParentArg, args[d.uniqueParentArgKey]) | ||
end | end | ||
| Line 89: | Line 73: | ||
-- Test parent first | -- Test parent first | ||
-------------------------------------------------------------------------- | -------------------------------------------------------------------------- | ||
| − | |||
| − | |||
function suite:testParentFirst() | function suite:testParentFirst() | ||
| − | local | + | local args = suite.getDefaultArgs{parentFirst = true} |
| − | self:assertEquals( | + | self:assertEquals(d.firstParentArg, args[1]) |
| − | self:assertEquals( | + | self:assertEquals(d.secondParentArg, args[2]) |
| − | self:assertEquals( | + | self:assertEquals(d.uniqueFrameArg, args[d.uniqueFrameArgKey]) |
| + | self:assertEquals(d.uniqueParentArg, args[d.uniqueParentArgKey]) | ||
end | end | ||
| + | |||
-------------------------------------------------------------------------- | -------------------------------------------------------------------------- | ||
-- Test parent only | -- Test parent only | ||
-------------------------------------------------------------------------- | -------------------------------------------------------------------------- | ||
| − | |||
| − | |||
function suite:testParentOnly() | function suite:testParentOnly() | ||
| − | local | + | local args = suite.getDefaultArgs{parentOnly = true} |
| − | self:assertEquals( | + | self:assertEquals(d.firstParentArg, args[1]) |
| − | self:assertEquals( | + | self:assertEquals(d.secondParentArg, args[2]) |
| − | self:assertEquals( | + | self:assertEquals(nil, args[d.uniqueFrameArgKey]) |
| + | self:assertEquals(d.uniqueParentArg, args[d.uniqueParentArgKey]) | ||
end | end | ||
| Line 115: | Line 98: | ||
-- Test frame only | -- Test frame only | ||
-------------------------------------------------------------------------- | -------------------------------------------------------------------------- | ||
| − | |||
| − | |||
function suite:testFrameOnly() | function suite:testFrameOnly() | ||
| − | local | + | local args = suite.getDefaultArgs{frameOnly = true} |
| − | self:assertEquals( | + | self:assertEquals(d.firstFrameArg, args[1]) |
| − | self:assertEquals( | + | self:assertEquals(nil, args[2]) |
| − | self:assertEquals( | + | self:assertEquals(d.uniqueFrameArg, args[d.uniqueFrameArgKey]) |
| + | self:assertEquals(nil, args[d.uniqueParentArgKey]) | ||
end | end | ||
| + | --[=[ | ||
-------------------------------------------------------------------------- | -------------------------------------------------------------------------- | ||
-- Test default trimming | -- Test default trimming | ||
| Line 257: | Line 240: | ||
self:assertHtmlError(arg) | self:assertHtmlError(arg) | ||
end | end | ||
| + | |||
| + | -------------------------------------------------------------------------- | ||
| + | -- Test making existing arg nil | ||
| + | -------------------------------------------------------------------------- | ||
| + | |||
| + | function suite:testMakeExistingArgNil() | ||
| + | end | ||
| + | |||
| + | --]=] | ||
return suite | return suite | ||
Revision as of 10:30, 17 April 2014
Documentation for this module may be created at Module:Arguments/testcases/doc
local getArgs = require('Module:Arguments/sandbox').getArgs
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()
--------------------------------------------------------------------------
-- Default values
--------------------------------------------------------------------------
local d = {}
d.frameTitle = 'Frame title'
d.firstFrameArg = 'first frame argument'
d.parentTitle = 'Parent title'
d.firstParentArg = 'first parent argument'
d.secondParentArg = 'second parent argument'
d.uniqueFrameArg = 'unique frame argument'
d.uniqueFrameArgKey = 'uniqueFrameArgKey'
d.uniqueParentArg = 'unique parent argument'
d.uniqueParentArgKey = 'uniqueParentArgKey'
--------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------
function suite.getFrames(frameTitle, frameArgs, parentTitle, parentArgs)
local currentFrame = mw.getCurrentFrame()
local parent = currentFrame:newChild{title = parentTitle, args = parentArgs}
local frame = parent:newChild{title = frameTitle, args = frameArgs}
return frame, parent
end
function suite.getDefaultFrames()
local frameTitle = d.frameTitle
local frameArgs = {
d.firstFrameArg,
[d.uniqueFrameArgKey] = d.uniqueFrameArg
}
local parentTitle = d.parentTitle
local parentArgs = {
d.firstParentArg,
d.secondParentArg,
[d.uniqueParentArgKey] = d.uniqueParentArg
}
return suite.getFrames(frameTitle, frameArgs, parentTitle, parentArgs)
end
function suite.getDefaultArgs(options)
local frame, parent = suite.getDefaultFrames()
local args = getArgs(frame, options)
return args
end
--------------------------------------------------------------------------
-- Extra assert functions
--------------------------------------------------------------------------
function suite:assertHtmlError(s)
self:assertTrue(s:find('^<strong class="error">.*</strong>$'))
end
--------------------------------------------------------------------------
-- Test default precedence
--------------------------------------------------------------------------
function suite:testDefaultPrecedence()
local args = suite.getDefaultArgs()
self:assertEquals(d.firstFrameArg, args[1])
self:assertEquals(d.secondParentArg, args[2])
self:assertEquals(d.uniqueFrameArg, args[d.uniqueFrameArgKey])
self:assertEquals(d.uniqueParentArg, args[d.uniqueParentArgKey])
end
--------------------------------------------------------------------------
-- Test parent first
--------------------------------------------------------------------------
function suite:testParentFirst()
local args = suite.getDefaultArgs{parentFirst = true}
self:assertEquals(d.firstParentArg, args[1])
self:assertEquals(d.secondParentArg, args[2])
self:assertEquals(d.uniqueFrameArg, args[d.uniqueFrameArgKey])
self:assertEquals(d.uniqueParentArg, args[d.uniqueParentArgKey])
end
--------------------------------------------------------------------------
-- Test parent only
--------------------------------------------------------------------------
function suite:testParentOnly()
local args = suite.getDefaultArgs{parentOnly = true}
self:assertEquals(d.firstParentArg, args[1])
self:assertEquals(d.secondParentArg, args[2])
self:assertEquals(nil, args[d.uniqueFrameArgKey])
self:assertEquals(d.uniqueParentArg, args[d.uniqueParentArgKey])
end
--------------------------------------------------------------------------
-- Test frame only
--------------------------------------------------------------------------
function suite:testFrameOnly()
local args = suite.getDefaultArgs{frameOnly = true}
self:assertEquals(d.firstFrameArg, args[1])
self:assertEquals(nil, args[2])
self:assertEquals(d.uniqueFrameArg, args[d.uniqueFrameArgKey])
self:assertEquals(nil, args[d.uniqueParentArgKey])
end
--[=[
--------------------------------------------------------------------------
-- Test default trimming
--------------------------------------------------------------------------
suite.defaultTrimming = suite.makeInvokeFunction(keyWithPriority)
function suite:testDefaultTrimming()
local arg = suite.expandTestTemplate('defaultTrimming', nil, ' argWithPadding ')
self:assertEquals('argWithPadding', arg)
end
--------------------------------------------------------------------------
-- Test no trimming
--------------------------------------------------------------------------
suite.noTrimming = suite.makeInvokeFunction(keyWithPriority, {trim = false})
function suite:testNoTrimming()
local arg = suite.expandTestTemplate('noTrimming', nil, ' argWithPadding ')
self:assertEquals(' argWithPadding ', arg)
end
--------------------------------------------------------------------------
-- Test default blank removal
--------------------------------------------------------------------------
suite.defaultBlankRemoval = suite.makeInvokeFunction(keyWithPriority)
function suite:testDefaultBlankRemoval()
local arg = suite.expandTestTemplate('defaultBlankRemoval', nil, '')
self:assertEquals(nilArg, arg)
end
--------------------------------------------------------------------------
-- Test no blank removal
--------------------------------------------------------------------------
suite.noBlankRemoval = suite.makeInvokeFunction(keyWithPriority, {removeBlanks = false})
function suite:testNoBlankRemoval()
local arg = suite.expandTestTemplate('noBlankRemoval', nil, '')
self:assertEquals('', arg)
end
--------------------------------------------------------------------------
-- Test valueFunc
--------------------------------------------------------------------------
suite.valueFunc = suite.makeInvokeFunction(keyWithPriority, {valueFunc = function () return 'valueFuncValue' end})
function suite:testValueFunc()
local arg = suite.getDefaultTemplateExpansion('valueFunc')
self:assertEquals('valueFuncValue', arg)
end
--------------------------------------------------------------------------
-- Test valueFunc key
--------------------------------------------------------------------------
suite.valueFuncKey = suite.makeInvokeFunction(keyWithPriority, {
valueFunc = function (key, val)
if val then
return 'valueFuncKey: ' .. tostring(key)
end
end
})
function suite:testValueFuncKey()
local arg = suite.getDefaultTemplateExpansion('valueFuncKey')
self:assertEquals('valueFuncKey: ' .. tostring(keyWithPriority), arg)
end
--------------------------------------------------------------------------
-- Test valueFunc value
--------------------------------------------------------------------------
suite.valueFuncValue = suite.makeInvokeFunction(keyWithPriority, {
valueFunc = function (key, val)
if val then
return 'valueFuncValue: ' .. val
end
end
})
function suite:testValueFuncValue()
local arg = suite.getDefaultTemplateExpansion('valueFuncValue')
self:assertEquals('valueFuncValue: ' .. defaultArgs[2], arg)
end
--------------------------------------------------------------------------
-- Test default arg writing
--------------------------------------------------------------------------
suite.defaultArgWriting = suite.makeInvokeFunction(arbitraryKey, nil, valueWrittenToArgs)
function suite:testDefaultArgWriting()
local arg = suite.getDefaultTemplateExpansion('defaultArgWriting')
self:assertEquals(valueWrittenToArgs, arg)
end
--------------------------------------------------------------------------
-- Test default arg overwrite
--------------------------------------------------------------------------
suite.defaultArgOverwrite = suite.makeInvokeFunction(keyWithPriority, nil, overwrittenValue)
function suite:testDefaultArgOverwrite()
local arg = suite.getDefaultTemplateExpansion('defaultArgOverwrite')
self:assertEquals(overwrittenValue, arg)
end
--------------------------------------------------------------------------
-- Test read only
--------------------------------------------------------------------------
suite.readOnly = suite.makeInvokeFunction(arbitraryKey, {readOnly = true}, valueWrittenToArgs)
function suite:testReadOnly()
local arg = suite.getDefaultTemplateExpansion('readOnly')
self:assertHtmlError(arg)
end
--------------------------------------------------------------------------
-- Test no overwrite
--------------------------------------------------------------------------
suite.noOverwrite = suite.makeInvokeFunction(keyWithPriority, {noOverwrite = true}, overwrittenValue)
function suite:testNoOverwrite()
local arg = suite.getDefaultTemplateExpansion('noOverwrite')
self:assertHtmlError(arg)
end
--------------------------------------------------------------------------
-- Test making existing arg nil
--------------------------------------------------------------------------
function suite:testMakeExistingArgNil()
end
--]=]
return suite