Difference between revisions of "Module:List/testcases"

From blackwiki
Jump to navigation Jump to search
blackwiki>Edokter
(start=3)
blackwiki>Mr. Stradivarius
(start rewriting the test cases)
Line 1: Line 1:
 
-- Unit tests for [[Module:List]]. Click talk page to run tests.
 
-- Unit tests for [[Module:List]]. Click talk page to run tests.
local p = require('Module:UnitTests')
 
  
function p:test_bulleted()
+
local mList = require('Module:List/sandbox')
    self:preprocess_equals_many('{{#invoke:List/sandbox|bulleted', '}}', {
+
local ScribuntoUnit = require('Module:ScribuntoUnit')
{'', ''},
+
local suite = ScribuntoUnit:new()
{'|foo', '<div><ul><li>foo</li></ul></div>'},
+
 
{'|foo|bar', '<div><ul><li>foo</li><li>bar</li></ul></div>'},
+
--------------------------------------------------------------------------------
{'|foo|bar|class=plainlinks', '<div class="plainlinks"><ul><li>foo</li><li>bar</li></ul></div>'},
+
-- Default values
{'|foo|bar|style=font-weight: bold', '<div style="font-weight: bold;"><ul><li>foo</li><li>bar</li></ul></div>'},
+
--------------------------------------------------------------------------------
{'|foo|bar|list_style=font-weight: bold', '<div><ul style="font-weight: bold;"><li>foo</li><li>bar</li></ul></div>'},
+
 
{'|foo|bar|item_style=font-weight: bold', '<div><ul><li style="font-weight: bold;">foo</li><li style="font-weight: bold;">bar</li></ul></div>'},
+
local d = {}
{'|foo|bar|item_style1=font-weight: bold', '<div><ul><li style="font-weight: bold;">foo</li><li>bar</li></ul></div>'},
+
 
{'|foo|bar|item_style2=font-weight: bold', '<div><ul><li>foo</li><li style="font-weight: bold;">bar</li></ul></div>'},
+
-- Function names
{'|foo|bar|ul_style=font-weight: bold', '<div><ul style="font-weight: bold;"><li>foo</li><li>bar</li></ul></div>'},
+
d.bulletedFunc = 'bulleted'
{'|foo|bar|ol_style=font-weight: bold', '<div><ul style="font-weight: bold;"><li>foo</li><li>bar</li></ul></div>'},
+
d.unbulletedFunc = 'unbulleted'
{'|foo|bar|li_style=font-weight: bold', '<div><ul><li style="font-weight: bold;">foo</li><li style="font-weight: bold;">bar</li></ul></div>'},
+
d.horizontalFunc = 'horizontal'
{'|foo|bar|li_style1=font-weight: bold', '<div><ul><li style="font-weight: bold;">foo</li><li>bar</li></ul></div>'},
+
d.orderedFunc = 'ordered'
{'|foo|bar|li_style2=font-weight: bold', '<div><ul><li>foo</li><li style="font-weight: bold;">bar</li></ul></div>'},
+
d.horizontalOrderedFunc = 'horizontal_ordered'
{'|foo|bar|type=i', '<div><ul><li>foo</li><li>bar</li></ul></div>'},
+
 
{'|foo|bar|list_style_type=lower-greek', '<div><ul><li>foo</li><li>bar</li></ul></div>'},
+
-- List items
{'|foo|bar|list-style-type=lower-greek', '<div><ul><li>foo</li><li>bar</li></ul></div>'},
+
d.item1 = 'Foo'
{'|foo|bar|start=3', '<div><ul start="3"><li>foo</li><li>bar</li></ul></div>'},
+
d.item2 = 'Bar'
{'|foo|bar|indent=2', '<div><ul><li>foo</li><li>bar</li></ul></div>'},
+
 
})
+
-- Styles
end
+
d.arbitraryStyle = 'text-align: right'
 +
 
 +
-- Parameter names
 +
d.itemStyleParam1 = 'item_style1'
  
