Module:Lang/testcases
| This is the test cases page for the module Module:Lang. Results of the test cases. |
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',
- 'invert',
- 'italic',
- present but not set,
- invalid 'whatever',
- parameter not present.
|italic=yes or |italic=no overrides every other parameter that might set the rendered text's font.
]]
function p:test_01_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'},
{'invert'},
{'italic'},
{''},
{'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 and |italic=no when |script=arab or |script=latn is set.
|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 ‎ marker.
2024-11-13: rewritten; {{lang}} does not support |script= or |region= or |variant= (never has) so these subtags
must be included in |code=
]]
function p:test_02_lang_italic_with_script()
self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|lang|text=text|italic=yes|code=ar-', '}}', '{{#invoke:lang|lang|text=text|italic=yes|code=ar-', '}}',
{
{'Cyrl'},
{'latn'},
}, {nowiki=1})
self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|lang|text=text|italic=no|code=ar-', '}}', '{{#invoke:lang|lang|text=text|italic=no|code=ar-', '}}',
{
{'Cyrl'},
{'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 ‎ marker.
]]
function p:test_03_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_04_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
{'cel-x-proto'}, -- private-use
}, {nowiki=1})
end
--[[ -------------------------- < I N V E R T _ I T A L I C S > --------------------------
Tests text ouput with |italic=invert set.
]]
function p:test_05_lang_invert_italics()
self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|lang|code=ar', '}}', '{{#invoke:lang|lang|code=ar', '}}',
{
{'|text=text|italic=invert'},
{"|text=''text''|italic=invert"},
{"|text='''''text'''''|italic=invert"},
{"|text='''text'''|italic=invert"},
{"|text=''text's''|italic=invert"},
{"|text=text's|italic=invert"},
}, {nowiki=1})
end
--[[ ========================== < L A N G _ X X _ T E S T S > ========================== ]]
--[[ -------------------------- < I T A L I C > --------------------------
- 'yes',
- 'no',
- 'invert',
- 'italic',
- present but not set,
- invalid 'whatever',
- parameter not present.
|italic=yes or |italic=no overrides every other parameter that might set the rendered text's font.
]]
function p:test_06_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'},
{'invert'},
{'italic'},
{''},
{'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 and |italic=no when |script=arab or |script=latn is set.
|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 ‎ marker.
]]
function p:test_07_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 ‎ marker.
There is no {{lang}} version of this test because {{lang}} has no 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_08_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 ‎ marker.
]]
function p:test_09_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
--[[--------------------------< L A N G _ T R A N S L I T >----------------------------------------------------
Tests various supported combinations of translit formats.
]]
function p:test_10_lang_xx_translit()
self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|lang_xx_inherit|nocat=yes|', '}}', '{{#invoke:lang|lang_xx_inherit|nocat=yes|', '}}',
{
{'code=ar|rtl=yes|text=نص العنصر النائب|translit=nasu aleunsur alnnay'},
{'code=ar|rtl=yes|text=نص العنصر النائب|translit=nasu aleunsur alnnay|translit-script=Arab'},
{'code=ar|rtl=yes|text=نص العنصر النائب|translit=nasu aleunsur alnnay|translit-std=DIN'},
{'code=ar|rtl=yes|text=نص العنصر النائب|translit=nasu aleunsur alnnay|translit-std=ALA'},
{'code=ar|عربى|translit=ʿarabī'},
{'code=ar|عربى|translit=ʿarabī|lit=Arabic'},
{'code=ar|عربى|translit=ʿarabī|translation=Arabic'},
{'code=ar|عربى|translit=ʿarabī|lit=Arabic|links=no'},
{'code=ar|عربى|translation=Arabic'},
{'code=ar|عربى|translation=Arabic|links=no'},
{'code=ff|text=𞤁𞤢𞤲𞤣𞤢𞤴𞤯𞤫|translit=something|translit-script=Adlm'},
{'code=ff|text=𞤁𞤢𞤲𞤣𞤢𞤴𞤯𞤫|translit=something|translit-script=Adlm|translit-std=ALA'},
{'code=ar|text=نص العنصر النائب|translit=nasu aleunsur alnnay|translit-std=DIN|translit-script=arab'},
{'code=gem|text=test|translit=ʿarabī|translation=Arabic'}, -- not valid translations, the test is here to see the link with a collective langauge
{'code=ath|text=test|translit=ʿarabī|translation=Arabic'}, -- not valid translations, the test is here to see the link with a collective langauge
}, {nowiki=1})
end
--[[--------------------------< E N G V A R >------------------------------------------------------------------
Tests various supported and unsupported values assigned to |engvar=
]]
function p:test_11_lang_xx_engvar()
self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|lang_xx_inherit|nocat=yes|', '}}', '{{#invoke:lang|lang_xx_inherit|nocat=yes|', '}}',
{
{'code=ar|rtl=yes|text=نص العنصر النائب|translit=nasu aleunsur alnnay'}, -- |engvar= omitted
{'code=ar|rtl=yes|text=نص العنصر النائب|translit=nasu aleunsur alnnay|engvar='}, -- |engvar= empty
{'code=ar|rtl=yes|text=نص العنصر النائب|translit=nasu aleunsur alnnay|engvar=au'}, -- valid engvar language tags
{'code=ar|rtl=yes|text=نص العنصر النائب|translit=nasu aleunsur alnnay|engvar=ca'},
{'code=ar|rtl=yes|text=نص العنصر النائب|translit=nasu aleunsur alnnay|engvar=gb'},
{'code=ar|rtl=yes|text=نص العنصر النائب|translit=nasu aleunsur alnnay|engvar=ie'},
{'code=ar|rtl=yes|text=نص العنصر النائب|translit=nasu aleunsur alnnay|engvar=in'},
{'code=ar|rtl=yes|text=نص العنصر النائب|translit=nasu aleunsur alnnay|engvar=nz'},
{'code=ar|rtl=yes|text=نص العنصر النائب|translit=nasu aleunsur alnnay|engvar=us'},
{'code=ar|rtl=yes|text=نص العنصر النائب|translit=nasu aleunsur alnnay|engvar=za'},
{'code=ar|rtl=yes|text=نص العنصر النائب|translit=nasu aleunsur alnnay|engvar=nv'}, -- invalid engvar language tag
}, {nowiki=1})
end
--[[--------------------------< L I N K _ A N D _ L A B E L >--------------------------------------------------
Tests various supported combinations of |link= and |label= combinations.
]]
function p:test_12_lang_xx_link_and_label()
self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|lang_xx_inherit|nocat=yes|', '}}', '{{#invoke:lang|lang_xx_inherit|nocat=yes|', '}}',
{
{'code=uk|морити голодом|lit=to kill by starvation|translit=moryty holodom|label=none'},
{'code=uk|морити голодом|lit=to kill by starvation|translit=moryty holodom|label=none|link=no'},
{'code=ff|text=test|translit=something|translit-script=Adlm|label=none'},
{'code=ff|text=test|translit=something|translit-script=Adlm|label=test label'},
}, {nowiki=1})
end
--[[ -------------------------- < I N V E R T _ I T A L I C S > --------------------------
Tests text ouput with |italic=invert set.
]]
function p:test_13_lang_xx_invert_italics()
self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|lang_xx_inherit|code=ar', '}}', '{{#invoke:lang|lang_xx_inherit|code=ar', '}}',
{
{'|text=text|italic=invert'},
{"|text=''text''|italic=invert"},
{"|text='''''text'''''|italic=invert"},
{"|text='''text'''|italic=invert"},
{"|text=''text's''|italic=invert"},
{"|text=text's|italic=invert"},
}, {nowiki=1})
end
--[[ ========================== < X L I T _ T E S T S > ============================== ]]
--[[ -------------------------- < X L I T _ F O R M A T S > ------------------------------
Tests various supported combinations of translit formats.
]]
function p:test_14_xlit_formats()
self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|xlit|nocat=yes|', '}}', '{{#invoke:lang|xlit|nocat=yes|', '}}',
{
-- language with transliteration standard (std) tests:
{'ja|iso|test'}, -- get code value: x (y language) transliteration
{'kana|iso|test'}, -- get script value: x (y script) transliteration
{'oto|iso|test'}, -- get default value: x transliteration
-- code or script found in "no_std" tests:
-- TODO: no current code example {'???|test'}, -- no_std code:
{'xsux|test'}, -- no_std script: x transliteration (whatever the override value is)
-- translit-script tests:
{'Cyrl|š'}, -- script: x-script transliteration
-- no translit-script or std tests:
{'ar|test'}, -- romanization: x-language romanization
{'oto|test'}, -- romanization collective: x languages romanization
}, {nowiki=1})
end
--[[ -------------------------- < I T A L I C S > --------------------------
Tests module parameter |italic= when present but not set, and with values 'default', 'yes', 'no', 'unset', 'invert', and the invalid 'whatever'.
Each value is tested with a language code and a bare script code, as these should sometimes be treated differently.
There is a separate test for the parameter not present.
]]
function p:test_15_xlit_italics()
self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|xlit|nocat=yes|', '}}', '{{#invoke:lang|xlit|nocat=yes|', '}}',
{
{'ar|nasu aleunsur alnnayib|italic='},
{'Arab|nasu aleunsur alnnayib|italic='},
{'ar|nasu aleunsur alnnayib|italic=default'},
{'Arab|nasu aleunsur alnnayib|italic=default'},
{'ar|nasu aleunsur alnnayib|italic=yes'},
{'Arab|nasu aleunsur alnnayib|italic=yes'},
{'ar|nasu aleunsur alnnayib|italic=no'},
{'Arab|nasu aleunsur alnnayib|italic=no'},
{"ar|nasu ''aleunsur'' alnnayib|italic=unset"},
{"Arab|nasu ''aleunsur'' alnnayib|italic=unset"},
{"ar|nasu ''aleunsur'' alnnayib|italic=invert"},
{"Arab|nasu ''aleunsur'' alnnayib|italic=invert"},
{'ar|nasu aleunsur alnnayib|italic=whatever'},
{'Arab|nasu aleunsur alnnayib|italic=whatever'},
}, {nowiki=1})
end
--[[ -------------------------- < E N G V A R >----------------------------------------------------------------
Tests module parameter |engvar= with various legitimate values and translit standards and engvar spelling in the
tooltip
]]
function p:test_16_xlit_engvar()
self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|xlit|nocat=yes|', '}}', '{{#invoke:lang|xlit|nocat=yes|', '}}',
{
{'ja|Tōkyō tawā'}, -- generic |engvar= omitted: Japanese-language romanization
{'ja|Tōkyō tawā|envar='}, -- generic |engvar= empty: Japanese-language romanization
{'ja|Tōkyō tawā|engvar=ca'}, -- generic with american-english spelling: Japanese-language romanization
{'ja|Tōkyō tawā|engvar=ie'}, -- generic with british-english spelling: Japanese-language romanisation
{'ko|rr|seongmyeong'}, -- tooltip= Revised Romanization of Korean transliteration; default engvar spelling
{'ko|rr|seongmyeong|engvar='}, -- tooltip= default engvar spelling
{'ko|rr|seongmyeong|engvar=us'}, -- tooltip= default engvar spelling
{'ko|rr|seongmyeong|engvar=in'}, -- tooltip= Revised Romanisation of Korean transliteration
-- at this writing (2024-08-30) yaleko romanization not use at en.wiki
{'ko|yaleko|seongmyeong'}, -- tooltip= Yale romanization of Korean; default engvar spelling
{'ko|yaleko|seongmyeong|engvar='}, -- tooltip= default engvar spelling
{'ko|yaleko|seongmyeong|engvar=us'}, -- tooltip= default engvar spelling
{'ko|yaleko|seongmyeong|engvar=in'}, -- tooltip= Yale romanisation of Korean
}, {nowiki=1})
end
--[[ ========================== < C A T E G O R Y _ F R O M _ T A G _ T E S T S > ========================== ]]
--[[ -------------------------- < C A T E G O R Y _ F R O M _ T A G > --------------------------
Returns category links from IETF tags.
A complete list of valid tests can be found here:
* Module:Lang/testcases/ISO 639-1 category from tag
* Module:Lang/testcases/ISO 639-3-1 category from tag (A–H)
* Module:Lang/testcases/ISO 639-3-2 category from tag (I–N)
* Module:Lang/testcases/ISO 639-3-3 category from tag (O–Z)
* Module:Lang/testcases/ISO 639 deprecated and override category from tag
]]
function p:test_17_category_from_tag()
self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|category_from_tag|nocat=yes|', '}}', '{{#invoke:lang|category_from_tag|nocat=yes|', '}}',
{
{'fr|link=yes'},
{'ber|link=yes'},
{'en|link=yes'},
{'en-gb|link=yes'},
{'fr'},
{'FR'},
{'ber'},
{'BER'},
{'en'},
{'EN'},
{'en-gb'},
{'EN-GB'},
})
end
--[[ ========================== < N A M E _ F R O M _ T A G _ T E S T S > ========================== ]]
--[[ -------------------------- < N A M E _ F R O M _ T A G > --------------------------
Returns language names from IETF tags.
A complete list of valid tests can be found here:
* Module:Lang/testcases/ISO 639-1 name from tag
* Module:Lang/testcases/ISO 639-3-1 name from tag (A–H)
* Module:Lang/testcases/ISO 639-3-2 name from tag (I–N)
* Module:Lang/testcases/ISO 639-3-3 name from tag (O–Z)
* Module:Lang/testcases/ISO 639 deprecated and override name from tag
]]
function p:test_18_name_from_tag()
self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|name_from_tag|nocat=yes|', '}}', '{{#invoke:lang|name_from_tag|nocat=yes|', '}}',
{
{'fr|link=yes'},
{'ber|link=yes'},
{'en|link=yes'},
{'en-gb|link=yes'},
{'fr'},
{'FR'},
{'ber'},
{'BER'},
{'en'},
{'EN'},
{'en-gb'},
{'EN-GB'},
})
end
--[[ ========================== < T A G _ F R O M _ N A M E _ T E S T S > ========================== ]]
--[[ -------------------------- < T A G _ F R O M _ N A M E > --------------------------
Returns language IETF tags from language names.
A complete list of valid tests can be found here:
* Module:Lang/testcases/ISO 639-1 tag from name
* Module:Lang/testcases/ISO 639-3-1 tag from name (A–H)
* Module:Lang/testcases/ISO 639-3-2 tag from name (I–N)
* Module:Lang/testcases/ISO 639-3-3 tag from name (O–Z)
* Module:Lang/testcases/ISO 639 deprecated and override tag from name
]]
function p:test_19_tag_from_name()
self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|tag_from_name|nocat=yes|', '}}', '{{#invoke:lang|tag_from_name|nocat=yes|', '}}',
{
{'french'},
{'French'},
{'FRENCH'},
{'Berber Languages'},
{'Berber languages'},
{'British English'},
{'en'},
{'EN'},
})
end
--[[ ========================== < I S _ I E T F _ T A G _ T E S T S > ========================== ]]
--[[ -------------------------- < I S _ I E T F _ T A G > --------------------------
Returns true if valid IETF tag.
]]
function p:test_20_is_ietf_tag()
self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|is_ietf_tag|nocat=yes|', '}}', '{{#invoke:lang|is_ietf_tag|nocat=yes|', '}}',
{
{'french'},
{'French'},
{'FRENCH'},
{'Berber Languages'},
{'Berber languages'},
{'British English'},
{'fr'},
{'FR'},
{'ber'},
{'BER'},
{'en'},
{'EN'},
{'en-gb'},
{'EN-GB'},
})
end
--[[ ========================== < I S _ L A N G _ N A M E _ T E S T S > ========================== ]]
--[[ -------------------------- < I S _ L A N G _ N A M E > --------------------------
Returns true if valid language name.
]]
function p:test_21_is_lang_name()
self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|is_lang_name|nocat=yes|', '}}', '{{#invoke:lang|is_lang_name|nocat=yes|', '}}',
{
{'french'},
{'French'},
{'FRENCH'},
{'Berber Languages'},
{'Berber languages'},
{'British English'},
{'fr'},
{'FR'},
{'ber'},
{'BER'},
{'en'},
{'EN'},
{'en-gb'},
{'EN-GB'},
})
end
--[[ ========================== < E R R O R S > ========================== ]]
--[[--------------------------< L A N G _ E R R O R S >------------------------------------------------------------------------
Lang errors.
]]
function p:test_22_lang_errors()
self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|lang|nocat=yes|', '}}', '{{#invoke:lang|lang|nocat=yes|', '}}',
{
{''}, -- no text
{'fr'}, -- no text
{'text=text'}, -- missing language tag
{'fr|code=fr|text'}, -- conflicting |1= and |code=
{'fr|text|text=text'}, -- conflicting |2= and |text=
{'proto=proto-y-bad|text=text'}, -- invalid |proto=
{"fr|''italics''"}, -- text has italic markup
{'fr|text={{lang|fr|text=text}}'}, -- text already uses lang attribute
{"fr|malformed''''''"}, -- text has malformed markup
{'1ca|text'}, -- unrecognized language tag: 1ca
{'zz|text'}, -- unrecognized language code
{'glg|text'}, -- code: glg promoted to code: gl
{'iw|text'}, -- code: iw is deprecated
}, {nowiki=1})
end
--[[ -------------------------- < L A N G _ X X _ E R R O R S > --------------------------
Lang-xx errors.
]]
function p:test_23_lang_xx_errors()
self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|lang_xx_inherit|nocat=yes|', '}}', '{{#invoke:lang|lang_xx_inherit|nocat=yes|', '}}',
{
{''}, -- no text
{'code=fr'}, -- no text
{'text=text'}, -- missing language tag
{'code=fr|text|text=text'}, -- conflicting {{{1}}} and |text=
{'code=fr|text|translit|translit=translit'}, -- conflicting {{{2}}} and |translit=
{'code=fr|text|lit|lit=lit'}, -- conflicting {{{3}}} and |lit= or |translation=
{'code=fr|text|translation|translation=translation'}, -- conflicting {{{3}}} and |lit= or |translation=
{'code=fr|text|lit=lit|translation=translation'}, -- conflicting |lit= and |translation=
{'code=fr|{{lang|fr|text}}'}, -- text already uses lang attribute
{'code=fr-Latn|script=Latn|text'}, -- redundant script tag
{'code=fr|script=nonsense|text'}, -- unrecognized script: nonsense for code fr
{'code=ar|script=Arab|text'}, -- script: script: arab not supported for code: ar
{'code=en-US|region=US|text'}, -- redundant region tag
{'code=de-XL|text'}, -- unrecognized region: xl for code de
{'code=de-1901|variant=1901|text'}, -- redundant variant tag
{'code=de-19022|text'}, -- unrecognized variant: 19022
{'code=de|script=Armn|variant=1901|text'}, -- unrecognized variant: 1901 for code-script pair: de-armn
{'code=en|variant=1901|text'}, -- unrecognized variant: 1901 for code: en
{'code=es-x-419|text'}, -- unrecognized private tag: 419
{'code=ar|rtl=yes|نص العنصر النائب|nasu aleunsur alnnayib|translit-std=bob'}, --invalid |translit-std=: bob
{'code=ar|text=نص العنصر النائب|translit=nasu aleunsur alnnay|translit-std=DIN|translit-script=ar'}, -- invalid |translit-script= value
}, {nowiki=1})
end
--[[ -------------------------- < X L I T _ E R R O R S > ------------------------------
Xlit errors.
]]
function p:test_24_xlit_errors()
self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|xlit|nocat=yes|', '}}', '{{#invoke:lang|xlit|nocat=yes|', '}}',
{
{'al-Khwarizmi'},
{'ar'},
{'at|al-Khwarizmi'},
{'ar|AL|al-Khwarizmi'},
{"Arab|nasu ''aleunsur'' alnnayib|italic=yes|italics=no"},
}, {nowiki=1})
end
--[[ -------------------------- < C A T E G O R Y _ F R O M _ T A G _ E R R O R S > --------------------------
category_from_tag errors.
]]
function p:test_25_category_from_tag_errors()
self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|category_from_tag|nocat=yes|', '}}', '{{#invoke:lang|category_from_tag|nocat=yes|', '}}',
{
{'sfsfsfs'},
}, {nowiki=1})
end
--[[ -------------------------- < N A M E _ F R O M _ T A G _ E R R O R S > --------------------------
name_from_tag errors.
A complete list of valid tests can be found here:
* Module:Lang/testcases/ISO 639-1 name from tag
* Module:Lang/testcases/ISO 639-3-1 name from tag (A–H)
* Module:Lang/testcases/ISO 639-3-2 name from tag (I–N)
* Module:Lang/testcases/ISO 639-3-3 name from tag (O–Z)
* Module:Lang/testcases/ISO 639 deprecated and override name from tag
]]
function p:test_26_name_from_tag_errors()
self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|name_from_tag|nocat=yes|', '}}', '{{#invoke:lang|name_from_tag|nocat=yes|', '}}',
{
{'sfsfsfs'},
}, {nowiki=1})
end
--[[ -------------------------- < T A G _ F R O M _ N A M E _ E R R O R S > --------------------------
tag_from_name errors.
A complete list of valid tests can be found here:
* Module:Lang/testcases/ISO 639-1 tag from name
* Module:Lang/testcases/ISO 639-3-1 tag from name (A–H)
* Module:Lang/testcases/ISO 639-3-2 tag from name (I–N)
* Module:Lang/testcases/ISO 639-3-3 tag from name (O–Z)
* Module:Lang/testcases/ISO 639 deprecated and override tag from name
]]
function p:test_27_tag_from_name_errors()
self:preprocess_equals_preprocess_many('{{#invoke:lang/sandbox|tag_from_name|nocat=yes|', '}}', '{{#invoke:lang|tag_from_name|nocat=yes|', '}}',
{
{'sfsfsfs'},
}, {nowiki=1})
end
--[[ -------------------------- < H T M L _ T A G _ S E L E C T > --------------------------
html_tag_select errors.
]]
function p:test_28_html_tag_select()
local implied_para_content = [[
Text with...
implied paragraph breaks.]]
self:preprocess_equals_preprocess_many(
'{{#invoke:lang/sandbox|lang_xx_inherit|', '}}',
'{{#invoke:lang|lang_xx_inherit|', '}}',
{
{'code=ar|نص العنصر النائب'},
{'code=ar|rtl=yes|نص العنصر النائب'},
{'code=ar|{{rtl-para|نص العنصر النائب}}'},
{'code=ar|rtl=yes|{{rtl-para|نص العنصر النائب}}'},
{'code=en|<poem>a test fails<br>Lua</poem>'},
{'code=en|' .. implied_para_content},
}, {nowiki=1, stripmarker=1})
end
return p
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.