Module:Sandbox/DixonD/DateTemplates/testcases

-- Unit tests. Click talk page to run tests. local p = require('Module:UnitTests');

function p:testJulianDay self:preprocess_equals_preprocess_many(,        , {        {''},        {'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(,        , {        {''},         {'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(,        , {        {''},         {'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(,        , {        {''},         {'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(,        , {        {''},        {'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(,        , {        {''},        {'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;