Module:Sandbox/DixonD/DateTemplates/testcases

Source: Wikipedia, the free encyclopedia.
-- Unit tests. Click talk page to run tests.
local p = require('Module:UnitTests');

function p:testJulianDay()
    self:preprocess_equals_preprocess_many('{{#invoke:Sandbox/DixonD/DateTemplates|julianDay|', '}}', 
        '{{JULIANDAY|', '}}', {
        {''},
        {'aaa'},
        -- Errors are expected in most results below (dates not supported by the template due to its use of the PHP "round0" operator on negative dividends).
        {'-4800|2|29|23|59|59'},
        {'-4800|3|1|0|0|0'},
        {'-4800|3|1'},
        {'-4800|3|2'},
        {'-4799|2|28|23|59|59'},
        -- This is the first correct date (epoch: 1 March 4800 BC 12:00:00 UTC) with the JULIANDAY template.
        {'-4799|3|1|0|0|0'},
        {'-4799|3|1'},
        {'-4799|12|31'},
        {'-4713|3|1'},
        {'-4713|11|24'},
        {'-4713|11|25'},
        {'-4700|3|1'},
        {'0'},
        {'0|1|1'},
        {'0|12|25'},
        {'0|12|30'},
        {'0|12|31'},
        {'1|1|1'},
        {'200|2|28'},
        {'200|3|1'},
        {'300|2|28'},
        {'300|3|1'},
        {'325|3|21'},
        {'1782|10|14'},
        {'1782|10|15'},
        {'1858|11|16|12|00|00'},
        {'1858|11|17|00|00|00'},
        {'1968|05|24|00|00|00'},
        {'1995|10|10|00|00|00'},
        {'1999|12|31'},
        {'2000|1|1'},
        {'2000|1|2'},
        {'2000|2|1'},
        {'2000|3|1'},
        {'2000|12|31'},
        {'2001|1|1'},
        {'2001|12|31'},
        {'2002|12|31'},
        {'2003|12|31'},
        {'2006|2|1'},
        {'2006|3|1'},
        {'2006|3|31'},
        {'2006|4|30|0|0|0'},
        {'2006|4|30|01|35|48'},
        {'2006|4|30|11|59|60'},
        {'2006|4|30|12.0'},
        {'2006|4|30'},
        {'2006|4|30|23|59|59'},
        {'2006|5|1|00|00|00'},
        {'2006|5|1|12|00|00'},
        {'2006|5|1'},
        -- some tests with expressions
        {'2000+6|6-1|1'},
    });
end

function p:testYearOfJulianDay()
    self:preprocess_equals_preprocess_many('{{#invoke:Sandbox/DixonD/DateTemplates|yearOfJulianDay|', '}}', 
        '{{JULIANDAY.YEAR|', '}}', {
        {''}, 
        {'aaa'}, 
        -- Errors are expected in most results below (dates not supported by the template due to its use of the PHP "round0" operator on negative dividends).
        {'-32410'},             -- ?
        {'-32409'},             -- ?
        {'-32044.500011574'},   -- -4800|2|29|23|59|59
        {'-32044.5'},           -- -4800|3|1|0|0|0 
        {'-32044'},             -- -4800|3|1
        {'-32043'},             -- -4800|3|2
        {'-31680.500011574'},   -- -4799|2|28|23|59|59
        {'-31679.5'},           -- -4799|3|1|0|0|0
        -- This is the first correct date (epoch: 1 March 4800 BC 12:00:00 UTC) with the JULIANDAY.DAY template.
        {'-31679'},             -- -4799|3|1
        {'-31374'},             -- -4799|12|31
        {'-268'},               -- -4713|3|1
        {'0'},                  -- -4713|11|24
        {'1'},                  -- -4713|11|25
        {'4480'},               -- -4700|3|1
        {'1721060'},            -- 0, 0|1|1
        {'1721419'},            -- 0|12|25
        {'1721424'},            -- 0|12|30
        {'1721425'},            -- 0|12|31
        {'1721426'},            -- 1|1|1
        {'1794167'},            -- 200|2|28
        {'1794168'},            -- 200|3|1
        {'1830691'},            -- 300|2|28
        {'1830692'},            -- 300|3|1
        {'1839843'},            -- 325|3|21
        {'2372209'},            -- 1782|10|14
        {'2372210'},            -- 1782|10|15
        {'2400000'},            -- 1858|11|16|12|00|00
        {'2400000.5'},          -- 1858|11|17|00|00|00
        {'2440000.5'},          -- 1968|05|24|00|00|00
        {'2450000.5'},          -- 1995|10|10|00|00|00
        {'2451544'},            -- 1999|12|31
        {'2451545'},            -- 2000|1|1
        {'2451546'},            -- 2000|1|2
        {'2451576'},            -- 2000|2|1
        {'2451605'},            -- 2000|3|1
        {'2451910'},            -- 2000|12|31
        {'2451911'},            -- 2001|1|1
        {'2452275'},            -- 2001|12|31
        {'2452640'},            -- 2002|12|31
        {'2453005'},            -- 2003|12|31
        {'2453768'},            -- 2006|2|1
        {'2453796'},            -- 2006|3|1
        {'2453826'},            -- 2006|3|31
        {'2453855.5'},          -- 2006|4|30|0|0|0
        {'2453855.5665278'},    -- 2006|4|30|01|35|48
        {'2453856'},            -- 2006|4|30|11|59|60, 2006|4|30|12.0, 2006|4|30
        {'2453856.4999884'},    -- 2006|4|30|23|59|59
        {'2453856.5'},          -- 2006|5|1|00|00|00
        {'2453857'},            -- 2006|5|1|12|00|00, 2006|5|1, 2000+6|6-1|1
        {'2+2453857-1-1'},      -- same date with expressions
    });
