Module:Lang/testcases/ISO 639-1 category from tag

From blackwiki
Jump to navigation Jump to search

Documentation for this module may be created at Module:Lang/testcases/ISO 639-1 category from tag/doc

local p = require('Module:UnitTests')

local cat_from_tag = require ('Module:Lang')._category_from_tag;				-- use Module:Lang to create the 'expected results'
local iana_data = mw.loadData ('Module:Language/data/iana languages');			-- use the iana data
local code_mask = '^[a-h]%l%l';													-- used to limit number of tests


--[[--------------------------< T E S T _ P A T T E R N S _ G E T >--------------------------------------------

build a table of test patterns where each entry in the table is a table with two members:
	{"<code>", "<cat name according to Module:Lang>"}

]]

local function test_patterns_get ()
	local tpats = {}															-- collect test patterns here
	for code in pairs (iana_data) do											-- list of names not needed here
		local pattern = {};														-- here we assemble the test pattern for <code>
		if 2 == code:len() then													-- no limits for two-character codes
--		if code:find (code_mask) then											-- if code within limits (three-character codes)
			table.insert (pattern, code);										-- add it to the pattern
			table.insert (pattern, cat_from_tag ({code}));						-- call module:lang and add the 'expected results' for code to pattern
			table.insert (tpats, pattern);										-- accumulate in list of patterns
		end
	end

	local function comp (a, b)													-- local function used by table.sort()
		return a[1] < b[1];														-- ascending sort by code
	end
	
	table.sort (tpats, comp);													-- make the list pretty
	return tpats;																-- and done
end

local test_patterns = test_patterns_get();


--[[--------------------------< T E S T _ C A T E G O R Y _ F R O M _ T A G >----------------------------------
]]

function p:test_category_from_tag()
	self:preprocess_equals_preprocess_many('{{#invoke:Lang/sandbox|category_from_tag|', '}}', '', '', test_patterns, {nowiki=1})
end;

return p