Module:Ordinal/testcases

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search
Lua
CodeDiscussionEditHistoryLinksLink count Subpages:DocumentationTestsResultsSandboxLive code All modules

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

Code

local p = require('Module:UnitTests')

function p:test_Ordinal_languages()
	self:preprocess_equals_many('{{#invoke:Ordinal|Ordinal|1|lang=', '}}', {
		{'en', '1<sup>st</sup>'},
		{'de', '1.'},
		{'fr', '1<sup>e</sup>'},
		{'mk', '1‑виот'},
		{'ru', '1‑й'},
		{'ja', '第1'},
		{'sv', '1:a'},
		{'nn', '1.'},
		{'ms', 'ke‑1'},
		{'ta', '1‑ஆம்'},
		{'hy', '1‑ին'},
	} )
	self:preprocess_equals_many('{{#invoke:Ordinal|Ordinal|2|lang=', '}}', {
		{'en', '2<sup>nd</sup>'},
		{'de', '2.'},
		{'fr', '2<sup>e</sup>'},
		{'mk', '2‑риот'},
		{'ta', '2‑ஆம்'},
		{'hy', '2‑րդ'},
	} )
	self:preprocess_equals_many('{{#invoke:Ordinal|Ordinal|3|lang=', '}}', {
		{'en', '3<sup>rd</sup>'},
		{'de', '3.'},
		{'fr', '3<sup>e</sup>'},
		{'mk', '3‑иот'},
	} )
	self:preprocess_equals_many('{{#invoke:Ordinal|Ordinal|104|lang=', '}}', {
		{'en', '104<sup>th</sup>'},
		{'de', '104.'},
		{'fr', '104<sup>e</sup>'},
		{'mk', '104‑иот'},
	} )
	self:preprocess_equals_many('{{#invoke:Ordinal|Ordinal|205|lang=', '}}', {
		{'en', '205<sup>th</sup>'},
		{'de', '205.'},
		{'fr', '205<sup>e</sup>'},
		{'mk', '205‑тиот'},
	} )
	self:preprocess_equals_many('{{#invoke:Ordinal|Ordinal|11|lang=', '}}', {
		{'en', '11<sup>th</sup>'},
		{'de', '11.'},
		{'fr', '11<sup>e</sup>'},
		{'mk', '11‑виот'},
	} )
	self:preprocess_equals_many('{{#invoke:Ordinal|Ordinal|12|lang=', '}}', {
		{'en', '12<sup>th</sup>'},
		{'de', '12.'},
		{'fr', '12<sup>e</sup>'},
		{'mk', '12‑риот'},
	} )
	self:preprocess_equals_many('{{#invoke:Ordinal|Ordinal|13|lang=', '}}', {
		{'en', '13<sup>th</sup>'},
		{'de', '13.'},
		{'fr', '13<sup>e</sup>'},
		{'mk', '13‑иот'},
	} )
	self:preprocess_equals_many('{{#invoke:Ordinal|Ordinal|26|lang=', '}}', {
		{'en', '26<sup>th</sup>'},
		{'de', '26.'},
		{'fr', '26<sup>e</sup>'},
		{'mk', '26‑иот'},
	} )
	self:preprocess_equals_many('{{#invoke:Ordinal|Ordinal|27|lang=', '}}', {
		{'en', '27<sup>th</sup>'},
		{'de', '27.'},
		{'fr', '27<sup>e</sup>'},
		{'mk', '27‑миот'},
	} )
	self:preprocess_equals_many('{{#invoke:Ordinal|Ordinal|28|lang=', '}}', {
		{'en', '28<sup>th</sup>'},
		{'de', '28.'},
		{'fr', '28<sup>e</sup>'},
		{'mk', '28‑миот'},
	} )
	self:preprocess_equals_many('{{#invoke:Ordinal|Ordinal|29|lang=', '}}', {
		{'en', '29<sup>th</sup>'},
		{'de', '29.'},
		{'fr', '29<sup>e</sup>'},
		{'mk', '29‑тиот'},
	} )
end