function p:test_unbulleted()
+
--------------------------------------------------------------------------------
    self:preprocess_equals_many('{{#invoke:List/sandbox|unbulleted', '}}', {
+
-- Test makeListData
{'', ''},
+
--------------------------------------------------------------------------------
{'|foo', '<div class="plainlist"><ul><li>foo</li></ul></div>'},
 
{'|foo|bar', '<div class="plainlist"><ul><li>foo</li><li>bar</li></ul></div>'},
 
{'|foo|bar|class=plainlinks', '<div class="plainlist plainlinks"><ul><li>foo</li><li>bar</li></ul></div>'},
 
{'|foo|bar|style=font-weight: bold', '<div class="plainlist" style="font-weight: bold;"><ul><li>foo</li><li>bar</li></ul></div>'},
 
{'|foo|bar|list_style=font-weight: bold', '<div class="plainlist"><ul style="font-weight: bold;"><li>foo</li><li>bar</li></ul></div>'},
 
{'|foo|bar|item_style=font-weight: bold', '<div class="plainlist"><ul><li style="font-weight: bold;">foo</li><li style="font-weight: bold;">bar</li></ul></div>'},
 
{'|foo|bar|item_style1=font-weight: bold', '<div class="plainlist"><ul><li style="font-weight: bold;">foo</li><li>bar</li></ul></div>'},
 
{'|foo|bar|item_style2=font-weight: bold', '<div class="plainlist"><ul><li>foo</li><li style="font-weight: bold;">bar</li></ul></div>'},
 
{'|foo|bar|ul_style=font-weight: bold', '<div class="plainlist"><ul style="font-weight: bold;"><li>foo</li><li>bar</li></ul></div>'},
 
{'|foo|bar|ol_style=font-weight: bold', '<div class="plainlist"><ul style="font-weight: bold;"><li>foo</li><li>bar</li></ul></div>'},
 
{'|foo|bar|li_style=font-weight: bold', '<div class="plainlist"><ul><li style="font-weight: bold;">foo</li><li style="font-weight: bold;">bar</li></ul></div>'},
 
{'|foo|bar|li_style1=font-weight: bold', '<div class="plainlist"><ul><li style="font-weight: bold;">foo</li><li>bar</li></ul></div>'},
 
{'|foo|bar|li_style2=font-weight: bold', '<div class="plainlist"><ul><li>foo</li><li style="font-weight: bold;">bar</li></ul></div>'},
 
{'|foo|bar|type=i', '<div class="plainlist"><ul><li>foo</li><li>bar</li></ul></div>'},
 
{'|foo|bar|list_style_type=lower-greek', '<div class="plainlist"><ul><li>foo</li><li>bar</li></ul></div>'},
 
{'|foo|bar|list-style-type=lower-greek', '<div class="plainlist"><ul><li>foo</li><li>bar</li></ul></div>'},
 
{'|foo|bar|start=3', '<div class="plainlist"><ul start="3"><li>foo</li><li>bar</li></ul></div>'},
 
{'|foo|bar|indent=2', '<div class="plainlist"><ul><li>foo</li><li>bar</li></ul></div>'},
 
})
 
