Koha Test Wiki MW Canasta on Koha Portainer

Test major Koha Wiki changes or bug fixes here without fear of breaking the production wiki.

For the current Koha Wiki, visit https://wiki.koha-community.org .

Module:Lang/testcases

From Koha Test Wiki MW Canasta on Koha Portainer
Jump to navigation Jump to search

Documentation for this module may be created at Module:Lang/testcases/doc

local p = require('Module:UnitTests')
--[[==========================<< L A N G   T E S T S=========================================================]]

--[[--------------------------< I T A L I C >------------------------------------------------------------------

Tests module parameter |italic= with values 'yes', 'no', present but not set, and the invalid 'whatever'.  There
is a separate test for the parameter not present.

|italic=yes or |italic=no overrides every other parameter that might set the rendered text's font.

]]

function p:test_lang_italic()
	self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|lang|code=ar|text=text|italic=', '}}', '{{#invoke:lang|lang|code=ar|text=text|italic=', '}}',
		{
		{'yes'}, {'no'}, {''}, {'whatever'},
		}, {nowiki=1})
	self:preprocess_equals_preprocess('{{#invoke:lang/sandbox|lang|code=ar|text=text}}', '{{#invoke:lang|lang|code=ar|text=text}}',
		{nowiki=1})
end;


--[[--------------------------< I T A L I C   W I T H   S C R I P T >------------------------------------------

Tests module parameter |italic=yes when |script=arab or |script=latn

|italic=yes should override whatever |script= might say

The value assigned to |script= shall be appended to the language code; for |script=arab the module shall add
dir="rtl" to the text's enclosing <span> and insert the &lrm; marker

]]

function p:test_lang_italic_with_script()
	self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|lang|code=ar|text=text|italic=yes|script=', '}}', '{{#invoke:lang|lang|code=ar|text=text|italic=yes|script=', '}}',
		{
		{'arab'}, {'latn'},
		}, {nowiki=1})
	self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|lang|code=ar|text=text|italic=no|script=', '}}', '{{#invoke:lang|lang|code=ar|text=text|italic=no|script=', '}}',
		{
		{'arab'}, {'latn'},
		}, {nowiki=1})
end;


--[[--------------------------< R T L >------------------------------------------------------------------------

Tests module parameter |rtl= with values 'yes', 'no', present but not set, and the invalid 'whatever'.  There
is a separate test for the parameter not present.

|rtl=yes adds dir="rtl" to the text's enclosing <span> and inserts the &lrm; marker

]]

function p:test_lang_rtl()
	self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|lang|code=ar|text=text|rtl=', '}}', '{{#invoke:lang|lang|code=ar|text=text|rtl=', '}}',
		{
		{'yes'}, {'no'}, {''}, {'whatever'},
		}, {nowiki=1})
	self:preprocess_equals_preprocess('{{#invoke:lang/sandbox|lang|code=ar|text=text}}', '{{#invoke:lang|lang|code=ar|text=text}}',
		{nowiki=1})
end;


--[[--------------------------< I E T F   D E C O D I N G >----------------------------------------------------

Tests module parameter |code= with values that should not produce error messages:
	'de', 'de-ch', 'de-CH-1901', 'ru-RU-petr1708', '1ca', es-419.

]]

function p:test_lang_ietf()
	self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|lang|text=text|code=', '}}', '{{#invoke:lang|lang|text=text|code=', '}}',
		{
		{'de'},					-- code
		{'nav'},				-- code
		{'1ca'},				-- non-standard code
		{'cmn-Latn'},			-- code-script; shall italicize text
		{'he-hebr'},			-- code-script; shall insert rtl
		{'de-ch'},				-- code-region
		{'de-1901'},			-- code-numeric variant
		{'ru-petr1708'},		-- code-alnum variant
		{'ca-valencia'},		-- code-alpha variant
		{'ru-ru-petr1708'},		-- code-region-variant
		{'es-419'},				-- code-numeric region
		{'ru-Cyrl-RU'},			-- code-script-region
		{'ca-419-valencia'},	-- code-numeric reigion-variant
		}, {nowiki=1})
end;


--[[==========================<< L A N G _ X X   T E S T S===================================================]]

--[[--------------------------< I T A L I C >------------------------------------------------------------------

Tests module parameter |italic= with values 'yes', 'no', present but not set, and the invalid 'whatever'.  There
is a separate test for the parameter not present.

|italic=yes or |italic=no overrides every other parameter that might set the rendered text's font.

]]

function p:test_lang_xx_italic()
	self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|lang_xx_inherit|code=ar|text=text|italic=', '}}', '{{#invoke:lang|lang_xx_inherit|code=ar|text=text|italic=', '}}',
		{
		{'yes'}, {'no'}, {''}, {'whatever'},
		}, {nowiki=1})
	self:preprocess_equals_preprocess('{{#invoke:lang/sandbox|lang_xx_inherit|code=ar|text}}', '{{#invoke:lang|lang_xx_inherit|code=ar|text}}',
		{nowiki=1})
end;


--[[--------------------------< I T A L I C   W I T H   S C R I P T >------------------------------------------

Tests module parameter |italic=yes when |script=arab or |script=latn

|italic=yes should override whatever |script= might say

The value assigned to |script= shall be appended to the language code; for |script=arab the module shall add
dir="rtl" to the text's enclosing <span> and insert the &lrm; marker

]]

function p:test_lang_xx_italic_with_script()
	self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|lang_xx_inherit|code=ar|text=text|italic=yes|script=', '}}', '{{#invoke:lang|lang_xx_inherit|code=ar|text=text|italic=yes|script=', '}}',
		{
		{'arab'}, {'latn'},
		}, {nowiki=1})
	self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|lang_xx_inherit|code=ar|text=text|italic=no|script=', '}}', '{{#invoke:lang|lang_xx_inherit|code=ar|text=text|italic=no|script=', '}}',
		{
		{'arab'}, {'latn'},
		}, {nowiki=1})
end;


--[[--------------------------< S C R I P T >------------------------------------------------------------------

Tests module parameter |script=arab and |script=latn with |italic= preset but not set and |italic= not present

|script=arab shall not italicize text
|script=latn shall italicize text

The value assigned to |script= shall be appended to the language code; for |script=arab the module shall add
dir="rtl" to the text's enclosing <span> and insert the &lrm; marker

There is no {{lang}} version of this test because {{lang}} has not need for separate |script=, |region=, and |variant=
parameters - those subtags can all be added to the IETF language code in the template's first positional parameter ({{{1}}}).

]]

function p:test_lang_xx_script()
	self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|lang_xx_inherit|code=ar|text=text|italic=|script=', '}}', '{{#invoke:lang|lang_xx_inherit|code=ar|text=text|italic=|script=', '}}',
		{
		{'arab'}, {'latn'},
		}, {nowiki=1})
	self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|lang_xx_inherit|code=ar|text=text|script=', '}}', '{{#invoke:lang|lang_xx_inherit|code=ar|text=text|script=', '}}',
		{
		{'arab'}, {'latn'},
		}, {nowiki=1})
end;


--[[--------------------------< R T L >------------------------------------------------------------------------

Tests module parameter |rtl= with values 'yes', 'no', present but not set, and the invalid 'whatever'.  There
is a separate test for the parameter not present.

|rtl=yes adds dir="rtl" to the text's enclosing <span> and inserts the &lrm; marker

]]

function p:test_lang_xx_rtl()
	self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|lang_xx_inherit|code=ar|text=text|rtl=', '}}', '{{#invoke:lang|lang_xx_inherit|code=ar|text=text|rtl=', '}}',
		{
		{'yes'}, {'no'}, {''}, {'whatever'},
		}, {nowiki=1})
	self:preprocess_equals_preprocess('{{#invoke:lang/sandbox|lang_xx_inherit|code=ar|text}}', '{{#invoke:lang|lang_xx_inherit|code=ar|text}}',
		{nowiki=1})
end;

return p