Module:LC zh/testcases

From Linux Web Expert

Module talk:LC zh/testcases


--- Unit tests for [[Module:LC zh]]. Click talk page to run tests.
--
-- self:preprocess_equals( "{{#invoke:LC zh|main}}", "" )
--
-- self:preprocess_equals_many(
-- "{{#invoke:LC zh|main|", "}}",
-- {
-- { "", "" },
-- }
-- )
--
-- @var table
local p = require( [[Module:UnitTests]] )

local current_frame = mw.getCurrentFrame()

-- Title.pageLang.code is an expensive function in Scribunto, thus not using
--  pageLang.code here
--
-- @var string
local page_lang_code = current_frame:preprocess( "{{PAGELANGUAGE}}" )

-- @var string
local ui_lang_code = current_frame:callParserFunction{
	name = "int", args = { "lang" }
}

-- @var string
local function lang_code_type( lang_code )
	if lang_code == "zh" then
		return "zh"
	elseif (
			lang_code == "zh-hans" or
			lang_code == "zh-cn" or
			lang_code == "zh-my" or
			lang_code == "zh-sg"
	) then
		return "zh-hans"
	elseif (
			lang_code == "zh-hant" or
			lang_code == "zh-tw"
	) then
		return "zh-hant"
	elseif (
			lang_code == "zh-hk" or
			lang_code == "zh-mo"
	) then
		return "zh-hk"
	else
		return nil
	end
end

-- @var string
local function ui_lang_code_type()
	return lang_code_type( ui_lang_code )
end

-- @return table
local function provide_test_main()
	return {
		{ "type=N", "" },
		{
			"type=N|ns=User",
			page_lang_code == "zh" and
				"-{zh:User; zh-hans:用户; zh-hant:使用者; zh-hk:用戶;}-" or
				ui_lang_code_type() == "zh" and "User" or
				ui_lang_code_type() == "zh-hans" and "用户" or
				ui_lang_code_type() == "zh-hant" and "使用者" or
				ui_lang_code_type() == "zh-hk" and "用戶" or
				"User"
		},
		{
			"type=N|ns=Help",
			page_lang_code == "zh" and
				"-{zh:Help; zh-hans:帮助; zh-hant:說明;}-" or
				ui_lang_code_type() == "zh" and "Help" or
				ui_lang_code_type() == "zh-hans" and "帮助" or
				ui_lang_code_type() == "zh-hant" and "說明" or
				ui_lang_code_type() == "zh-hk" and "說明" or
				"Help"
		},
		{ "type=T", "" },
		{
			"type=T|ns=User",
			page_lang_code == "zh" and
				"-{zh:User; zh-hans:用户; zh-hant:使用者; zh-hk:用戶;}-:" or
				ui_lang_code_type() == "zh" and "User:" or
				ui_lang_code_type() == "zh-hans" and "用户:" or
				ui_lang_code_type() == "zh-hant" and "使用者:" or
				ui_lang_code_type() == "zh-hk" and "用戶:" or
				"User:"
		},
		{
			"type=T|ns=Help",
			page_lang_code == "zh" and
				"-{zh:Help; zh-hans:帮助; zh-hant:說明;}-:" or
				ui_lang_code_type() == "zh" and "Help:" or
				ui_lang_code_type() == "zh-hans" and "帮助:" or
				ui_lang_code_type() == "zh-hant" and "說明:" or
				ui_lang_code_type() == "zh-hk" and "說明:" or
				"Help:"
		},
		{
			"type=T|ns=User|zh=Example",
			page_lang_code == "zh" and
				"-{zh:User; zh-hans:用户; zh-hant:使用者; zh-hk:用戶;}-:" ..
					"Example" or
				ui_lang_code_type() == "zh" and "User:Example" or
				ui_lang_code_type() == "zh-hans" and "用户:Example" or
				ui_lang_code_type() == "zh-hant" and "使用者:Example" or
				ui_lang_code_type() == "zh-hk" and "用戶:Example" or
				"User:Example"
		},
		{
			"type=T|ns=Help|zh=Example|zh-hans=示例|zh-hant=範例",
			page_lang_code == "zh" and
				"-{zh:Help; zh-hans:帮助; zh-hant:說明;}-:" ..
					"-{zh:Example; zh-hans:示例; zh-hant:範例;}-" or
				ui_lang_code_type() == "zh" and "Help:Example" or
				ui_lang_code_type() == "zh-hans" and "帮助:示例" or
				ui_lang_code_type() == "zh-hant" and "說明:範例" or
				ui_lang_code_type() == "zh-hk" and "說明:範例" or
				"Help:Example"
		},
		{ "type=T|hide_ns=1|ns=Help", "" },
		{
			"type=T|hide_ns=1|ns=Help|zh=Example|zh-hans=示例|zh-hant=範例",
			page_lang_code == "zh" and
				"-{zh:Example; zh-hans:示例; zh-hant:範例;}-" or
				ui_lang_code_type() == "zh" and "Example" or
				ui_lang_code_type() == "zh-hans" and "示例" or
				ui_lang_code_type() == "zh-hant" and "範例" or
				ui_lang_code_type() == "zh-hk" and "範例" or
				"Example"
		},
		{ "type=H", "" },
		{ "type=C", "" },
		{
			"type=C|zh=Example|zh-hans=示例|zh-hant=範例",
			page_lang_code == "zh" and
				"-{zh:Example; zh-hans:示例; zh-hant:範例;}-" or
				ui_lang_code_type() == "zh" and "Example" or
				ui_lang_code_type() == "zh-hans" and "示例" or
				ui_lang_code_type() == "zh-hant" and "範例" or
				ui_lang_code_type() == "zh-hk" and "範例" or
				"Example"
		},
	}
end

function p:test_main()
	self:preprocess_equals( "{{#invoke:LC zh|main}}", "" )
	self:preprocess_equals_many(
		"{{#invoke:LC zh|main|", "}}", provide_test_main()
	)
end

function p:test_template()
	self:preprocess_equals( "{{LC zh}}", "" )
	self:preprocess_equals_many( "{{LC zh|", "}}", provide_test_main() )
end

return p