Module:Complex date/core/testcases

Lua

CodeDiscussionEditHistoryLinksLink count Subpages:DocumentationTestsResultsSandboxLive code All modules

✘[No] 3 tests failed.

Name Expected Actual
✓[OK] test_ISOdate
✓[OK] test_Roman
✓[OK] test_formatnum
✓[OK] test_isodate2timestamp
✘[No] test_oneDatePhrase Lua error -- Module:Complex_date/core:172: attempt to index local 'dateStr' (a nil value)
✘[No] test_oneDatePhrase2 Module:Complex_date/core/testcases:59: Failed to assert that nil equals expected XV век н. э.
✓[OK] test_oneDateQScode
✘[No] test_translatePhrase Module:Complex_date/core/testcases:26: Failed to assert that nil equals expected przed part1
✓[OK] test_twoDatePhrase
✓[OK] test_twoDateQScode

Code

local TUT = mw.title.new(mw.getCurrentFrame():getTitle()).basePageTitle -- the title under test
local cdate = require(TUT.prefixedText)-- the module to be tested
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()
local ISOdate = require('Module:ISOdate')._ISOdate
cdate.init()

local function ISO_date(date1, lang, case)
	local a, b = ISOdate(date1, lang, case, '', false)
	return a
end

function suite:test_Roman()
	local Roman = require('Module:Roman')._Numeral
	self:assertSameResult( Roman(123),  cdate.Roman(123)) 
	self:assertSameResult( Roman(3456), cdate.Roman(3456)) 
end

function suite:test_ISOdate()
	local date_str = '1999-11'
	self:assertEquals( 'listopada 1999',   ISO_date(date_str, 'pl', 'gen')) 
	self:assertEquals( 'listopadzie 1999', ISO_date(date_str, 'pl', 'loc')) 
end

function suite:test_translatePhrase()
	self:assertEquals( 'przed part1',     cdate.translatePhrase('part1', '', 'before', 'pl')) 
	self:assertEquals( 'part1 and part2', cdate.translatePhrase('part1', 'part2', 'and', 'en')) 
	self:assertEquals( 'part1 i part2',   cdate.translatePhrase('part1', 'part2', 'and', 'pl')) 
	self:assertEquals( 'custom',          cdate.translatePhrase('part1', 'part2', 'and', 'xx')) 
	self:assertEquals( '',                cdate.translatePhrase('part1', 'part2', 'xxx', 'en')) 
end

function suite:test_oneDatePhrase()
	local date1, date2
	date1 = {date='1999-11-11', precision=11}
	self:assertEquals( '11 listopada 1999', cdate.oneDatePhrase(date1, 'pl')) 

	date1 = {date='1999-11-12', adj='after', precision=11}
	date2 = {date='1999-11',    adj='after', precision=10}
	self:assertEquals( 'po 12 listopada 1999',   cdate.oneDatePhrase(date1, 'pl')) 
	self:assertEquals( 'po listopadzie 1999',    cdate.oneDatePhrase(date2, 'pl')) 
	self:assertEquals( 'после 12 ноября 1999',   cdate.oneDatePhrase(date1, 'ru')) 
	self:assertEquals( 'после ноября 1999',      cdate.oneDatePhrase(date2, 'ru')) 
	self:assertEquals( 'after 12 November 1999', cdate.oneDatePhrase(date1, 'en')) 
	self:assertEquals( 'after November 1999',    cdate.oneDatePhrase(date2, 'en')) 

	date1 = {date='1999-11', precision=10, case='loc'}
	self:assertEquals( 'listopadzie 1999',  cdate.oneDatePhrase(date1, 'pl')) 

	date1 = {date='1521', adj='after', precision=9}
	self:assertEquals( 'after 1521',  cdate.oneDatePhrase(date1, 'en')) 

	date1 = {date='345', adj='circa', precision=9, era='bc'}
	self:assertEquals( 'circa 345 [[w:en:Ante Christum Natum|BC]]',  cdate.oneDatePhrase(date1, 'en')) 
