Документация за този модул може да бъде създадена на Модул:Person/testcases/doc

-- Unit tests for [[Module:Person]]. Click talk page to run tests.
local t = require('Module:UnitTests')

local person = require('Module:Person')

-- This is used for mocking calculations which use the current date
function Date.currentDate()
	return { year = 2015, month = 1, day = 1 }
end

function t:test_prepareBirthDateVars()
	self:equals('prepareBirthDateVars - no args', prepareBirthDateVars(), nil)
	self:equals('prepareBirthDateVars - empty, noarg', prepareBirthDateVars(""), nil)
	self:equals('prepareBirthDateVars - empty, empty', prepareBirthDateVars("", ""), nil)
	self:equals('prepareBirthDateVars - nil, noarg', prepareBirthDateVars(nil), nil)
	self:equals('prepareBirthDateVars - nil, nil', prepareBirthDateVars(nil, nil), nil)
	self:equals('prepareBirthDateVars wo empty birth date', prepareBirthDateVars("", "2 март 1911"), nil)
	self:equals('prepareBirthDateVars wo nil birth date', prepareBirthDateVars(nil, "2 март 1911"), nil)

	self:equals_deep('prepareBirthDateVars alive', prepareBirthDateVars("2 март 1960"), {
		date = { day = "2", month = 3, monthName = "март", year = "1960", _ = "2 март 1960" },
		age = 54,
		cats = { "Родени през 1960 година", "Родени на 2 март" }
	})

	self:equals_deep('prepareBirthDateVars dead', prepareBirthDateVars("2 март 1910", "2 май 1995"), {
		date = { day = "2", month = 3, monthName = "март", year = "1910", _ = "2 март 1910" },
		cats = { "Родени през 1910 година", "Родени на 2 март" }
	})

	self:equals_deep('prepareBirthDateVars dead BCE-CE', prepareBirthDateVars("2 март 10 BCE", "2 май 65"), {
		date = { day = "2", month = 3, monthName = "март", year = "10", _ = "2 март 10 BCE", bce = true },
		cats = { "Родени през 10 година пр.н.е.", "Родени на 2 март" }
	})

	self:equals_deep('prepareBirthDateVars dead BCE', prepareBirthDateVars("2 март 90 BCE", "2 май 10 BCE"), {
		date = { day = "2", month = 3, monthName = "март", year = "90", _ = "2 март 90 BCE", bce = true },
		cats = { "Родени през 90 година пр.н.е.", "Родени на 2 март" }
	})

	self:equals_deep('prepareBirthDateVars only birth year', prepareBirthDateVars("1830", "7 януари 1862"), {
		date = { year = "1830", _ = "1830" },
		cats = { "Родени през 1830 година" }
	})

	self:equals_deep('prepareBirthDateVars century', prepareBirthDateVars("8. century", "9. century"), {
		date = { century = "8", _ = "8. century" },
		cats = { "Родени през 8 век" }
	})
	self:equals_deep('prepareBirthDateVars century BCE', prepareBirthDateVars("8. century BCE", "7. century BCE"), {
		date = { century = "8", _ = "8. century BCE", bce = true },
		cats = { "Родени през 8 век пр.н.е." }
	})
end

function t:test_prepareDeathDateVars()
	self:equals('prepareDeathDateVars - noargs', prepareDeathDateVars(), nil)
	self:equals('prepareDeathDateVars - empty, noarg', prepareDeathDateVars(""), nil)
	self:equals('prepareDeathDateVars - empty, empty', prepareDeathDateVars("", ""), nil)
	self:equals('prepareDeathDateVars - nil, noarg', prepareDeathDateVars(nil), nil)
	self:equals('prepareDeathDateVars - nil, nil', prepareDeathDateVars(nil, nil), nil)
	self:equals('prepareDeathDateVars wo death date', prepareDeathDateVars("2 март 1911"), nil)
	self:equals('prepareDeathDateVars wo empty death date', prepareDeathDateVars("2 март 1911", ""), nil)

	self:equals_deep('prepareDeathDateVars dead', prepareDeathDateVars("2 март 1910", "2 май 1995"), {
		date = { day = "2", month = 5, monthName = "май", year = "1995", _ = "2 май 1995" },
		age = 85,
		cats = { "Починали през 1995 година", "Починали на 2 май" }
	})

	self:equals_deep('prepareDeathDateVars wo birth year', prepareDeathDateVars("", "2 май 1995"), {
		date = { day = "2", month = 5, monthName = "май", year = "1995", _ = "2 май 1995" },
		cats = { "Починали през 1995 година", "Починали на 2 май" }
	})

	self:equals_deep('prepareDeathDateVars only birth year', prepareDeathDateVars("1830", "7 януари 1862"), {
		date = { day = "7", month = 1, monthName = "януари", year = "1862", _ = "7 януари 1862" },
		age = 32,
		cats = { "Починали през 1862 година", "Починали на 7 януари" }
	})

	self:equals_deep('prepareDeathDateVars dead BCE-CE', prepareDeathDateVars("2 март 10 BCE", "2 май 65"), {
		date = { day = "2", month = 5, monthName = "май", year = "65", _ = "2 май 65" },
		age = 74,
		cats = { "Починали през 65 година", "Починали на 2 май" }
	})

	self:equals_deep('prepareDeathDateVars dead BCE', prepareDeathDateVars("2 март 90 BCE", "2 май 10 BCE"), {
		date = { day = "2", month = 5, monthName = "май", year = "10", _ = "2 май 10 BCE", bce = true },
		age = 80,
		cats = { "Починали през 10 година пр.н.е.", "Починали на 2 май" }
	})

	self:equals_deep('prepareDeathDateVars century', prepareDeathDateVars("8. century", "9. century"), {
		date = { century = "9", _ = "9. century" },
		cats = { "Починали през 9 век" }
	})
	self:equals_deep('prepareDeathDateVars century BCE', prepareDeathDateVars("8. century BCE", "7. century BCE"), {
		date = { century = "7", _ = "7. century BCE", bce = true },
		cats = { "Починали през 7 век пр.н.е." }
	})
end

function t:test_wikifyDate()
	self:equals('wikifyDate full', wikifyDate({ day = "3", monthName = "март", year = "1880" }), "[[3 март]] [[1880]] г.")
	self:equals('wikifyDate only month and year', wikifyDate({ monthName = "март", year = "1880" }), "март [[1880]] г.")
	self:equals('wikifyDate only year', wikifyDate({ year = "1880" }), "[[1880]] г.")
	self:equals('wikifyDate century', wikifyDate({ century = "9" }), "[[9 век]]")
	self:equals('wikifyDate full BCE', wikifyDate({ day = "3", monthName = "март", year = "80", bce = true }), "[[3 март]] [[80 г. пр.н.е.]]")
	self:equals('wikifyDate only year BCE', wikifyDate({ year = "80", bce = true }), "[[80 г. пр.н.е.]]")
	self:equals('wikifyDate century BCE', wikifyDate({ century = "9", bce = true }), "[[9 век пр.н.е.]]")
end

function t:test_formatDate()
	local vars = {
		date = { day = "2", month = 3, monthName = "март", year = "1960", _ = "2 март 1960" },
		age = 54,
		cats = { "Родени през 1960 година", "Родени на 2 март" }
	}
	self:equals('formatDate', formatDate(vars), '<span class="oneline">[[2 март]] [[1960]] г.<span class="noprint"> <small>(54 г.)</small></span></span>[[Category:Родени през 1960 година]][[Category:Родени на 2 март]]')
end

return t