Module:File link/testcases: Difference between revisions
Appearance
Content deleted Content added
add tests for the name method |
make test cases for the new sandbox version |
||
Line 1: | Line 1: | ||
-- Unit tests for [[Module:File link]]. Click on the talk page to run the tests. |
-- Unit tests for [[Module:File link]]. Click on the talk page to run the tests. |
||
local mFileLink = require('Module:File link') |
local mFileLink = require('Module:File link/sandbox') |
||
local main = mFileLink.main |
|||
local _main = mFileLink._main |
|||
local ScribuntoUnit = require('Module:ScribuntoUnit') |
local ScribuntoUnit = require('Module:ScribuntoUnit') |
||
local suite = ScribuntoUnit:new() |
local suite = ScribuntoUnit:new() |
||
-------------------------------------------------------------------------------- |
|||
-- Default values |
|||
-------------------------------------------------------------------------------- |
|||
local d = {} |
|||
d.name = 'Example.png' |
|||
-- Default types |
|||
d.string = 'foo' |
|||
d.number = 5 |
|||
d.bool = true |
|||
d.tbl = {} |
|||
d.func = function () return end |
|||
-------------------------------------------------------------------------------- |
-------------------------------------------------------------------------------- |
||
-- Helper functions |
-- Helper functions |
||
-------------------------------------------------------------------------------- |
-------------------------------------------------------------------------------- |
||
function suite.dummyObject(args) |
|||
local obj = {theName = d.name} |
|||
for k, v in pairs(args or {}) do |
|||
obj[k] = v |
|||
end |
|||
return obj |
|||
end |
|||
function suite:assertError(func, ...) |
function suite:assertError(func, ...) |
||
Line 39: | Line 19: | ||
local success, result = pcall(func, ...) |
local success, result = pcall(func, ...) |
||
self:assertTrue(success) |
self:assertTrue(success) |
||
end |
|||
function suite:assertPositionalParamExists(key) |
|||
self:assertEquals( |
|||
_main{file = 'Example.png', [key] = 'some value'}, |
|||
'[[File:Example.png|some value]]' |
|||
) |
|||
end |
|||
function suite:assertNamedParamExists(key) |
|||
self:assertEquals( |
|||
_main{file = 'Example.png', [key] = 'some value'}, |
|||
'[[File:Example.png|' .. key .. '=some value]]' |
|||
) |
|||
end |
end |
||
-------------------------------------------------------------------------------- |
-------------------------------------------------------------------------------- |
||
-- Basic tests |
|||
-- Test fileLink.new |
|||
-------------------------------------------------------------------------------- |
-------------------------------------------------------------------------------- |
||
function suite: |
function suite:testBadInput() |
||
self:assertError(_main) |
|||
self:assertNotError(mFileLink.new, nil) |
|||
self: |
self:assertError(_main, 'foo') |
||
self:assertError( |
self:assertError(_main, false) |
||
self:assertError(mFileLink.new, d.bool) |
|||
self:assertError(mFileLink.new, d.tbl) |
|||
self:assertError(mFileLink.new, d.func) |
|||
end |
end |
||
function suite: |
function suite:testBadFile() |
||
self:assertError(_main, {}) |
|||
self:assertStringContains(d.name, mFileLink.new(d.name):render()) |
|||
self:assertError(_main, {file = true}) |
|||
self:assertError(_main, {file = 123}) |
|||
end |
|||
function suite:testFile() |
|||
self:assertEquals(_main{file = 'Example.png'}, '[[File:Example.png]]') |
|||
end |
end |
||
-------------------------------------------------------------------------------- |
-------------------------------------------------------------------------------- |
||
-- Positional parameters |
|||
-- Test name |
|||
-------------------------------------------------------------------------------- |
-------------------------------------------------------------------------------- |
||
function suite: |
function suite:testFormat() |
||
self:assertPositionalParamExists('format') |
|||
local obj = mFileLink.new() |
|||
self:assertNotError(obj.name, obj, d.string) |
|||
self:assertError(obj.name, obj, nil) |
|||
self:assertError(obj.name, obj, d.number) |
|||
self:assertError(obj.name, obj, d.bool) |
|||
self:assertError(obj.name, obj, d.tbl) |
|||
self:assertError(obj.name, obj, d.func) |
|||
end |
end |
||
function suite: |
function suite:testBorder() |
||
self:assertPositionalParamExists('border') |
|||
local obj = mFileLink.new() |
|||
self:assertError(obj.name, {}, d.string) |
|||
end |
end |
||
function suite: |
function suite:testLocation() |
||
self:assertPositionalParamExists('location') |
|||
local obj = mFileLink.new() |
|||
obj:name(d.name) |
|||
self:assertStringContains(d.name, obj:render()) |
|||
end |
end |
||
function suite: |
function suite:testAlignment() |
||
self:assertPositionalParamExists('alignment') |
|||
local obj = mFileLink.new() |
|||
end |
|||
self:assertEquals(obj, obj:name(d.name)) |
|||
function suite:testSize() |
|||
self:assertPositionalParamExists('size') |
|||
end |
|||
function suite:testCaption() |
|||
self:assertPositionalParamExists('caption') |
|||
end |
|||
-------------------------------------------------------------------------------- |
|||
-- Named parameters |
|||
-------------------------------------------------------------------------------- |
|||
function suite:testUpright() |
|||
self:assertNamedParamExists('upright') |
|||
end |
|||
function suite:testLink() |
|||
self:assertNamedParamExists('link') |
|||
end |
|||
function suite:testAlt() |
|||
self:assertNamedParamExists('alt') |
|||
end |
|||
function suite:testPage() |
|||
self:assertNamedParamExists('page') |
|||
end |
|||
function suite:testClass() |
|||
self:assertNamedParamExists('class') |
|||
end |
|||
function suite:testLang() |
|||
self:assertNamedParamExists('lang') |
|||
end |
|||
function suite:testStart() |
|||
self:assertNamedParamExists('start') |
|||
end |
|||
function suite:testEnd() |
|||
self:assertNamedParamExists('end') |
|||
end |
|||
function suite:testThumbtime() |
|||
self:assertNamedParamExists('thumbtime') |
|||
end |
|||
-------------------------------------------------------------------------------- |
|||
-- Special parameters |
|||
-------------------------------------------------------------------------------- |
|||
function suite:testFormatfileWithFormat() |
|||
self:assertEquals( |
|||
_main{file = 'Example.png', format = 'a format', formatfile = 'foo'}, |
|||
'[[File:Example.png|a format=foo]]' |
|||
) |
|||
end |
|||
function suite:testFormatfileWithoutFormat() |
|||
self:assertEquals( |
|||
_main{file = 'Example.png', formatfile = 'foo'}, |
|||
'[[File:Example.png]]' |
|||
) |
|||
end |
|||
-------------------------------------------------------------------------------- |
|||
-- Order |
|||
-------------------------------------------------------------------------------- |
|||
function suite:testOrder() |
|||
local params = { |
|||
'file', |
|||
'format', |
|||
'formatfile', |
|||
'border', |
|||
'location', |
|||
'alignment', |
|||
'size', |
|||
'upright', |
|||
'link', |
|||
'alt', |
|||
'page', |
|||
'class', |
|||
'lang', |
|||
'start', |
|||
'end', |
|||
'thumbtime', |
|||
'caption' |
|||
} |
|||
local args = {} |
|||
for i, param in ipairs(params) do |
|||
args[param] = 'param ' .. i |
|||
end |
|||
local result = _main(args) |
|||
local i = 0 |
|||
for s in string.gmatch(result, 'param %d+') do |
|||
i = i + 1 |
|||
suite:assertEquals(s, 'param ' .. i) |
|||
end |
|||
end |
end |
||
Revision as of 12:24, 18 December 2014
![]() | This is the test cases page for the module Module:File link. Results of the test cases. |
-- Unit tests for [[Module:File link]]. Click on the talk page to run the tests.
local mFileLink = require('Module:File link/sandbox')
local main = mFileLink.main
local _main = mFileLink._main
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
function suite:assertError(func, ...)
local success, result = pcall(func, ...)
self:assertFalse(success)
end
function suite:assertNotError(func, ...)
local success, result = pcall(func, ...)
self:assertTrue(success)
end
function suite:assertPositionalParamExists(key)
self:assertEquals(
_main{file = 'Example.png', [key] = 'some value'},
'[[File:Example.png|some value]]'
)
end
function suite:assertNamedParamExists(key)
self:assertEquals(
_main{file = 'Example.png', [key] = 'some value'},
'[[File:Example.png|' .. key .. '=some value]]'
)
end
--------------------------------------------------------------------------------
-- Basic tests
--------------------------------------------------------------------------------
function suite:testBadInput()
self:assertError(_main)
self:assertError(_main, 'foo')
self:assertError(_main, false)
end
function suite:testBadFile()
self:assertError(_main, {})
self:assertError(_main, {file = true})
self:assertError(_main, {file = 123})
end
function suite:testFile()
self:assertEquals(_main{file = 'Example.png'}, '[[File:Example.png]]')
end
--------------------------------------------------------------------------------
-- Positional parameters
--------------------------------------------------------------------------------
function suite:testFormat()
self:assertPositionalParamExists('format')
end
function suite:testBorder()
self:assertPositionalParamExists('border')
end
function suite:testLocation()
self:assertPositionalParamExists('location')
end
function suite:testAlignment()
self:assertPositionalParamExists('alignment')
end
function suite:testSize()
self:assertPositionalParamExists('size')
end
function suite:testCaption()
self:assertPositionalParamExists('caption')
end
--------------------------------------------------------------------------------
-- Named parameters
--------------------------------------------------------------------------------
function suite:testUpright()
self:assertNamedParamExists('upright')
end
function suite:testLink()
self:assertNamedParamExists('link')
end
function suite:testAlt()
self:assertNamedParamExists('alt')
end
function suite:testPage()
self:assertNamedParamExists('page')
end
function suite:testClass()
self:assertNamedParamExists('class')
end
function suite:testLang()
self:assertNamedParamExists('lang')
end
function suite:testStart()
self:assertNamedParamExists('start')
end
function suite:testEnd()
self:assertNamedParamExists('end')
end
function suite:testThumbtime()
self:assertNamedParamExists('thumbtime')
end
--------------------------------------------------------------------------------
-- Special parameters
--------------------------------------------------------------------------------
function suite:testFormatfileWithFormat()
self:assertEquals(
_main{file = 'Example.png', format = 'a format', formatfile = 'foo'},
'[[File:Example.png|a format=foo]]'
)
end
function suite:testFormatfileWithoutFormat()
self:assertEquals(
_main{file = 'Example.png', formatfile = 'foo'},
'[[File:Example.png]]'
)
end
--------------------------------------------------------------------------------
-- Order
--------------------------------------------------------------------------------
function suite:testOrder()
local params = {
'file',
'format',
'formatfile',
'border',
'location',
'alignment',
'size',
'upright',
'link',
'alt',
'page',
'class',
'lang',
'start',
'end',
'thumbtime',
'caption'
}
local args = {}
for i, param in ipairs(params) do
args[param] = 'param ' .. i
end
local result = _main(args)
local i = 0
for s in string.gmatch(result, 'param %d+') do
i = i + 1
suite:assertEquals(s, 'param ' .. i)
end
end
return suite