function p:test_Ordinal_lang_English()
	self:preprocess_equals_many('{{#invoke:Ordinal|Ordinal|', '|lang=en}}', {
		   {'101', '101<sup>st</sup>'},
		   {'102', '102<sup>nd</sup>'},
		   {'103', '103<sup>rd</sup>'},
		   {'104', '104<sup>th</sup>'},
		   {'101|nosup=y', '101st'},
		   {'102|nosup=y', '102nd'},
		   {'103|nosup=y', '103rd'},
		   {'104|nosup=y', '104th'},
		   {'13|style=d', '13d'},
		   {'101|style=d|nosup=y', '101d'},
	} )
end

function p:test_Ordinal_lang_French()
	self:preprocess_equals_many('{{#invoke:Ordinal|Ordinal|', '|lang=fr}}', {
		   {'101', '101<sup>e</sup>'},
		   {'999', '999<sup>e</sup>'},
		   {'1', '1<sup>e</sup>'},
		   {'1|gender=f', '1<sup>re</sup>'},
		   {'1|gender=m', '1<sup>er</sup>'},
		   {'1|gender=n', '1<sup>e</sup>'},
		   {'1|gender=xxxx', '1<sup>e</sup>'},
		   {'8|style=roman|gender=m', 'VIII<sup>e</sup>'},
		   {'8|style=roman-title|gender=m', 'VIII'},
		   {'101|style=roman year', 'CI<sup>e</sup>'},
		   {'101|style=roman|gender=f', 'CI<sup>e</sup>'},
		   {'102|nosup=y', '102e'},
	} )
end

function p:test_Ordinal_lang_Polish()
	self:preprocess_equals_many('{{#invoke:Ordinal|Ordinal|', '|lang=pl}}', {
		 {'1', '1‑szy'},
		 {'3', '3‑ci'}, 
		 {'11', '11‑ty'}, 
		 {'18', '18‑ty'}, 
		 {'101', '101‑szy'}, 
		 {'102', '102‑gi'}, 
		 {'103', '103‑ci'}, 
		 {'104', '104‑ty'}, 
		 {'105', '105‑ty'}, 
		 {'106', '106‑ty'}, 
		 {'107', '107‑my'}, 
		 {'108', '108‑my'}, 
		 {'109', '109‑ty'}, 
		 {'110', '110‑ty'},
	} )
	self:preprocess_equals_many('{{#invoke:Ordinal|Ordinal|', '|lang=pl|gender=m}}', {
		 {'1', '1‑szy'},
		 {'3', '3‑ci'}, 
		 {'11', '11‑ty'}, 
		 {'18', '18‑ty'}, 
		 {'101', '101‑szy'}, 
		 {'102', '102‑gi'}, 
		 {'103', '103‑ci'}, 
		 {'104', '104‑ty'}, 
		 {'105', '105‑ty'}, 
		 {'106', '106‑ty'}, 
		 {'107', '107‑my'}, 
		 {'108', '108‑my'}, 
		 {'109', '109‑ty'}, 
		 {'110', '110‑ty'},
	} )
	self:preprocess_equals_many('{{#invoke:Ordinal|Ordinal|', '|lang=pl|gender=f}}', {
		 {'1', '1‑sza'},
		 {'3', '3‑cia'}, 
		 {'11', '11‑ta'}, 
		 {'18', '18‑ta'}, 
		 {'101', '101‑sza'}, 
		 {'102', '102‑ga'}, 
		 {'103', '103‑cia'}, 
		 {'104', '104‑ta'}, 
		 {'105', '105‑ta'}, 
		 {'106', '106‑ta'}, 
		 {'107', '107‑ma'}, 
		 {'108', '108‑ma'}, 
		 {'109', '109‑ta'}, 
		 {'110', '110‑ta'},
	} )
	self:preprocess_equals_many('{{#invoke:Ordinal|Ordinal|', '|lang=pl|gender=n}}', {
		 {'1', '1‑sze'},
		 {'3', '3‑cie'}, 
		 {'11', '11‑te'}, 
		 {'18', '18‑te'}, 
		 {'101', '101‑sze'}, 
		 {'102', '102‑gie'}, 
		 {'103', '103‑cie'}, 
		 {'104', '104‑te'}, 
		 {'105', '105‑te'}, 
		 {'106', '106‑te'}, 
		 {'107', '107‑me'}, 
		 {'108', '108‑me'}, 
		 {'109', '109‑te'}, 
		 {'110', '110‑te'},
	} )