end

function suite:test_oneDatePhrase2()
	local date1 = {date='15', precision=7, era='ad', case='rom'}
	self:assertEquals( 'XV век н. э.',  cdate.oneDatePhrase(date1, 'ru')) 
	self:assertEquals( '<span style="color:red">القرن 15 [[w:en:Anno Domini|AD]]</span>',  cdate.oneDatePhrase(date1, 'ar')) 

	-- era can also be added through "adj"
	local date1 = {date='15', precision=7, adj='ad', case='rom'}
	self:assertEquals( 'XV век н. э.',  cdate.oneDatePhrase(date1, 'ru')) 
	
	-- case is usually for gramatic case but can also be "rom" for Roman and "ord" for ordinal numeral
	-- here we explicitly call case='rom'
	local date1 = {date='15', adj='after', precision=7, era='ad', case='rom'}
	self:assertEquals( 'dopo il XV sec. d.C.',  cdate.oneDatePhrase(date1, 'it')) 

	-- case is usually for gramatic case but can also be "rom" for Roman and "ord" for ordinal numeral
	-- here we explicitly call case='rom'
	local date1 = {date='15', adj='after', precision=7, era='ad', case='ord'}
	self:assertEquals( 'after 15<sup>th</sup> century [[w:en:Anno Domini|AD]]',  cdate.oneDatePhrase(date1, 'en'))

	-- we should not need case='rom' as "after" 
	local date1 = {date='15', adj='after', precision=7, era='ad'}
	self:assertEquals( 'dopo il XV sec. d.C.',  cdate.oneDatePhrase(date1, 'it')) 
end

function suite:test_oneDateQScode()
	local date1
	date1 = {date='1999-11-12', adj='after', precision=11}
	self:assertEquals( '+1999-11-12T00:00:00Z/7,P1319,+1999-11-12T00:00:00Z/11', cdate.oneDateQScode(date1)) 
	
	date1 = {date='1999-11', adj='before', precision=10}
	self:assertEquals( '+1999-11-00T00:00:00Z/7,P1326,+1999-11-00T00:00:00Z/10', cdate.oneDateQScode(date1)) 

	date1 = {date='1495', adj='circa', precision=9}
	self:assertEquals( '+1495-00-00T00:00:00Z/9,P1480,Q5727902', cdate.oneDateQScode(date1)) 
	
	date1 = {date='0300', adj='circa', precision=9, era='bc'}
	self:assertEquals( '-0300-00-00T00:00:00Z/9,P1480,Q5727902', cdate.oneDateQScode(date1)) 
end

function suite:test_twoDateQScode()
end

function suite:test_twoDatePhrase()
end

function suite:test_isodate2timestamp()
	self:assertEquals( '+1999-11-12T00:00:00Z/11', cdate.isodate2timestamp('1999-11-12', 11, nil)) 
	self:assertEquals( '+1999-11-00T00:00:00Z/10', cdate.isodate2timestamp('1999-11',    10, nil)) 
	self:assertEquals( '+1999-00-00T00:00:00Z/9',  cdate.isodate2timestamp('1999',        9, nil)) 
	self:assertEquals( '+1999-00-00T00:00:00Z/8',  cdate.isodate2timestamp('1999',        8, nil)) 
	self:assertEquals( '+1950-00-00T00:00:00Z/7',  cdate.isodate2timestamp('20',          7, nil)) 
	self:assertEquals( '+1500-00-00T00:00:00Z/6',  cdate.isodate2timestamp('2',           6, nil)) 
	self:assertEquals( '+1950-00-00T00:00:00Z/7',  cdate.isodate2timestamp('20',          7, 'ad')) 
	self:assertEquals( '-1950-00-00T00:00:00Z/7',  cdate.isodate2timestamp('20',          7, 'bc')) 
	self:assertEquals( '-1950-00-00T00:00:00Z/7',  cdate.isodate2timestamp('20',          7, 'bp')) 
	self:assertEquals( '-0300-00-00T00:00:00Z/9',  cdate.isodate2timestamp('0300',        9, 'bc')) 