end
 
  
function p:test_horizontal()
+
function suite:testDataBlank()
    self:preprocess_equals_many('{{#invoke:List/sandbox|horizontal', '}}', {
+
local data = mList.makeListData(d.bulletedFunc, {})
{'', ''},
+
self:assertEquals('table', type(data))
{'|foo', '<div class="hlist" style="margin-left:0em;"><ul><li>foo</li></ul></div>'},
 
{'|foo|bar', '<div class="hlist" style="margin-left:0em;"><ul><li>foo</li><li>bar</li></ul></div>'},
 
{'|foo|bar|class=plainlinks', '<div class="hlist plainlinks" style="margin-left:0em;"><ul><li>foo</li><li>bar</li></ul></div>'},
 
{'|foo|bar|style=font-weight: bold', '<div class="hlist" style="margin-left:0em;font-weight: bold;"><ul><li>foo</li><li>bar</li></ul></div>'},
 
{'|foo|bar|list_style=font-weight: bold', '<div class="hlist" style="margin-left:0em;"><ul style="font-weight: bold;"><li>foo</li><li>bar</li></ul></div>'},
 
{'|foo|bar|item_style=font-weight: bold', '<div class="hlist" style="margin-left:0em;"><ul><li style="font-weight: bold;">foo</li><li style="font-weight: bold;">bar</li></ul></div>'},
 
{'|foo|bar|item_style1=font-weight: bold', '<div class="hlist" style="margin-left:0em;"><ul><li style="font-weight: bold;">foo</li><li>bar</li></ul></div>'},
 
{'|foo|bar|item_style2=font-weight: bold', '<div class="hlist" style="margin-left:0em;"><ul><li>foo</li><li style="font-weight: bold;">bar</li></ul></div>'},
 
{'|foo|bar|ul_style=font-weight: bold', '<div class="hlist" style="margin-left:0em;"><ul style="font-weight: bold;"><li>foo</li><li>bar</li></ul></div>'},
 
{'|foo|bar|ol_style=font-weight: bold', '<div class="hlist" style="margin-left:0em;"><ul style="font-weight: bold;"><li>foo</li><li>bar</li></ul></div>'},
 
{'|foo|bar|li_style=font-weight: bold', '<div class="hlist" style="margin-left:0em;"><ul><li style="font-weight: bold;">foo</li><li style="font-weight: bold;">bar</li></ul></div>'},
 
{'|foo|bar|li_style1=font-weight: bold', '<div class="hlist" style="margin-left:0em;"><ul><li style="font-weight: bold;">foo</li><li>bar</li></ul></div>'},
 
{'|foo|bar|li_style2=font-weight: bold', '<div class="hlist" style="margin-left:0em;"><ul><li>foo</li><li style="font-weight: bold;">bar</li></ul></div>'},
 
{'|foo|bar|type=i', '<div class="hlist" style="margin-left:0em;"><ul><li>foo</li><li>bar</li></ul></div>'},
 
{'|foo|bar|list_style_type=lower-greek', '<div class="hlist" style="margin-left:0em;"><ul><li>foo</li><li>bar</li></ul></div>'},
 
{'|foo|bar|list-style-type=lower-greek', '<div class="hlist" style="margin-left:0em;"><ul><li>foo</li><li>bar</li></ul></div>'},
 
{'|foo|bar|start=3', '<div class="hlist" style="margin-left:0em;"><ul start="3"><li>foo</li><li>bar</li></ul></div>'},
 
{'|foo|bar|indent=2', '<div class="hlist" style="margin-left:3.2em;"><ul><li>foo</li><li>bar</li></ul></div>'},
 
})
 
 
end
 
end
  
function p:test_ordered()
+
function suite:testDataOneItem()
    self:preprocess_equals_many('{{#invoke:List/sandbox|ordered', '}}', {
+
local data = mList.makeListData(d.bulletedFunc, {d.item1})
{'', ''},
+
self:assertEquals(d.item1, data.items[1].content)
{'|foo', '<div><ol><li>foo</li></ol></div>'},
 
{'|foo|bar', '<div><ol><li>foo</li><li>bar</li></ol></div>'},
 
{'|foo|bar|class=plainlinks', '<div class="plainlinks"><ol><li>foo</li><li>bar</li></ol></div>'},
 
{'|foo|bar|style=font-weight: bold', '<div style="font-weight: bold;"><ol><li>foo</li><li>bar</li></ol></div>'},
 
{'|foo|bar|list_style=font-weight: bold', '<div><ol style="font-weight: bold;"><li>foo</li><li>bar</li></ol></div>'},
 
{'|foo|bar|item_style=font-weight: bold', '<div><ol><li style="font-weight: bold;">foo</li><li style="font-weight: bold;">bar</li></ol></div>'},
 
{'|foo|bar|item_style1=font-weight: bold', '<div><ol><li style="font-weight: bold;">foo</li><li>bar</li></ol></div>'},
 
{'|foo|bar|item_style2=font-weight: bold', '<div><ol><li>foo</li><li style="font-weight: bold;">bar</li></ol></div>'},
 
{'|foo|bar|ul_style=font-weight: bold', '<div><ol style="font-weight: bold;"><li>foo</li><li>bar</li></ol></div>'},
 
{'|foo|bar|ol_style=font-weight: bold', '<div><ol style="font-weight: bold;"><li>foo</li><li>bar</li></ol></div>'},
 
{'|foo|bar|li_style=font-weight: bold', '<div><ol><li style="font-weight: bold;">foo</li><li style="font-weight: bold;">bar</li></ol></div>'},
 
{'|foo|bar|li_style1=font-weight: bold', '<div><ol><li style="font-weight: bold;">foo</li><li>bar</li></ol></div>'},
 
{'|foo|bar|li_style2=font-weight: bold', '<div><ol><li>foo</li><li style="font-weight: bold;">bar</li></ol></div>'},
 
{'|foo|bar|type=i', '<div><ol type="i"><li>foo</li><li>bar</li></ol></div>'},
 
{'|foo|bar|list_style_type=lower-greek', '<div><ol style="list-style-type:lower-greek;"><li>foo</li><li>bar</li></ol></div>'},
 
{'|foo|bar|list-style-type=lower-greek', '<div><ol style="list-style-type:lower-greek;"><li>foo</li><li>bar</li></ol></div>'},
 
{'|foo|bar|start=3', '<div><ol start="3"><li>foo</li><li>bar</li></ol></div>'},
 
{'|foo|bar|indent=2', '<div><ol><li>foo</li><li>bar</li></ol></div>'},
 
})
 
 
end
 