end

function p:test_Ordinal_lang_Spanish()
	self:preprocess_equals_many('{{#invoke:Ordinal|Ordinal|', '}}', {
		  {'31|lang=es', '31.<sup>o</sup>'},
		  {'32|lang=es|gender=f', '32.<sup>a</sup>'},
		  {'33|lang=es|gender=m', '33.<sup>o</sup>'},
		  {'34|lang=es|gender=n', '34.<sup>o</sup>'},
		  {'35|lang=es|nosup=y', '35o'},
	} )
end

function p:test_Ordinal_lang_Ukrainian()
	self:preprocess_equals_many('{{#invoke:Ordinal|Ordinal|', '}}', {
		  {   '1|lang=uk',             '1‑й'},
		  {   '1|lang=uk|gender=m',    '1‑й'},
		  {   '1|lang=uk|gender=f',    '1‑ша'},
		  {   '1|lang=uk|gender=n',    '1‑ше'},
		  {   '2|lang=uk',             '2‑й'},
		  {   '2|lang=uk|gender=m',    '2‑й'},
		  {   '2|lang=uk|gender=f',    '2‑га'},
		  {   '2|lang=uk|gender=n',    '2‑ге'},
		  {   '3|lang=uk',             '3‑й'},
		  {   '3|lang=uk|gender=m',    '3‑й'},
		  {   '3|lang=uk|gender=f',    '3‑тя'},
		  {   '3|lang=uk|gender=n',    '3‑тє'},
		  {   '4|lang=uk',             '4‑й'},
		  {   '4|lang=uk|gender=m',    '4‑й'},
		  {   '4|lang=uk|gender=f',    '4‑та'},
		  {   '4|lang=uk|gender=n',    '4‑те'},
		  {   '5|lang=uk',             '5‑й'},
		  {   '5|lang=uk|gender=m',    '5‑й'},
		  {   '5|lang=uk|gender=f',    '5‑та'},
		  {   '5|lang=uk|gender=n',    '5‑те'},
		  {   '6|lang=uk',             '6‑й'},
		  {   '6|lang=uk|gender=m',    '6‑й'},
		  {   '6|lang=uk|gender=f',    '6‑та'},
		  {   '6|lang=uk|gender=n',    '6‑те'},
		  {   '7|lang=uk',             '7‑й'},
		  {   '7|lang=uk|gender=m',    '7‑й'},
		  {   '7|lang=uk|gender=f',    '7‑ма'},
		  {   '7|lang=uk|gender=n',    '7‑ме'},
		  {   '8|lang=uk',             '8‑й'},
		  {   '8|lang=uk|gender=m',    '8‑й'},
		  {   '8|lang=uk|gender=f',    '8‑ма'},
		  {   '8|lang=uk|gender=n',    '8‑ме'},
		  {   '9|lang=uk',             '9‑й'},
		  {   '9|lang=uk|gender=m',    '9‑й'},
		  {   '9|lang=uk|gender=f',    '9‑та'},
		  {   '9|lang=uk|gender=n',    '9‑те'},
		  {  '10|lang=uk',            '10‑й'},
		  {  '10|lang=uk|gender=m',   '10‑й'},
		  {  '10|lang=uk|gender=f',   '10‑та'},
		  {  '10|lang=uk|gender=n',   '10‑те'},
		  {  '11|lang=uk',            '11‑й'},
		  {  '11|lang=uk|gender=m',   '11‑й'},
		  {  '11|lang=uk|gender=f',   '11‑та'},
		  {  '11|lang=uk|gender=n',   '11‑те'},
		  {  '19|lang=uk',            '19‑й'},
		  {  '19|lang=uk|gender=m',   '19‑й'},
		  {  '19|lang=uk|gender=f',   '19‑та'},
		  {  '19|lang=uk|gender=n',   '19‑те'},
		  {  '20|lang=uk',            '20‑й'},
		  {  '20|lang=uk|gender=m',   '20‑й'},
		  {  '20|lang=uk|gender=f',   '20‑та'},
		  {  '20|lang=uk|gender=n',   '20‑те'},
		  {  '21|lang=uk',            '21‑й'},
		  {  '21|lang=uk|gender=m',   '21‑й'},
		  {  '21|lang=uk|gender=f',   '21‑ша'},
		  {  '21|lang=uk|gender=n',   '21‑ше'},
		  {  '40|lang=uk',            '40‑й'},
		  {  '40|lang=uk|gender=m',   '40‑й'},
		  {  '40|lang=uk|gender=f',   '40‑ва'},
		  {  '40|lang=uk|gender=n',   '40‑ве'},
		  {  '50|lang=uk',            '50‑й'},
		  {  '50|lang=uk|gender=m',   '50‑й'},
		  {  '50|lang=uk|gender=f',   '50‑та'},
		  {  '50|lang=uk|gender=n',   '50‑те'},
		  { '100|lang=uk',           '100‑й'},
		  { '100|lang=uk|gender=m',  '100‑й'},
		  { '100|lang=uk|gender=f',  '100‑та'},
		  { '100|lang=uk|gender=n',  '100‑те'},
		  {'1000|lang=uk',          '1000‑й'},
		  {'1000|lang=uk|gender=m', '1000‑й'},
		  {'1000|lang=uk|gender=f', '1000‑на'},
		  {'1000|lang=uk|gender=n', '1000‑не'},
	} )
