Jump to content

Module:Class mask/testcases

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Mr. Stradivarius (talk | contribs) at 05:20, 15 January 2015 (start creating test cases for Template:Class mask). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)
-- local mClassMask = require('Module:Class mask')
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()
local frame = mw.getCurrentFrame()

local function classMask(t)
	return frame:expandTemplate{title = 'Class mask', args = t}
end

for _, grade in ipairs{'FA', 'FL', 'A', 'GA', 'B', 'C'} do
	local gradeLower = grade:lower()
	suite['test' .. grade] = function(self)
		self:assertEquals(grade, classMask{grade})
		self:assertEquals(grade, classMask{gradeLower})
		self:assertEquals('', classMask{grade, [gradeLower] = 'no'})
		self:assertEquals('', classMask{gradeLower, [gradeLower] = 'no'})
	end
end

function suite:testBExtendedYes()
	local yesValues = {'yes', 'YES', 'y', 'Y', '1', 'pass', 'PASS', 'n/a', 'N/A', 'na', 'NA', '¬', 'unused', 'UNUSED'}
	for i, value in ipairs(yesValues) do
		self:assertEquals('B', classMask{'B', b1 = value, b2 = value, b3 = value, b4 = value, b5 = value, b6 = value})
		self:assertEquals('B', classMask{'b', b1 = value, b2 = value, b3 = value, b4 = value, b5 = value, b6 = value})
	end
	self:assertEquals('B', classMask{'B', b1 = 'yes', b2 = nil, b3 = nil, b4 = nil, b5 = nil, b6 = nil})
	self:assertEquals('B', classMask{'b', b1 = 'yes', b2 = nil, b3 = nil, b4 = nil, b5 = nil, b6 = nil})
end

function suite:testBExtendedNo()
	local noValues = {'no', 'NO', 'n', 'N', '0', 'fail', 'FAIL', '<yes/no>', '<YES/NO>', 'yes/no', 'YES/NO', '', 'foo'}
	for i, value in ipairs(noValues) do
		self:assertEquals('C', classMask{'B', b1 = value, b2 = value, b3 = value, b4 = value, b5 = value, b6 = value})
		self:assertEquals('C', classMask{'b', b1 = value, b2 = value, b3 = value, b4 = value, b5 = value, b6 = value})
	end
end

for i, t in ipairs{{'SomeYesSomeNo', 'yes', 'no'}, {'SomeYesSomeUnevaluated', 'yes', ''}} do
	suite['testBExtended' .. t[1]] = function (self)
		local yesVal, noVal = t[2], t[3]
		for j, grade in ipairs{'B', 'b'} do
			self:assertEquals('C', classMask{grade, b1 = yesVal, b2 = yesVal, b3 = yesVal, b4 = yesVal, b5 = yesVal, b6 = noVal})
			self:assertEquals('C', classMask{grade, b1 = yesVal, b2 = yesVal, b3 = yesVal, b4 = yesVal, b5 = noVal, b6 = noVal})
			self:assertEquals('C', classMask{grade, b1 = yesVal, b2 = yesVal, b3 = yesVal, b4 = noVal, b5 = noVal, b6 = noVal})
			self:assertEquals('C', classMask{grade, b1 = yesVal, b2 = yesVal, b3 = noVal, b4 = noVal, b5 = noVal, b6 = noVal})
			self:assertEquals('C', classMask{grade, b1 = yesVal, b2 = noVal, b3 = noVal, b4 = noVal, b5 = noVal, b6 = noVal})
			self:assertEquals('C', classMask{grade, b1 = yesVal, b2 = yesVal, b3 = noVal, b4 = yesVal, b5 = yesVal, b6 = yesVal})
		end
	end
end

return suite