end
  
function p:test_horizontal_ordered()
+
function suite:testDataTwoItems()
    self:preprocess_equals_many('{{#invoke:List/sandbox|horizontal_ordered', '}}', {
+
local data = mList.makeListData(d.bulletedFunc, {d.item1, d.item2})
{'', ''},
+
self:assertEquals(d.item1, data.items[1].content)
{'|foo', '<div class="hlist" style="margin-left:0em;"><ol><li>foo</li></ol></div>'},
+
self:assertEquals(d.item2, data.items[2].content)
{'|foo|bar', '<div class="hlist" style="margin-left:0em;"><ol><li>foo</li><li>bar</li></ol></div>'},
 
{'|foo|bar|class=plainlinks', '<div class="hlist plainlinks" style="margin-left:0em;"><ol><li>foo</li><li>bar</li></ol></div>'},
 
{'|foo|bar|style=font-weight: bold', '<div class="hlist" style="margin-left:0em;font-weight: bold;"><ol><li>foo</li><li>bar</li></ol></div>'},
 
{'|foo|bar|list_style=font-weight: bold', '<div class="hlist" style="margin-left:0em;"><ol style="font-weight: bold;"><li>foo</li><li>bar</li></ol></div>'},
 
{'|foo|bar|item_style=font-weight: bold', '<div class="hlist" style="margin-left:0em;"><ol><li style="font-weight: bold;">foo</li><li style="font-weight: bold;">bar</li></ol></div>'},
 
{'|foo|bar|item_style1=font-weight: bold', '<div class="hlist" style="margin-left:0em;"><ol><li style="font-weight: bold;">foo</li><li>bar</li></ol></div>'},
 
{'|foo|bar|item_style2=font-weight: bold', '<div class="hlist" style="margin-left:0em;"><ol><li>foo</li><li style="font-weight: bold;">bar</li></ol></div>'},
 
{'|foo|bar|ul_style=font-weight: bold', '<div class="hlist" style="margin-left:0em;"><ol style="font-weight: bold;"><li>foo</li><li>bar</li></ol></div>'},
 
{'|foo|bar|ol_style=font-weight: bold', '<div class="hlist" style="margin-left:0em;"><ol style="font-weight: bold;"><li>foo</li><li>bar</li></ol></div>'},
 
{'|foo|bar|li_style=font-weight: bold', '<div class="hlist" style="margin-left:0em;"><ol><li style="font-weight: bold;">foo</li><li style="font-weight: bold;">bar</li></ol></div>'},
 
{'|foo|bar|li_style1=font-weight: bold', '<div class="hlist" style="margin-left:0em;"><ol><li style="font-weight: bold;">foo</li><li>bar</li></ol></div>'},
 
{'|foo|bar|li_style2=font-weight: bold', '<div class="hlist" style="margin-left:0em;"><ol><li>foo</li><li style="font-weight: bold;">bar</li></ol></div>'},
 
{'|foo|bar|type=i', '<div class="hlist" style="margin-left:0em;"><ol type="i"><li>foo</li><li>bar</li></ol></div>'},
 
{'|foo|bar|list_style_type=lower-greek', '<div class="hlist" style="margin-left:0em;"><ol style="list-style-type:lower-greek;"><li>foo</li><li>bar</li></ol></div>'},
 
{'|foo|bar|list-style-type=lower-greek', '<div class="hlist" style="margin-left:0em;"><ol style="list-style-type:lower-greek;"><li>foo</li><li>bar</li></ol></div>'},
 
{'|foo|bar|start=3', '<div class="hlist" style="margin-left:0em;"><ol start="3" style="counter-reset:listitem 2;"><li>foo</li><li>bar</li></ol></div>'},
 
{'|foo|bar|indent=2', '<div class="hlist" style="margin-left:3.2em;"><ol><li>foo</li><li>bar</li></ol></div>'},
 
})
 
 
end
 