end

function p:testMonthOfJulianDay()
    self:preprocess_equals_preprocess_many('{{#invoke:Sandbox/DixonD/DateTemplates|monthOfJulianDay|', '}}', 
        '{{JULIANDAY.MONTH|', '}}', {
        {''}, 
        {'aaa'}, 
        -- Errors are expected in most results below (dates not supported by the template due to its use of the PHP "round0" operator on negative dividends).
        {'-32410'},             -- ?
        {'-32409'},             -- ?
        {'-32044.500011574'},   -- -4800|2|29|23|59|59
        {'-32044.5'},           -- -4800|3|1|0|0|0 
        {'-32044'},             -- -4800|3|1
        {'-32043'},             -- -4800|3|2
        {'-31680.500011574'},   -- -4799|2|28|23|59|59
        {'-31679.5'},           -- -4799|3|1|0|0|0
        -- This is the first correct date (epoch: 1 March 4800 BC 12:00:00 UTC) with the JULIANDAY.DAY template.
        {'-31679'},             -- -4799|3|1
        {'-31374'},             -- -4799|12|31
        {'-268'},               -- -4713|3|1
        {'0'},                  -- -4713|11|24
        {'1'},                  -- -4713|11|25
        {'4480'},               -- -4700|3|1
        {'1721060'},            -- 0, 0|1|1
        {'1721419'},            -- 0|12|25
        {'1721424'},            -- 0|12|30
        {'1721425'},            -- 0|12|31
        {'1721426'},            -- 1|1|1
        {'1794167'},            -- 200|2|28
        {'1794168'},            -- 200|3|1
        {'1830691'},            -- 300|2|28
        {'1830692'},            -- 300|3|1
        {'1839843'},            -- 325|3|21
        {'2372209'},            -- 1782|10|14
        {'2372210'},            -- 1782|10|15
        {'2400000'},            -- 1858|11|16|12|00|00
        {'2400000.5'},          -- 1858|11|17|00|00|00
        {'2440000.5'},          -- 1968|05|24|00|00|00
        {'2450000.5'},          -- 1995|10|10|00|00|00
        {'2451544'},            -- 1999|12|31
        {'2451545'},            -- 2000|1|1
        {'2451546'},            -- 2000|1|2
        {'2451576'},            -- 2000|2|1
        {'2451605'},            -- 2000|3|1
        {'2451910'},            -- 2000|12|31
        {'2451911'},            -- 2001|1|1
        {'2452275'},            -- 2001|12|31
        {'2452640'},            -- 2002|12|31
        {'2453005'},            -- 2003|12|31
        {'2453768'},            -- 2006|2|1
        {'2453796'},            -- 2006|3|1
        {'2453826'},            -- 2006|3|31
        {'2453855.5'},          -- 2006|4|30|0|0|0
        {'2453855.5665278'},    -- 2006|4|30|01|35|48
        {'2453856'},            -- 2006|4|30|11|59|60, 2006|4|30|12.0, 2006|4|30
        {'2453856.4999884'},    -- 2006|4|30|23|59|59
        {'2453856.5'},          -- 2006|5|1|00|00|00
        {'2453857'},            -- 2006|5|1|12|00|00, 2006|5|1, 2000+6|6-1|1
        {'2+2453857-1-1'},      -- same date with expressions
    });