end

local function formatnum2(numStr, lang)
	return require('Module:Formatnum').formatNum(numStr, lang, 0, true)
end

local function formatnum1(numStr, lang)
	 return mw.getLanguage(lang):formatNum(tonumber(numStr), { noCommafy = true })
end

function suite:test_formatnum()
	self:assertEquals( '1234567890', cdate.formatnum('1234567890', 'en')) 
	self:assertEquals( '1234567890', formatnum1('1234567890', 'en')) 
	self:assertEquals( '1234567890', formatnum2('1234567890', 'en')) 
	self:assertEquals( formatnum2('1234567890', 'en'),  cdate.formatnum('1234567890', 'en')) 
	self:assertEquals( formatnum2('1234567890', 'ar'),  cdate.formatnum('1234567890', 'ar')) 
	self:assertEquals( formatnum2('1234567890', 'bn'),  cdate.formatnum('1234567890', 'bn')) 
	self:assertEquals( formatnum2('1234567890', 'bpy'), cdate.formatnum('1234567890', 'bpy')) 
	self:assertEquals( formatnum2('1234567890', 'fa'),  cdate.formatnum('1234567890', 'fa')) 
	self:assertEquals( formatnum2('1234567890', 'glk'), cdate.formatnum('1234567890', 'glk')) 
	self:assertEquals( formatnum2('1234567890', 'mzn'), cdate.formatnum('1234567890', 'mzn')) 
	self:assertEquals( formatnum2('1234567890', 'ur'),  cdate.formatnum('1234567890', 'ur')) 
	self:assertEquals( formatnum2('1234567890', 'ckb'), cdate.formatnum('1234567890', 'ckb')) 
	self:assertEquals( formatnum2('1234567890', 'mzn'), cdate.formatnum('1234567890', 'mzn')) 
	self:assertEquals( formatnum2('1234567890', 'ks'),  cdate.formatnum('1234567890', 'ks')) 
	self:assertEquals( formatnum2('1234567890', 'pa'),  cdate.formatnum('1234567890', 'pa')) 
	self:assertEquals( formatnum2('1234567890', 'kn'),  cdate.formatnum('1234567890', 'kn')) 
	self:assertEquals( formatnum2('1234567890', 'hi'),  cdate.formatnum('1234567890', 'hi')) 
	self:assertEquals( formatnum2('1234567890', 'mr'),  cdate.formatnum('1234567890', 'mr')) 
	self:assertEquals( formatnum2('1234567890', 'new'),  cdate.formatnum('1234567890', 'new')) 
	self:assertEquals( formatnum2('1234567890', 'gu'),  cdate.formatnum('1234567890', 'gu')) 
	self:assertEquals( formatnum2('1234567890', 'lo'),  cdate.formatnum('1234567890', 'lo')) 
	self:assertEquals( formatnum2('1234567890', 'or'),  cdate.formatnum('1234567890', 'or')) 
	self:assertEquals( formatnum2('1234567890', 'bo'),  cdate.formatnum('1234567890', 'bo')) 
	self:assertEquals( formatnum2('1234567890', 'gu'),  cdate.formatnum('1234567890', 'gu')) 
	self:assertEquals( formatnum2('1234567890', 'mn'),  cdate.formatnum('1234567890', 'mn')) 
	self:assertEquals( formatnum2('1234567890', 'ta'),  cdate.formatnum('1234567890', 'ta')) 
    self:assertEquals( formatnum2('1234567890', 'th'),  cdate.formatnum('1234567890', 'th')) 
	self:assertEquals( formatnum2('1234567890', 'te'),  cdate.formatnum('1234567890', 'te')) 
	self:assertEquals( formatnum2('1234567890', 'ml-old'), cdate.formatnum('1234567890', 'ml-old')) 
end

return suite