end
  
function p:test_whitespace()
+
function suite:testDataItemStyle()
    self:preprocess_equals_many('{{#invoke:List/sandbox|bulleted', '}}', {
+
local data = mList.makeListData(d.bulletedFunc, {d.item1, [d.itemStyleParam1] = d.arbitraryStyle})
{'|  foo  ', '<div><ul><li>  foo  </li></ul></div>'},
+
self:assertEquals(d.arbitraryStyle, data.items[1].style)
{'|  foo  |  bar  ', '<div><ul><li>  foo  </li><li>  bar  </li></ul></div>'},
 
{'|foo|bar', '<div><ul><li>foo</li><li>bar</li></ul></div>'},
 
{'|', ''},
 
{'|  |  ', ''},
 
{'|  |  bar  ', '<div><ul><li>  bar  </li></ul></div>'},
 
{'|foo|bar|style =  font-size: 90%  ', '<div style="font-size: 90%;"><ul><li>foo</li><li>bar</li></ul></div>'},
 
{'|foo|bar|style=', '<div><ul><li>foo</li><li>bar</li></ul></div>'},
 
}, {nowiki = true})
 
 
end
 
end
  
return p
+
return suite

Revision as of 02:33, 23 May 2014

Documentation for this module may be created at Module:List/testcases/doc

-- Unit tests for [[Module:List]]. Click talk page to run tests.

local mList = require('Module:List/sandbox')
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()

--------------------------------------------------------------------------------
-- Default values
--------------------------------------------------------------------------------

local d = {}

-- Function names
d.bulletedFunc = 'bulleted'
d.unbulletedFunc = 'unbulleted'
d.horizontalFunc = 'horizontal'
d.orderedFunc = 'ordered'
d.horizontalOrderedFunc = 'horizontal_ordered'

-- List items
d.item1 = 'Foo'
d.item2 = 'Bar'

-- Styles
d.arbitraryStyle = 'text-align: right'

-- Parameter names
d.itemStyleParam1 = 'item_style1'

--------------------------------------------------------------------------------
-- Test makeListData
--------------------------------------------------------------------------------

function suite:testDataBlank()
	local data = mList.makeListData(d.bulletedFunc, {})
	self:assertEquals('table', type(data))
end

function suite:testDataOneItem()
	local data = mList.makeListData(d.bulletedFunc, {d.item1})
	self:assertEquals(d.item1, data.items[1].content)
end

function suite:testDataTwoItems()
	local data = mList.makeListData(d.bulletedFunc, {d.item1, d.item2})
	self:assertEquals(d.item1, data.items[1].content)
	self:assertEquals(d.item2, data.items[2].content)
end

function suite:testDataItemStyle()
	local data = mList.makeListData(d.bulletedFunc, {d.item1, [d.itemStyleParam1] = d.arbitraryStyle})
	self:assertEquals(d.arbitraryStyle, data.items[1].style)
end

return suite