From Wikipedia, the free encyclopedia

local mClassMask = require('Module:Class mask/sandbox')

local ScribuntoUnit = require('Module:ScribuntoUnit')

local suite = ScribuntoUnit:new()

local frame = mw.getCurrentFrame()

local lang = mw.language.getContentLanguage()



-------------------------------------------------------------------------------

-- Helper functions

-------------------------------------------------------------------------------

local function classMask(args, page)

	local title = page and mw.title.new(page).talkPageTitle

	return mClassMask._main(args, title)

end



local function copyTable(t1, t2)

	for k, v in pairs(t2) do

		t1k = v

	end

end



local function unity(t1, t2)

	local ret = {}

	copyTable(ret, t1)

	copyTable(ret, t2)

	return ret

end



-------------------------------------------------------------------------------

-- Custom assert methods

-------------------------------------------------------------------------------

function suite:assertGradeEquals(expected, grade, args, page)

	self:assertEquals(expected, classMask(unity(args, {grade}), page))

	self:assertEquals(expected, classMask(unity(args, {grade:upper()}), page))

	self:assertEquals(expected, classMask(unity(args, {grade:lower()}), page))

end



-------------------------------------------------------------------------------

-- Default scale tests

-------------------------------------------------------------------------------

local function makeDefaultScaleTests(t)

	suite'test_' .. t.name = function (self)

		self:assertGradeEquals(t.expected, t.trigger, {}, t.page)

	end

	suite'test_' .. t.name .. '_no' = function (self)

		self:assertGradeEquals('', t.trigger, {[t.param = 'no'}, t.page)

	end

	suite'test_' .. t.name .. '_on_redirect' = function (self)

		self:assertGradeEquals('Redirect', t.trigger, {FQS = 'yes'}, 'Abdul, Paula')

	end



end

makeDefaultScaleTests{name = 'FA', expected = 'FA', trigger = 'FA', param = 'fa', page = 'Manta ray'}

makeDefaultScaleTests{name = 'FL', expected = 'FL', trigger = 'FL', param = 'fl', page = 'List of pinnipeds'}

makeDefaultScaleTests{name = 'A', expected = 'A', trigger = 'A', param = 'a', page = 'Financial regulation in India'}

makeDefaultScaleTests{name = 'GA', expected = 'GA', trigger = 'GA', param = 'ga', page = 'Risk parity'}

makeDefaultScaleTests{name = 'B', expected = 'B', trigger = 'B', param = 'b', page = 'Economic history of Canada'}

makeDefaultScaleTests{name = 'C', expected = 'C', trigger = 'C', param = 'c', page = '3 Inches of Blood'}

makeDefaultScaleTests{name = 'start', expected = 'Start', trigger = 'Start', param = 'start', page = 'A Black Moon Broods Over Lemuria'}

makeDefaultScaleTests{name = 'stub', expected = 'Stub', trigger = 'Stub', param = 'stub', page = '3 & 3 Quarters'}

makeDefaultScaleTests{name = 'list', expected = 'List', trigger = 'List', param = 'list', page = 'Hit Machine'}



-------------------------------------------------------------------------------

-- Full quality scale grade tests

-------------------------------------------------------------------------------

local function makeFQSTests(t)

	suite'test_' .. t.name .. '_default' = function (self)

		self:assertGradeEquals('NA', t.trigger, {}, t.page)

	end

	suite'test_' .. t.name .. '_activated' = function (self)

		self:assertGradeEquals(t.expected, t.trigger, {[t.param = 'yes'}, t.page)

	end

	if t.aliases then

		suite'test_' .. t.name .. '_aliases' = function (self)

			for _, alias in ipairs(t.aliases) do

				self:assertGradeEquals(t.expected, alias, {[t.param = 'yes'}, t.page)

			end

		end

	end

	suite'test_' .. t.name .. '_FQS' = function (self)

		self:assertGradeEquals(t.expected, t.trigger, {FQS = 'yes'}, t.page)

	end

end



makeFQSTests{name = 'file', expected = 'File', param = 'file', trigger = 'File', aliases = {'Image', 'Img'}, page = 'File:19 Tom Lynch.png'}

makeFQSTests{name = 'category', expected = 'Category', param = 'category', trigger = 'Category', aliases = {'Cat', 'Categ'}, page = 'Category talk:20th-century Australian male musicians'}

makeFQSTests{name = 'disambig', expected = 'Disambig', param = 'disambig', trigger = 'Disambig', aliases = {'Disambiguation', 'Disamb', 'Dab'}, page = 'Barossa'}

makeFQSTests{name = 'portal', expected = 'Portal', param = 'portal', trigger = 'Portal', page = 'Portal:Oceania'}

makeFQSTests{name = 'template', expected = 'Template', param = 'template', trigger = 'Template', aliases = {'Temp', 'Tpl', 'Templ'}, page = 'Template:User from Tuvalu'}

makeFQSTests{name = 'project', expected = 'Project', param = 'project', trigger = 'Project', page = 'Wikipedia:WikiProject Tonga'}

makeFQSTests{name = 'draft', expected = 'Draft', param = 'draft', trigger = 'Draft', page = 'Draft:Soseala Tinilau'}

makeFQSTests{name = 'redirect', expected = 'Redirect', param = 'redirect', trigger = 'Redirect', aliases = {'Red', 'Redir'}, page = 'Akilisi Pohiva'}



-------------------------------------------------------------------------------

-- Help tests

-------------------------------------------------------------------------------

function suite:test_help_default()

	self:assertGradeEquals('NA', 'Help', {}, 'Help:Footnotes')

end



function suite:test_help_activated()

	self:assertGradeEquals('Help', 'Help', {help = 'yes'}, 'Help:Footnotes')

end



function suite:test_help_FQS()

	self:assertGradeEquals('NA', 'Help', {FQS = 'yes'}, 'Help:Footnotes')

end



-------------------------------------------------------------------------------

-- FM tests

-------------------------------------------------------------------------------

function suite:test_FM_default()

	self:assertGradeEquals('NA', 'FM', {}, 'File:Alamo pano.jpg')

end

function suite:test_FM_activated()

	self:assertGradeEquals('FM', 'FM', {fm = 'yes'}, 'File:Alamo pano.jpg')

end

function suite:test_FM_file_activated()

	self:assertGradeEquals('File', 'FM', {file = 'yes'}, 'File:Alamo pano.jpg')

end

function suite:test_FM_file_FQS()

	self:assertGradeEquals('FM', 'FM', {FQS = 'yes'}, 'File:Alamo pano.jpg')

end

function suite:test_FM_file_overridden()

	self:assertGradeEquals('FM', 'FM', {file = '', FQS = 'yes'}, 'File:Alamo pano.jpg')

end



-------------------------------------------------------------------------------

-- Module tests

-------------------------------------------------------------------------------

function suite:test_module_default()

	self:assertGradeEquals('NA', 'module', {})

end

function suite:test_module_activated()

	self:assertGradeEquals('NA', 'module', {module = 'yes'})

end

function suite:test_module_template_activated()

	self:assertGradeEquals('Template', 'Module', {template = 'yes'})

end

function suite:test_module_template_FQS()

	self:assertGradeEquals('Template', 'Module', {FQS = 'yes'})

end

function suite:test_module_template_overridden()

	self:assertGradeEquals('NA', 'module', {template = '', FQS = 'yes'})

end



-------------------------------------------------------------------------------

-- Undefined tests

-------------------------------------------------------------------------------

function suite:test_undefined()

	self:assertEquals('¬', classMask{})

end

function suite:test_undefined_explicit()

	self:assertEquals('¬', classMask{'¬'})

end



-------------------------------------------------------------------------------

-- Default grade tests

-------------------------------------------------------------------------------

local function makeDefaultTests(t)

	suite'test_default_' .. t.name .. '_inactive' = function (self)

		self:assertGradeEquals('NA', 'Foo', {}, t.page)

	end

	suite'test_default_' .. t.name .. '_active' = function (self)

		self:assertGradeEquals(t.expected, 'Foo', {[t.param = 'yes'}, t.page)

	end

	suite'test_default_' .. t.name .. '_FQS' = function (self)

		self:assertGradeEquals(t.FQSexpected or t.expected, 'Foo', {FQS = 'yes'}, t.page)

	end

	suite'test_default_' .. t.name .. '_FQS_overridden' = function (self)

		self:assertGradeEquals(t.FQSexpected or 'NA', 'Foo', {[t.param = '', FQS = 'yes'}, t.page)

	end

end



makeDefaultTests{name = 'user', expected = 'User', param = 'user', page = 'User talk:Foo', FQSexpected = 'NA'}

makeDefaultTests{name = 'mediawiki', expected = 'NA', param = 'mediawiki', page = 'MediaWiki talk:Foo'}

makeDefaultTests{name = 'timedtext', expected = 'File', param = 'file', page = 'TimedText talk:Foo'}

makeDefaultTests{name = 'module', expected = 'Template', param = 'template', page = 'Module talk:Foo'}

makeDefaultTests{name = 'file', expected = 'File', param = 'file', page = 'File talk:Foo.png'}

makeDefaultTests{name = 'category', expected = 'Category', param = 'category',  page = 'Category talk:Foo'}

makeDefaultTests{name = 'portal', expected = 'Portal',   param = 'portal',    page = 'Portal talk:Foo'}

makeDefaultTests{name = 'template', expected = 'Template', param = 'template',  page = 'Template talk:Foo'}

makeDefaultTests{name = 'project', expected = 'Project',  param = 'project',   page = 'Wikipedia talk:Foo2'}

makeDefaultTests{name = 'draft', expected = 'Draft', param = 'draft', page = 'Draft talk:Foo'}

makeDefaultTests{name = 'help', expected = 'Help',	param = 'help', page = 'Help talk:Foo', FQSexpected = 'NA'}

makeDefaultTests{name = 'timedtext_file', expected = 'NA', param = 'timedtext', page = 'TimedText talk:Foo', FQSexpected = 'File'}

makeDefaultTests{name = 'module_template', expected = 'NA', param = 'module', page = 'Module talk:Foo', FQSexpected = 'Template'}



function suite:test_default_other_namespace()

	self:assertGradeEquals('', 'Foo', {}, 'Talk:Foo2')

end

function suite:test_default_upper_exists()

	self:assertGradeEquals('Some grade', 'Foo', {FOO = 'Some grade'}, 'Phil Ouellette')

end

function suite:test_default_lower_exists()

	self:assertGradeEquals('Foo', 'foO', {foo = 'yes'}, 'Phil Ouellette')

end

function suite:test_default_lower_overridden()

	self:assertGradeEquals('Some grade', 'Foo', {foo = 'yes', FOO = 'Some grade'}, 'Phil Ouellette')

end

function suite:test_default_empty_exists()

	self:assertGradeEquals('Some grade', '', {['' = 'Some grade'}, 'Phil Ouellette')

end

function suite:test_default_blank_exists()

	self:assertGradeEquals('Some grade', '  ', {['' = 'Some grade'}, 'Phil Ouellette')

end

function suite:test_auto_disambig()

	self:assertGradeEquals('Disambig', '', {FQS='yes'}, 'Talk:Resilience')

end

function suite:test_auto_disambig2()

	self:assertGradeEquals('Disambig', '', {disambig='yes'}, 'Talk:0K')

end

function suite:test_auto_disambig3()

	self:assertGradeEquals('NA', '', {}, "Talk:St. Paul's Cathedral (disambiguation)")

end

function suite:test_soft_redirect()

	self:assertGradeEquals('NA', '', {}, "'Murica")

end



-------------------------------------------------------------------------------

-- Other tests

-------------------------------------------------------------------------------

function suite:test_whitespace()

	self:assertEquals('FA', classMask({'  FA  '}, 'Phil Ouellette'))

end



return suite
From Wikipedia, the free encyclopedia

local mClassMask = require('Module:Class mask/sandbox')

local ScribuntoUnit = require('Module:ScribuntoUnit')

local suite = ScribuntoUnit:new()

local frame = mw.getCurrentFrame()

local lang = mw.language.getContentLanguage()



-------------------------------------------------------------------------------

-- Helper functions

-------------------------------------------------------------------------------

local function classMask(args, page)

	local title = page and mw.title.new(page).talkPageTitle

	return mClassMask._main(args, title)

end



local function copyTable(t1, t2)

	for k, v in pairs(t2) do

		t1k = v

	end

end



local function unity(t1, t2)

	local ret = {}

	copyTable(ret, t1)

	copyTable(ret, t2)

	return ret

end



-------------------------------------------------------------------------------

-- Custom assert methods

-------------------------------------------------------------------------------

function suite:assertGradeEquals(expected, grade, args, page)

	self:assertEquals(expected, classMask(unity(args, {grade}), page))

	self:assertEquals(expected, classMask(unity(args, {grade:upper()}), page))

	self:assertEquals(expected, classMask(unity(args, {grade:lower()}), page))

end



-------------------------------------------------------------------------------

-- Default scale tests

-------------------------------------------------------------------------------

local function makeDefaultScaleTests(t)

	suite'test_' .. t.name = function (self)

		self:assertGradeEquals(t.expected, t.trigger, {}, t.page)

	end

	suite'test_' .. t.name .. '_no' = function (self)

		self:assertGradeEquals('', t.trigger, {[t.param = 'no'}, t.page)

	end

	suite'test_' .. t.name .. '_on_redirect' = function (self)

		self:assertGradeEquals('Redirect', t.trigger, {FQS = 'yes'}, 'Abdul, Paula')

	end



end

makeDefaultScaleTests{name = 'FA', expected = 'FA', trigger = 'FA', param = 'fa', page = 'Manta ray'}

makeDefaultScaleTests{name = 'FL', expected = 'FL', trigger = 'FL', param = 'fl', page = 'List of pinnipeds'}

makeDefaultScaleTests{name = 'A', expected = 'A', trigger = 'A', param = 'a', page = 'Financial regulation in India'}

makeDefaultScaleTests{name = 'GA', expected = 'GA', trigger = 'GA', param = 'ga', page = 'Risk parity'}

makeDefaultScaleTests{name = 'B', expected = 'B', trigger = 'B', param = 'b', page = 'Economic history of Canada'}

makeDefaultScaleTests{name = 'C', expected = 'C', trigger = 'C', param = 'c', page = '3 Inches of Blood'}

makeDefaultScaleTests{name = 'start', expected = 'Start', trigger = 'Start', param = 'start', page = 'A Black Moon Broods Over Lemuria'}

makeDefaultScaleTests{name = 'stub', expected = 'Stub', trigger = 'Stub', param = 'stub', page = '3 & 3 Quarters'}

makeDefaultScaleTests{name = 'list', expected = 'List', trigger = 'List', param = 'list', page = 'Hit Machine'}



-------------------------------------------------------------------------------

-- Full quality scale grade tests

-------------------------------------------------------------------------------

local function makeFQSTests(t)

	suite'test_' .. t.name .. '_default' = function (self)

		self:assertGradeEquals('NA', t.trigger, {}, t.page)

	end

	suite'test_' .. t.name .. '_activated' = function (self)

		self:assertGradeEquals(t.expected, t.trigger, {[t.param = 'yes'}, t.page)

	end

	if t.aliases then

		suite'test_' .. t.name .. '_aliases' = function (self)

			for _, alias in ipairs(t.aliases) do

				self:assertGradeEquals(t.expected, alias, {[t.param = 'yes'}, t.page)

			end

		end

	end

	suite'test_' .. t.name .. '_FQS' = function (self)

		self:assertGradeEquals(t.expected, t.trigger, {FQS = 'yes'}, t.page)

	end

end



makeFQSTests{name = 'file', expected = 'File', param = 'file', trigger = 'File', aliases = {'Image', 'Img'}, page = 'File:19 Tom Lynch.png'}

makeFQSTests{name = 'category', expected = 'Category', param = 'category', trigger = 'Category', aliases = {'Cat', 'Categ'}, page = 'Category talk:20th-century Australian male musicians'}

makeFQSTests{name = 'disambig', expected = 'Disambig', param = 'disambig', trigger = 'Disambig', aliases = {'Disambiguation', 'Disamb', 'Dab'}, page = 'Barossa'}

makeFQSTests{name = 'portal', expected = 'Portal', param = 'portal', trigger = 'Portal', page = 'Portal:Oceania'}

makeFQSTests{name = 'template', expected = 'Template', param = 'template', trigger = 'Template', aliases = {'Temp', 'Tpl', 'Templ'}, page = 'Template:User from Tuvalu'}

makeFQSTests{name = 'project', expected = 'Project', param = 'project', trigger = 'Project', page = 'Wikipedia:WikiProject Tonga'}

makeFQSTests{name = 'draft', expected = 'Draft', param = 'draft', trigger = 'Draft', page = 'Draft:Soseala Tinilau'}

makeFQSTests{name = 'redirect', expected = 'Redirect', param = 'redirect', trigger = 'Redirect', aliases = {'Red', 'Redir'}, page = 'Akilisi Pohiva'}



-------------------------------------------------------------------------------

-- Help tests

-------------------------------------------------------------------------------

function suite:test_help_default()

	self:assertGradeEquals('NA', 'Help', {}, 'Help:Footnotes')

end



function suite:test_help_activated()

	self:assertGradeEquals('Help', 'Help', {help = 'yes'}, 'Help:Footnotes')

end



function suite:test_help_FQS()

	self:assertGradeEquals('NA', 'Help', {FQS = 'yes'}, 'Help:Footnotes')

end



-------------------------------------------------------------------------------

-- FM tests

-------------------------------------------------------------------------------

function suite:test_FM_default()

	self:assertGradeEquals('NA', 'FM', {}, 'File:Alamo pano.jpg')

end

function suite:test_FM_activated()

	self:assertGradeEquals('FM', 'FM', {fm = 'yes'}, 'File:Alamo pano.jpg')

end

function suite:test_FM_file_activated()

	self:assertGradeEquals('File', 'FM', {file = 'yes'}, 'File:Alamo pano.jpg')

end

function suite:test_FM_file_FQS()

	self:assertGradeEquals('FM', 'FM', {FQS = 'yes'}, 'File:Alamo pano.jpg')

end

function suite:test_FM_file_overridden()

	self:assertGradeEquals('FM', 'FM', {file = '', FQS = 'yes'}, 'File:Alamo pano.jpg')

end



-------------------------------------------------------------------------------

-- Module tests

-------------------------------------------------------------------------------

function suite:test_module_default()

	self:assertGradeEquals('NA', 'module', {})

end

function suite:test_module_activated()

	self:assertGradeEquals('NA', 'module', {module = 'yes'})

end

function suite:test_module_template_activated()

	self:assertGradeEquals('Template', 'Module', {template = 'yes'})

end

function suite:test_module_template_FQS()

	self:assertGradeEquals('Template', 'Module', {FQS = 'yes'})

end

function suite:test_module_template_overridden()

	self:assertGradeEquals('NA', 'module', {template = '', FQS = 'yes'})

end



-------------------------------------------------------------------------------

-- Undefined tests

-------------------------------------------------------------------------------

function suite:test_undefined()

	self:assertEquals('¬', classMask{})

end

function suite:test_undefined_explicit()

	self:assertEquals('¬', classMask{'¬'})

end



-------------------------------------------------------------------------------

-- Default grade tests

-------------------------------------------------------------------------------

local function makeDefaultTests(t)

	suite'test_default_' .. t.name .. '_inactive' = function (self)

		self:assertGradeEquals('NA', 'Foo', {}, t.page)

	end

	suite'test_default_' .. t.name .. '_active' = function (self)

		self:assertGradeEquals(t.expected, 'Foo', {[t.param = 'yes'}, t.page)

	end

	suite'test_default_' .. t.name .. '_FQS' = function (self)

		self:assertGradeEquals(t.FQSexpected or t.expected, 'Foo', {FQS = 'yes'}, t.page)

	end

	suite'test_default_' .. t.name .. '_FQS_overridden' = function (self)

		self:assertGradeEquals(t.FQSexpected or 'NA', 'Foo', {[t.param = '', FQS = 'yes'}, t.page)

	end

end



makeDefaultTests{name = 'user', expected = 'User', param = 'user', page = 'User talk:Foo', FQSexpected = 'NA'}

makeDefaultTests{name = 'mediawiki', expected = 'NA', param = 'mediawiki', page = 'MediaWiki talk:Foo'}

makeDefaultTests{name = 'timedtext', expected = 'File', param = 'file', page = 'TimedText talk:Foo'}

makeDefaultTests{name = 'module', expected = 'Template', param = 'template', page = 'Module talk:Foo'}

makeDefaultTests{name = 'file', expected = 'File', param = 'file', page = 'File talk:Foo.png'}

makeDefaultTests{name = 'category', expected = 'Category', param = 'category',  page = 'Category talk:Foo'}

makeDefaultTests{name = 'portal', expected = 'Portal',   param = 'portal',    page = 'Portal talk:Foo'}

makeDefaultTests{name = 'template', expected = 'Template', param = 'template',  page = 'Template talk:Foo'}

makeDefaultTests{name = 'project', expected = 'Project',  param = 'project',   page = 'Wikipedia talk:Foo2'}

makeDefaultTests{name = 'draft', expected = 'Draft', param = 'draft', page = 'Draft talk:Foo'}

makeDefaultTests{name = 'help', expected = 'Help',	param = 'help', page = 'Help talk:Foo', FQSexpected = 'NA'}

makeDefaultTests{name = 'timedtext_file', expected = 'NA', param = 'timedtext', page = 'TimedText talk:Foo', FQSexpected = 'File'}

makeDefaultTests{name = 'module_template', expected = 'NA', param = 'module', page = 'Module talk:Foo', FQSexpected = 'Template'}



function suite:test_default_other_namespace()

	self:assertGradeEquals('', 'Foo', {}, 'Talk:Foo2')

end

function suite:test_default_upper_exists()

	self:assertGradeEquals('Some grade', 'Foo', {FOO = 'Some grade'}, 'Phil Ouellette')

end

function suite:test_default_lower_exists()

	self:assertGradeEquals('Foo', 'foO', {foo = 'yes'}, 'Phil Ouellette')

end

function suite:test_default_lower_overridden()

	self:assertGradeEquals('Some grade', 'Foo', {foo = 'yes', FOO = 'Some grade'}, 'Phil Ouellette')

end

function suite:test_default_empty_exists()

	self:assertGradeEquals('Some grade', '', {['' = 'Some grade'}, 'Phil Ouellette')

end

function suite:test_default_blank_exists()

	self:assertGradeEquals('Some grade', '  ', {['' = 'Some grade'}, 'Phil Ouellette')

end

function suite:test_auto_disambig()

	self:assertGradeEquals('Disambig', '', {FQS='yes'}, 'Talk:Resilience')

end

function suite:test_auto_disambig2()

	self:assertGradeEquals('Disambig', '', {disambig='yes'}, 'Talk:0K')

end

function suite:test_auto_disambig3()

	self:assertGradeEquals('NA', '', {}, "Talk:St. Paul's Cathedral (disambiguation)")

end

function suite:test_soft_redirect()

	self:assertGradeEquals('NA', '', {}, "'Murica")

end



-------------------------------------------------------------------------------

-- Other tests

-------------------------------------------------------------------------------

function suite:test_whitespace()

	self:assertEquals('FA', classMask({'  FA  '}, 'Phil Ouellette'))

end



return suite

Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook