Modul:Smartbox/testtilfeller

Fra Wikipedia, den frie encyklopedi


-- Unit tests for [[Module:Smartbox]]. Click talk page to run tests.
local Tests = require('Module:UnitTests')
local Smartbox = require('Module:Smartbox')

function Tests:test_ucFirst()
	self:equals( 'ucFirst ""', Smartbox._ucFirst( '' ), '' )
	self:equals( 'ucFirst " "', Smartbox._ucFirst( ' ' ), ' ' )
	self:equals( 'ucFirst " foo"', Smartbox._ucFirst( ' foo' ), ' foo' )
	self:equals( 'ucFirst "foo"', Smartbox._ucFirst( 'foo' ), 'Foo' )
end

function Tests:test_escape()
	self:equals( 'Escape ""', Smartbox._escape( '' ), '' )
	self:equals( 'Escape " "', Smartbox._escape( ' ' ), '_' )
	self:equals( 'Escape "foo-bar-baz"', Smartbox._escape( 'foo-bar-baz' ), 'foo-bar-baz' )
	self:equals( 'Escape "foo bar baz"', Smartbox._escape( 'foo bar baz' ), 'foo_bar_baz' )
	self:equals( 'Escape "foo+bar+baz"', Smartbox._escape( 'foo+bar+baz' ), 'foo$2Bbar$2Bbaz' )
	self:equals( 'Escape "foo>bar>baz"', Smartbox._escape( 'foo>bar>baz' ), 'foo$3Ebar$3Ebaz' )
	self:equals( 'Escape "foo#bar#baz"', Smartbox._escape( 'foo#bar#baz' ), 'foo$23bar$23baz' )
	self:equals( 'Escape "foo&bar;baz"', Smartbox._escape( 'foo&bar;baz' ), 'foo$26bar$3Bbaz' )
	self:equals( 'Escape "foo,bar,baz"', Smartbox._escape( 'foo,bar,baz' ), 'foo$2Cbar$2Cbaz' )
	self:equals( 'Escape "foo{bar}baz"', Smartbox._escape( 'foo{bar}baz' ), 'foo$7Bbar$7Dbaz' )
	self:equals( 'Escape "foo(bar)baz"', Smartbox._escape( 'foo{bar}baz' ), 'foo$7Bbar$7Dbaz' )
end

function Tests:test_merge()
	local t1 = { 'ping', 'pong', ['test'] = 1 }
	local t2 = { 'foo', 'bar', 'baz' }
	self:equals( 'Merge t1, {}', Smartbox._merge( t1, {} ), t1 )
	self:equals( 'Merge t2, {}', Smartbox._merge( t2, {} ), t2 )
	self:equals_deep( 'Merge t1, t2', Smartbox._merge( t1, t2 ), { 'ping', 'pong', 'foo', 'bar', 'baz', ['test'] = 1 } )
end

function Tests:test_parse_number()
	local params = { type = 'number', classes = { 'ping', 'pong' } }
	self:equals( [[Parse ""]], Smartbox._parse( [[]], params, 'qqx' ), [[(smartbox-ping-empty-number)]] )
	self:equals( [[Parse " "]], Smartbox._parse( [[ ]], params, 'qqx' ), [[(smartbox-ping-empty-number)]] )
	self:equals( [[Parse "3,14"]], Smartbox._parse( '3,14', params, 'qqx' ), [[(smartbox-ping-single-number: 3.14)]] )
	self:equals( [[Parse "foo 3,14"]], Smartbox._parse( 'foo 3,14', params, 'qqx' ), [[(smartbox-ping-prefix-number: foo, 3.14)]] )
	self:equals( [[Parse "3,14 bar"]], Smartbox._parse( '3,14 bar', params, 'qqx' ), [[(smartbox-ping-suffix-number: 3.14, bar)]] )
	self:equals( [[Parse "foo 3,14 bar"]], Smartbox._parse( 'foo 3,14 bar', params, 'qqx' ), [[(smartbox-ping-circumfix-number: foo, 3.14, bar)]] )
	self:equals( [[Parse "a"]], Smartbox._parse( 'a', params, 'qqx' ), [[(smartbox-ping-failed-number)]] )
	self:equals( [[Parse "++"]], Smartbox._parse( '++', params, 'qqx' ), [[(smartbox-ping-failed-number)]] )
	self:equals( [[Parse "foo ++"]], Smartbox._parse( 'foo ++', params, 'qqx' ), [[(smartbox-ping-failed-number)]] )
	self:equals( [[Parse "++ bar"]], Smartbox._parse( '++ bar', params, 'qqx' ), [[(smartbox-ping-failed-number)]] )
	self:equals( [[Parse "foo ++ bar"]], Smartbox._parse( 'foo ++ bar', params, 'qqx' ), [[(smartbox-ping-failed-number)]] )
	-- This is a scary test on units, only using a single unit that should be pretty safe
	self:equals( [[Parse "3,14 km"]], Smartbox._parse( '3,14 km', params, 'qqx' ), "(smartbox-ping-suffix-number: 3.14, [[kilometer|km]])" )
