-- Unit tests per il [[Modulo:Data]]. Cliccare sulla pagina di discussione per eseguire i test.
local p = require("Modulo:UnitTests")

function p:test_diff_ymd()
	self:preprocess_equals_many("{{#invoke:Data|diff_ymd|from=2016/01/01|to=", "}}", {
		-- anno
		{ "2006/01/01", "10 anni" },
		{ "2015/01/01", "1 anno" },
		-- mesi
		{ "2015/02/01", "11 mesi" },
		{ "2015/12/01", "1 mese" },
		-- giorni
		{ "2015/12/02", "30 giorni" },
		{ "2015/12/22", "10 giorni" },
		{ "2015/12/31", "1 giorno" },
		{ "2016/01/01", "0 giorni" },
		{ "2016/01/02", "1 giorno" },
		-- mese e giorni
		{ "2015/11/30", "1 mese e 1 giorno" },
		{ "2015/10/30", "2 mesi e 2 giorni" },
		{ "2015/09/28", "3 mesi e 3 giorni" },
		{ "2015/08/28", "4 mesi e 4 giorni" },
		{ "2015/07/27", "5 mesi e 5 giorni" },		
		{ "2015/01/02", "11 mesi e 30 giorni" },
		-- anni e giorni
		{ "2014/12/31", "1 anno e 1 giorno" },
		{ "2013/12/30", "2 anni e 2 giorni" },
		{ "2012/12/29", "3 anni e 3 giorni" },
		{ "2011/12/28", "4 anni e 4 giorni" },
		{ "2010/12/27", "5 anni e 5 giorni" },
		-- anni e mesi
		{ "2014/12/01", "1 anno e 1 mese" },
		{ "2013/11/01", "2 anni e 2 mesi" },
		{ "2012/10/01", "3 anni e 3 mesi" },
		{ "2011/09/01", "4 anni e 4 mesi" },
		{ "2010/08/01", "5 anni e 5 mesi" },
		-- anni, mesi e giorni
		{ "2014/11/30", "1 anno, 1 mese e 1 giorno" },
		{ "2013/10/30", "2 anni, 2 mesi e 2 giorni" },
		{ "2012/09/28", "3 anni, 3 mesi e 3 giorni" },
		{ "2011/08/28", "4 anni, 4 mesi e 4 giorni" },
		{ "2010/07/27", "5 anni, 5 mesi e 5 giorni" },
	})
end

function p:test_diff()
	self:preprocess_equals_many("{{#invoke:Data|diff|from=2016/01/01|to=", "}}", {
		-- anno
		{ "2006/01/01|magnitudine=anni", "10 anni fa" },
		{ "2026/01/01|magnitudine=anni", "tra 10 anni" },
		{ "2015/01/01|magnitudine=anni", "1 anno fa" },
		{ "2017/01/01|magnitudine=anni", "tra 1 anno" },
		-- mese
		{ "2015/02/01|magnitudine=mesi", "11 mesi fa" },
		{ "2016/12/01|magnitudine=mesi", "tra 11 mesi" },
		{ "2015/12/01|magnitudine=mesi", "1 mese fa" },
		{ "2016/02/01|magnitudine=mesi", "tra 1 mese" },
		-- settimane
		{ "2015/12/23|magnitudine=settimane", "1 settimana fa" },
		{ "2016/01/08|magnitudine=settimane", "tra 1 settimana" },
		{ "2015/01/01|magnitudine=settimane", "52 settimane fa" },
		{ "2017/01/01|magnitudine=settimane", "tra 52 settimane" },
		-- giorni
		{ "2015/12/31|magnitudine=giorni", "1 giorno fa" },
		{ "2016/01/02|magnitudine=giorni", "tra 1 giorno" },
		{ "2015/09/23|magnitudine=giorni", "100 giorni fa" },
		{ "2016/04/10|magnitudine=giorni", "tra 100 giorni" },
	})
end