end

function p:testDayOfJulianDay()
    self:preprocess_equals_preprocess_many('{{#invoke:Sandbox/DixonD/DateTemplates|dayOfJulianDay|', '}}', 
        '{{JULIANDAY.DAY|', '}}', {
        {''}, 
        {'aaa'}, 
        -- Errors are expected in most results below (dates not supported by the template due to its use of the PHP "round0" operator on negative dividends).
        {'-32410'},             -- ?
        {'-32409'},             -- ?
        {'-32044.500011574'},   -- -4800|2|29|23|59|59
        {'-32044.5'},           -- -4800|3|1|0|0|0 
        {'-32044'},             -- -4800|3|1
        {'-32043'},             -- -4800|3|2
        {'-31680.500011574'},   -- -4799|2|28|23|59|59
        {'-31679.5'},           -- -4799|3|1|0|0|0
        -- This is the first correct date (epoch: 1 March 4800 BC 12:00:00 UTC) with the JULIANDAY.DAY template.
        {'-31679'},             -- -4799|3|1
        {'-31374'},             -- -4799|12|31
        {'-268'},               -- -4713|3|1
        {'0'},                  -- -4713|11|24
        {'1'},                  -- -4713|11|25
        {'4480'},               -- -4700|3|1
        {'1721060'},            -- 0, 0|1|1
        {'1721419'},            -- 0|12|25
        {'1721424'},            -- 0|12|30
        {'1721425'},            -- 0|12|31
        {'1721426'},            -- 1|1|1
        {'1794167'},            -- 200|2|28
        {'1794168'},            -- 200|3|1
        {'1830691'},            -- 300|2|28
        {'1830692'},            -- 300|3|1
        {'1839843'},            -- 325|3|21
        {'2372209'},            -- 1782|10|14
        {'2372210'},            -- 1782|10|15
        {'2400000'},            -- 1858|11|16|12|00|00
        {'2400000.5'},          -- 1858|11|17|00|00|00
        {'2440000.5'},          -- 1968|05|24|00|00|00
        {'2450000.5'},          -- 1995|10|10|00|00|00
        {'2451544'},            -- 1999|12|31
        {'2451545'},            -- 2000|1|1
        {'2451546'},            -- 2000|1|2
        {'2451576'},            -- 2000|2|1
        {'2451605'},            -- 2000|3|1
        {'2451910'},            -- 2000|12|31
        {'2451911'},            -- 2001|1|1
        {'2452275'},            -- 2001|12|31
        {'2452640'},            -- 2002|12|31
        {'2453005'},            -- 2003|12|31
        {'2453768'},            -- 2006|2|1
        {'2453796'},            -- 2006|3|1
        {'2453826'},            -- 2006|3|31
        {'2453855.5'},          -- 2006|4|30|0|0|0
        {'2453855.5665278'},    -- 2006|4|30|01|35|48
        {'2453856'},            -- 2006|4|30|11|59|60, 2006|4|30|12.0, 2006|4|30
        {'2453856.4999884'},    -- 2006|4|30|23|59|59
        {'2453856.5'},          -- 2006|5|1|00|00|00
        {'2453857'},            -- 2006|5|1|12|00|00, 2006|5|1, 2000+6|6-1|1
        {'2+2453857-1-1'},      -- same date with expressions
    });
end

