Module:Current events monthly archive/testcases
Appearance
This is the test cases page for the module Module:Current events monthly archive. Results of the test cases. |
-- Unit tests for [[Module:Current events monthly archive]].
-- View [[Module talk:Current events monthly archive/testcases]] to run tests.
-- While editing, preview this against [[Module talk:Current events monthly archive/testcases]]
-- We are just going to test the date info, and assume that all our argument-
-- checking code is correct, so make that clear here.
local getDateInfo = require('Module:Current events monthly archive/sandbox').getDateInfo
local suite = require('Module:ScribuntoUnit'):new()
-- Test data
local testData = {
-- Normal month and year
{
date = {
year = 2011,
month = 9,
},
results = {
year = 2011,
monthNumber = 9,
date = '2011-09-01',
monthNumberZeroPadded = '09',
monthName = 'September',
monthOrdinal = 'ninth',
daysInMonth = 30,
firstDayOfMonth = 'Thursday',
lastDayOfMonth = 'Friday',
beVerb = 'was',
leapDesc = 'common',
decadeNote = '',
moonNote = '',
},
},
-- Last month of year
{
date = {
year = 2011,
month = 12,
},
results = {
year = 2011,
monthNumber = 12,
date = '2011-12-01',
monthNumberZeroPadded = '12',
monthName = 'December',
monthOrdinal = 'twelfth and final',
daysInMonth = 31,
},
},
-- Unusual month (February)
{
date = {
year = 2011,
month = 2,
},
results = {
year = 2011,
monthNumber = 2,
date = '2011-02-01',
monthNumberZeroPadded = '02',
monthName = 'February',
monthOrdinal = 'second',
daysInMonth = 28,
firstDayOfMonth = 'Tuesday',
lastDayOfMonth = 'Monday',
beVerb = 'was',
leapDesc = 'common',
decadeNote = '',
moonNote = '',
},
},
-- Leap year
{
date = {
year = 1996,
month = 2,
},
results = {
year = 1996,
monthNumber = 2,
date = '1996-02-01',
monthNumberZeroPadded = '02',
monthName = 'February',
monthOrdinal = 'second',
daysInMonth = 29,
leapDesc = 'leap',
decadeNote = '',
moonNote = '',
},
},
-- Another leap year
{
date = {
year = 2004,
month = 1,
},
results = {
year = 2004,
monthNumber = 1,
date = '2004-01-01',
monthNumberZeroPadded = '01',
monthName = 'January',
monthOrdinal = 'first',
daysInMonth = 31,
leapDesc = 'leap',
decadeNote = '',
moonNote = '',
},
},
-- Century leap year, start of decade
{
date = {
year = 2000,
month = 1,
},
results = {
year = 2000,
monthNumber = 1,
leapDesc = 'century leap',
decadeNote = 'It was the first month of the [[2000s]] decade.',
moonNote = '',
},
},
-- Start of decade
{
date = {
year = 2010,
month = 1,
},
results = {
year = 2010,
monthNumber = 1,
decadeNote = 'It was the first month of the [[2010s]] decade.',
},
},
-- End of decade
{
date = {
year = 2009,
month = 12,
},
results = {
year = 2009,
monthNumber = 12,
decadeNote = 'It was the last month of the [[2000s]] decade.',
},
},
-- Start of century
{
date = {
year = 1901,
month = 1,
},
results = {
year = 1901,
monthNumber = 1,
decadeNote = 'It was the first month of the [[20th century]].',
},
},
-- End of century
{
date = {
year = 1900,
month = 12,
},
results = {
year = 1900,
monthNumber = 12,
decadeNote = 'It was the last month of the [[19th century]].',
},
},
-- Unusual ordinal (11th), and start of millennium
{
date = {
year = 1001,
month = 1,
},
results = {
year = 1001,
monthNumber = 1,
decadeNote = 'It was the first month of the [[2nd millennium]] and the [[11th century]].',
},
},
-- Unusual ordinal (12th)
{
date = {
year = 1101,
month = 1,
},
results = {
year = 1101,
monthNumber = 1,
decadeNote = 'It was the first month of the [[12th century]].',
},
},
-- Unusual ordinal (13th)
{
date = {
year = 1201,
month = 1,
},
results = {
year = 1201,
monthNumber = 1,
decadeNote = 'It was the first month of the [[13th century]].',
},
},
-- Start of millennium
{
date = {
year = 2001,
month = 1,
},
results = {
year = 2001,
monthNumber = 1,
decadeNote = 'It was the first month of the [[3rd millennium]] and the [[21st century]].',
},
},
-- End of millennium
{
date = {
year = 2000,
month = 12,
},
results = {
year = 2000,
monthNumber = 12,
decadeNote = 'It was the last month of the [[2nd millennium]] and the [[20th century]].',
},
},
-- Month with no full moon
{
date = {
year = 1999,
month = 2,
},
results = {
year = 1999,
monthNumber = 2,
moonNote = 'This month had no full moon.',
},
},
-- Another month with no full moon
{
date = {
year = 1961,
month = 2,
},
results = {
year = 1961,
monthNumber = 2,
moonNote = 'This month had no full moon.',
},
},
}
for _, dateData in ipairs(testData) do
local year = dateData.date.year
local month = dateData.date.month
for field, value in pairs(dateData.results) do
local funcName = string.format(
'test_%04d_%02d_%s',
year, month, field
)
suite[funcName] = function (self)
-- We could have got the date info once for each date,
-- but doing it once for each field ensures that our
-- tests don't depend on any state changes made by
-- previous tests. This makes the tests less efficient,
-- but probably not enough to make much actual
-- difference.
local dateInfo = getDateInfo(year, month)
self:assertEquals(value, dateInfo[field])
end
end
end
function suite:test_current_date()
local year = tonumber(os.date('%Y'))
local month = tonumber(os.date('%m'))
local dateInfo = getDateInfo(year, month)
self:assertEquals(year, dateInfo.year)
self:assertEquals(month, dateInfo.monthNumber)
self:assertEquals('is', dateInfo.beVerb)
end
function suite:test_next_month()
local year = tonumber(os.date('%Y'))
local month = tonumber(os.date('%m')) + 1
if month == 13 then
month = 1
year = year + 1
end
local dateInfo = getDateInfo(year, month)
self:assertEquals(year, dateInfo.year)
self:assertEquals(month, dateInfo.monthNumber)
self:assertEquals('is', dateInfo.beVerb)
end
function suite:test_last_month()
local year = tonumber(os.date('%Y'))
local month = tonumber(os.date('%m')) - 1
if month == 0 then
month = 12
year = year - 1
end
local dateInfo = getDateInfo(year, month)
self:assertEquals(year, dateInfo.year)
self:assertEquals(month, dateInfo.monthNumber)
self:assertEquals('was', dateInfo.beVerb)
end
function suite:test_december_this_year()
local year = tonumber(os.date('%Y'))
local month = 12
local dateInfo = getDateInfo(year, month)
self:assertEquals(year, dateInfo.year)
self:assertEquals(month, dateInfo.monthNumber)
self:assertEquals('is', dateInfo.beVerb)
end
function suite:test_january_next_year()
local year = tonumber(os.date('%Y')) + 1
local month = 1
local dateInfo = getDateInfo(year, month)
self:assertEquals(year, dateInfo.year)
self:assertEquals(month, dateInfo.monthNumber)
self:assertEquals('is', dateInfo.beVerb)
end
return suite