end

function Tests:test_parse_unknown()
	local params = { type = 'unknown', classes = { 'ping', 'pong' } }
	self:equals( [[Parse ""]], Smartbox._parse( [[]], params, 'qqx' ), [[(smartbox-ping-empty-unknown)]] )
	self:equals( [[Parse " "]], Smartbox._parse( [[ ]], params, 'qqx' ), [[(smartbox-ping-empty-unknown)]] )
	self:equals( [[Parse "foo"]], Smartbox._parse( 'foo', params, 'qqx' ), [[(smartbox-ping-single-unknown: foo)]] )
	self:equals( [[Parse " bar "]], Smartbox._parse( ' bar ', params, 'qqx' ), [[(smartbox-ping-single-unknown: bar)]] )
	self:equals( [[Parse " bar baz "]], Smartbox._parse( ' bar baz ', params, 'qqx' ), [[(smartbox-ping-single-unknown: bar baz)]] )
	self:equals( [[Parse " < foo > "]], Smartbox._parse( ' < foo > ', params, 'qqx' ), [[(smartbox-ping-single-unknown: &#60; foo &#62;)]] )
end

function Tests:test_parse_string()
	local params = { type = 'string', classes = { 'ping', 'pong' } }
	self:equals( [[Parse ""]], Smartbox._parse( [[]], params, 'qqx' ), [[(smartbox-ping-empty-string)]] )
	self:equals( [[Parse " "]], Smartbox._parse( [[ ]], params, 'qqx' ), [[(smartbox-ping-empty-string)]] )
	self:equals( [[Parse "foo"]], Smartbox._parse( 'foo', params, 'qqx' ), [[(smartbox-ping-single-string: foo)]] )
	self:equals( [[Parse " bar "]], Smartbox._parse( ' bar ', params, 'qqx' ), [[(smartbox-ping-single-string: bar)]] )
	self:equals( [[Parse " bar baz "]], Smartbox._parse( ' bar baz ', params, 'qqx' ), [[(smartbox-ping-single-string: bar baz)]] )
	self:equals( [[Parse " < foo > "]], Smartbox._parse( ' < foo > ', params, 'qqx' ), [[(smartbox-ping-single-string: &#60; foo &#62;)]] )
end

function Tests:test_parse_url()
	local params = { type = 'url', classes = { 'ping', 'pong' } }
	self:equals( [[Parse ""]], Smartbox._parse( [[]], params, 'qqx' ), [[(smartbox-ping-empty-url)]] )
	self:equals( [[Parse " "]], Smartbox._parse( [[ ]], params, 'qqx' ), [[(smartbox-ping-empty-url)]] )
	self:equals( [[Parse "http://example.com"]], Smartbox._parse( [[foo]], params, 'qqx' ), [[(smartbox-ping-single-url: foo)]] )
	-- This isn't a valid uri, still it passes. It seems like this has something to do with the URI object. Commented out for now.
	-- self:equals( [[Parse "foo / / bar"]], Smartbox._parse( [[foo / / bar]], params, 'qqx' ), [[(smartbox-ping-failed-url)]] )
end

function Tests:test_parse_date()
	local params = { type = 'date', classes = { 'ping', 'pong' } }
	self:equals( [[Parse ""]], Smartbox._parse( [[]], params, 'qqx' ), [[(smartbox-ping-empty-date)]] )
	self:equals( [[Parse " "]], Smartbox._parse( [[ ]], params, 'qqx' ), [[(smartbox-ping-empty-date)]] )
	self:equals( [[Parse "1. jan. 1970"]], Smartbox._parse( [[1. jan. 1970]], params, 'qqx' ), [[(smartbox-ping-single-date: 1970-01-01T00:00:00)]] )
end

function Tests:test_parse_content()
	local params = { type = 'content', classes = { 'ping', 'pong' } }
	self:equals( [[Parse ""]], Smartbox._parse( [[]], params, 'qqx' ), [[(smartbox-ping-empty-content)]] )
	self:equals( [[Parse " "]], Smartbox._parse( [[ ]], params, 'qqx' ), [[(smartbox-ping-empty-content)]] )
	self:equals( [[Parse "foo ''bar'' baz"]], Smartbox._parse( [[foo ''bar'' baz]], params, 'qqx' ), [[(smartbox-ping-single-content: foo ''bar'' baz)]] )
end

function Tests:test_parse_boolean()
	local params = { type = 'boolean', classes = { 'ping', 'pong' } }
	self:equals( [[Parse ""]], Smartbox._parse( [[]], params, 'qqx' ), [[(smartbox-ping-empty-boolean)]] )
	self:equals( [[Parse " "]], Smartbox._parse( [[ ]], params, 'qqx' ), [[(smartbox-ping-empty-boolean)]] )
	self:equals( [[Parse "0"]], Smartbox._parse( '0', params, 'qqx' ), [[(smartbox-ping-single-boolean: 0)]] )
	self:equals( [[Parse "1"]], Smartbox._parse( '1', params, 'qqx' ), [[(smartbox-ping-single-boolean: 1)]] )
	self:equals( [[Parse "a"]], Smartbox._parse( 'a', params, 'qqx' ), [[(smartbox-ping-failed-boolean)]] )
end

function Tests:test_parse_wiki_user()
	local params = { type = 'wiki-user-name', classes = { 'ping', 'pong' } }
	self:equals( [[Parse ""]], Smartbox._parse( [[]], params, 'qqx' ), [[(smartbox-ping-empty-wiki-user-name)]] )
	self:equals( [[Parse " "]], Smartbox._parse( [[ ]], params, 'qqx' ), [[(smartbox-ping-empty-wiki-user-name)]] )
	self:equals( [[Parse "foo"]], Smartbox._parse( 'foo', params, 'qqx' ), [[(smartbox-ping-single-wiki-user-name: foo)]] )
	self:equals( [[Parse " bar "]], Smartbox._parse( ' bar ', params, 'qqx' ), [[(smartbox-ping-single-wiki-user-name: bar)]] )
	self:equals( [[Parse " bar baz "]], Smartbox._parse( ' bar baz ', params, 'qqx' ), [[(smartbox-ping-single-wiki-user-name: bar baz)]] )
	self:equals( [[Parse " category:baz "]], Smartbox._parse( ' category:baz ', params, 'qqx' ), [[(smartbox-ping-failed-wiki-user-name)]] )
	self:equals( [[Parse " bar/baz "]], Smartbox._parse( ' bar/baz ', params, 'qqx' ), [[(smartbox-ping-failed-wiki-user-name)]] )
end

function Tests:test_parse_wiki_page()
	local params = { type = 'wiki-page-name', classes = { 'ping', 'pong' } }
	self:equals( [[Parse ""]], Smartbox._parse( [[]], params, 'qqx' ), [[(smartbox-ping-empty-wiki-page-name)]] )
	self:equals( [[Parse " "]], Smartbox._parse( [[ ]], params, 'qqx' ), [[(smartbox-ping-empty-wiki-page-name)]] )
	self:equals( [[Parse "foo"]], Smartbox._parse( 'foo', params, 'qqx' ), [[(smartbox-ping-single-wiki-page-name: foo)]] )
	self:equals( [[Parse " bar "]], Smartbox._parse( ' bar ', params, 'qqx' ), [[(smartbox-ping-single-wiki-page-name: bar)]] )
	self:equals( [[Parse " bar baz "]], Smartbox._parse( ' bar baz ', params, 'qqx' ), [[(smartbox-ping-single-wiki-page-name: bar baz)]] )
end

function Tests:test_parse_wiki_file()
	local params = { type = 'wiki-file-name', classes = { 'ping', 'pong' } }
	self:equals( [[Parse ""]], Smartbox._parse( [[]], params, 'qqx' ), [[(smartbox-ping-empty-wiki-file-name)]] )
	self:equals( [[Parse " "]], Smartbox._parse( [[ ]], params, 'qqx' ), [[(smartbox-ping-empty-wiki-file-name)]] )
	self:equals( [[Parse "foo"]], Smartbox._parse( 'foo', params, 'qqx' ), [[(smartbox-ping-single-wiki-file-name: foo)]] )
	self:equals( [[Parse " bar "]], Smartbox._parse( ' bar ', params, 'qqx' ), [[(smartbox-ping-single-wiki-file-name: bar)]] )
	self:equals( [[Parse " bar baz "]], Smartbox._parse( ' bar baz ', params, 'qqx' ), [[(smartbox-ping-single-wiki-file-name: bar baz)]] )
	self:equals( [[Parse " category:baz "]], Smartbox._parse( ' category:baz ', params, 'qqx' ), [[(smartbox-ping-failed-wiki-file-name)]] )
	self:equals( [[Parse " bar/baz "]], Smartbox._parse( ' bar/baz ', params, 'qqx' ), [[(smartbox-ping-single-wiki-file-name: bar/baz)]] )
end

function Tests:test_parse_wiki_template()
	local params = { type = 'wiki-template-name', classes = { 'ping', 'pong' } }
	self:equals( [[Parse ""]], Smartbox._parse( [[]], params, 'qqx' ), [[(smartbox-ping-empty-wiki-template-name)]] )
	self:equals( [[Parse " "]], Smartbox._parse( [[ ]], params, 'qqx' ), [[(smartbox-ping-empty-wiki-template-name)]] )
	self:equals( [[Parse "foo"]], Smartbox._parse( 'foo', params, 'qqx' ), [[(smartbox-ping-single-wiki-template-name: foo)]] )
	self:equals( [[Parse " bar "]], Smartbox._parse( ' bar ', params, 'qqx' ), [[(smartbox-ping-single-wiki-template-name: bar)]] )
	self:equals( [[Parse " bar baz "]], Smartbox._parse( ' bar baz ', params, 'qqx' ), [[(smartbox-ping-single-wiki-template-name: bar baz)]] )
	self:equals( [[Parse " category:baz "]], Smartbox._parse( ' category:baz ', params, 'qqx' ), [[(smartbox-ping-failed-wiki-template-name)]] )
end

return Tests