function p:test_diff_hms()
	self:preprocess_equals_many("{{#invoke:Data|diff|from=2016/01/01 12:00:00|to=", "}}", {
		-- ore
		{ "2015/12/31 21:00:00|magnitudine=ore", "15 ore fa" },
		{ "2016/01/02 03:00:00|magnitudine=ore", "tra 15 ore" },
		{ "2016/01/01 11:00:00|magnitudine=ore", "1 ora fa" },
		{ "2016/01/01 13:00:00|magnitudine=ore", "tra 1 ora" },
		-- minuti
		{ "2016/01/01 11:45:00|magnitudine=minuti", "15 minuti fa" },
		{ "2016/01/01 12:15:00|magnitudine=minuti", "tra 15 minuti" },
		{ "2016/01/01 02:00:00|magnitudine=minuti", "600 minuti fa" },
		{ "2016/01/01 22:00:00|magnitudine=minuti", "tra 600 minuti" },
		-- secondi
		{ "2016/01/01 11:59:45|magnitudine=secondi", "15 secondi fa" },
		{ "2016/01/01 12:00:15|magnitudine=secondi", "tra 15 secondi" },
		{ "2016/01/01 11:50:00|magnitudine=secondi", "600 secondi fa" },
		{ "2016/01/01 12:10:00|magnitudine=secondi", "tra 600 secondi" },
	})
end

function p:test_diff_magnitudine()
	self:preprocess_equals_many("{{#invoke:Data|diff|from=2016/01/01 12:00:00|to=", "}}", {
		-- fino a 120 secondi (esclusi) => secondi
		{ "2016/01/01 11:58:01", "119 secondi fa" },
		{ "2016/01/01 12:01:59", "tra 119 secondi" },
		-- da 2 minuti a 120 minuti (esclusi) => minuti
		{ "2016/01/01 11:58:00", "2 minuti fa" },
		{ "2016/01/01 12:02:00", "tra 2 minuti" },
		{ "2016/01/01 10:01:00", "119 minuti fa" },
		{ "2016/01/01 13:59:00", "tra 119 minuti" },
		-- da 2 ore a 48 ore (esclusi) => ore
		{ "2016/01/01 10:00:00", "2 ore fa" },
		{ "2016/01/01 14:00:00", "tra 2 ore" },
		{ "2015/12/30 13:00:00", "47 ore fa" },
		{ "2016/01/03 11:00:00", "tra 47 ore" },
		-- da 2 giorni a 2 mesi (esclusi) => giorni
		{ "2015/12/30 12:00:00", "2 giorni fa" },
		{ "2016/01/03 12:00:00", "tra 2 giorni" },
		{ "2015/11/02 12:00:00", "60 giorni fa" },
		{ "2016/02/28 12:00:00", "tra 58 giorni" },
		-- da 2 mesi a 2 anni (esclusi) => mesi
		{ "2015/11/01 12:00:00", "2 mesi fa" },
		{ "2016/03/01 12:00:00", "tra 2 mesi" },
		{ "2014/02/01 12:00:00", "23 mesi fa" },
		{ "2017/12/01 12:00:00", "tra 23 mesi" },
		-- oltre i due anni => anni
		{ "2014/01/01 12:00:00", "2 anni fa" },
		{ "2018/01/01 12:00:00", "tra 2 anni" },
		{ "2006/01/01 12:00:00", "10 anni fa" },
		{ "2026/01/01 12:00:00", "tra 10 anni" },
	})
end


function p:test_diff_magnitudine_min()
	self:preprocess_equals_many("{{#invoke:Data|diff|from=2016/01/01 12:00:00|to=", "}}", {
		-- minuti
		{ "2016/01/01 11:59:00|magnitudine min=minuti", "1 minuto fa" },
		-- ore
		{ "2016/01/01 11:00:00|magnitudine min=ore", "1 ora fa" },
		-- giorni
		{ "2015/12/31 12:00:00|magnitudine min=giorni", "1 giorno fa" },
		-- mesi
		{ "2015/12/01 12:00:00|magnitudine min=mesi", "1 mese fa" },
	})
end

return p