function p:testJulianDayJulian()
    self:preprocess_equals_preprocess_many('{{#invoke:Sandbox/DixonD/DateTemplates|julianDayJulian|', '}}', 
        '{{JULIANDAY.JULIAN|', '}}', {
        {''},
        {'aaa'},
        -- Errors are expected in most results below (dates not supported by the template due to its use of the PHP "round0" operator on negative dividends).
        {'-4800|2|29|23|59|59'},
        {'-4800|3|1|0|0|0'},
        {'-4800|3|1'},
        {'-4800|3|2'},
        {'-4799|2|28|23|59|59'},
        -- This is the first correct date (epoch: 1 March 4800 BC 12:00:00 UTC) with the JULIANDAY template.
        {'-4799|3|1|0|0|0'},
        {'-4799|3|1'},
        {'-4799|12|31'},
        {'-4713|3|1'},
        {'-4713|11|24'},
        {'-4713|11|25'},
        {'-4700|3|1'},
        {'0'},
        {'0|1|1'},
        {'0|12|25'},
        {'0|12|30'},
        {'0|12|31'},
        {'1|1|1'},
        {'200|2|28'},
        {'200|3|1'},
        {'300|2|28'},
        {'300|3|1'},
        {'325|3|21'},
        {'1782|10|14'},
        {'1782|10|15'},
        {'1858|11|16|12|00|00'},
        {'1858|11|17|00|00|00'},
        {'1968|05|24|00|00|00'},
        {'1995|10|10|00|00|00'},
        {'1999|12|31'},
        {'2000|1|1'},
        {'2000|1|2'},
        {'2000|2|1'},
        {'2000|3|1'},
        {'2000|12|31'},
        {'2001|1|1'},
        {'2001|12|31'},
        {'2002|12|31'},
        {'2003|12|31'},
        {'2006|2|1'},
        {'2006|3|1'},
        {'2006|3|31'},
        {'2006|4|30|0|0|0'},
        {'2006|4|30|01|35|48'},
        {'2006|4|30|11|59|60'},
        {'2006|4|30|12.0'},
        {'2006|4|30'},
        {'2006|4|30|23|59|59'},
        {'2006|5|1|00|00|00'},
        {'2006|5|1|12|00|00'},
        {'2006|5|1'},
        -- some tests with expressions
        {'2000+6|6-1|1'},
    });
end

function p:testGregorianSerialDate()
    self:preprocess_equals_preprocess_many('{{#invoke:Sandbox/DixonD/DateTemplates|gregorianSerialDate|', '}}', 
        '{{Gregorian serial date|', '}}', {
        {''},
        {'year=aaa'},
        {'year=2006|month=bbb'},
        {'year=2006|month=2|day=ccc'},
        -- Errors are expected in most results below (dates not supported by the template due to its use of the PHP "round0" operator on negative dividends).
        {'year=-4800|month=2|day=29'},
        {'year=-470|month=3|day=1'},
        {'year=0'},
        {'year=0|month=1|day=1'},
        {'year=0|month=12|day=25'},
        {'year=0|month=12|day=30'},
        {'year=0|month=12|day=31'},
        -- This is the first correct date (epoch: 1 March 4800 BC 12:00:00 UTC) with the JULIANDAY template.
        {'year=1|month=1|day=1'},
        {'year=200|month=2|day=28'},
        {'year=200|month=3|day=1'},
        {'year=300|month=2|day=28'},
        {'year=300|month=3|day=1'},
        {'year=325|month=3|day=21'},
        {'year=1782|month=10|day=14'},
        {'year=1782|month=10|day=15'},
        {'year=1858|month=11|day=16'},
        {'year=1858|month=11|day=17'},
        {'year=1968|month=05|day=24'},
        {'year=1995|month=10|day=10'},
        {'year=1999|month=12|day=31'},
        {'year=2000|month=1|day=1'},
        {'year=2000|month=1|day=2'},
        {'year=2000|month=2|day=1'},
        {'year=2000|month=3|day=1'},
        {'year=2000|month=12|day=31'},
        {'year=2001|month=1|day=1'},
        {'year=2001|month=12|day=31'},
        {'year=2002|month=12|day=31'},
        {'year=2003|month=12|day=31'},
        {'year=2006'},
        {'year=2006|month=2|day=1'},
        {'year=2006|month=3|day=1'},
        {'year=2006|month=3|day=31'},
        {'year=2006|month=4|day=30'},
        {'year=2006|month=5|day=1'},
        {'year=2006|month=5'},
        -- some tests with expressions
        {'year=2000+6|month=6-1|day=1'},
    });
end

return p;