end


function p:test_Ordinal_Misc()
	self:preprocess_equals_many('{{#invoke:Ordinal|Ordinal|', '}}', {
		   {'38|lang=fi', '38.'},
		   {'57|lang=it', '57<sup>o</sup>'},
		   {'57|lang=it|gender=f', '57<sup>a</sup>'},
		   {'10|lang=la|style=roman', 'X<sup>o</sup>'},
		   {'101|lang=bn', '১০১তম'},
		   {'101|lang=br', '101‑vet'},
		   {'101|lang=cs', '101.'},
		   {'101|lang=fa', '۱۰۱م'},
		   {'101|lang=fi', '101.'},
		   {'101|lang=ia', '101<sup>me</sup>'},
		   {'101|lang=ko', '101째'},
		   {'101|lang=ml', '101‑മത്തെ'},
		   {'101|lang=th', 'ที่๑๐๑'},
	} )

	self:preprocess_equals_preprocess(
		'{{#invoke:Ordinal|Ordinal|1234|lang=eo}}', '{{formatnum|1234|lang=eo}}‑a'
	)
end



function p:test_Ordinal_error_handling()
	self:preprocess_equals_many('{{#invoke:Ordinal|Ordinal|', '}}', {
		  {'0|debug=y', '<strong class="error"><span title="Error: not a number">0</span></strong>[[Category:Errors reported by Module Ordinal]]'},
		  {'0|debug=n', '0'},
		  {'AbCdE|debug=y', '<strong class="error"><span title="Error: not a number">AbCdE</span></strong>[[Category:Errors reported by Module Ordinal]]'},
		  {'AbCdE|debug=n', 'AbCdE'},
		  {'-102|lang=en|debug=y', '<strong class="error"><span title="Error: not a number">-102</span></strong>[[Category:Errors reported by Module Ordinal]]'},
		  {'-102|lang=en|debug=n', '-102'},
		  {'1|lang=en|debug=y', '1<sup>st</sup>'},
		  {'101|lang=xxxx', '101.[[Category:Pages with calls to Module Ordinal using an unsupported language]]'}, -- test unknown lang
		  {'1|lang=zh-hk', '第1[[Category:Pages with calls to Module Ordinal using an unsupported language]]'}, -- test fallback lang
	} )
end


return p