Jump to content

Module:Sandbox/Izno/citationTests

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Izno (talk | contribs) at 04:40, 20 February 2021 (return expansion). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
local myModule = require('Module:Citation/CS1') -- the module to be tested
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()

local function merge(t1, t2)
	local t3 = {}
	for k, v in ipairs(t1) do
		t3[k] = v
	end
	for k, v in ipairs(t2) do
		t3[k] = v
	end
	return t3
end

local function citeref(test_parameters, args)
	local merged_args = merge(test_parameters.base_args, args)
	local expansion = test_parameters.frame:expandTemplate{
		title = test_parameters.template, args = merged_args
	}
	return expansion
--	local _, _, citeref_value = mw.ustring.find(expansion, test_parameters.pattern)
--	if not citeref_value then
--		citeref_value = ''
--	end
--	return citeref_value
end

function suite:testCounts()

	local env = {
		frame = mw.getCurrentFrame(),
		pattern = '(CITEREF%s)\"',
		template = 'cite book/new',
		base_args = { title = 'T', year = '2020' }
	}
	self:assertEquals( '', citeref(env, {chapter = 'CH'}))
	self:assertEquals( 'CITEREF_A1_2020', citeref(env, {author = '_A1_'}))
	self:assertEquals( '', citeref(env, {contributor = 'C1'}))
	self:assertEquals( '', citeref(env, {contributor = 'C1', contribution = 'CON'}))
	self:assertEquals( 'CITEREF_E1_2020', citeref(env, {editor = '_E1_'}))
	self:assertEquals( 'CITEREF_A1_2020', citeref(env, {author = '_A1_', contributor = '_C1_'}))
	self:assertEquals( 'CITEREF_C1_2020', citeref(env, {author = '_A1_', contributor = '_C1_', contribution = 'CON'}))
	self:assertEquals( 'CITEREF_A1_2020', citeref(env, {author = '_A1_', editor = '_E1_'}))
	self:assertEquals( 'CITEREF_E1_2020', citeref(env, {editor = '_E1_', contributor = '_C1_'}))
	self:assertEquals( 'CITEREF_E1_2020', citeref(env, {editor = '_E1_', contributor = '_C1_', contribution = 'CON'}))
	self:assertEquals( 'CITEREF_A1_2020', citeref(env, {author = '_A1_', contributor = '_C1_', editor = '_E1_'}))
	self:assertEquals( 'CITEREF_C1_2020', citeref(env, {author = '_A1_', contributor = '_C1_', editor = '_E1_', contribution = 'CON'}))
	self:assertEquals( 'CITEREF_A1_A2_A3_A4_2020', citeref(env, {author = '_A1_', author2 = 'A2_', author3 = 'A3_', author4 = 'A4_'}))
	self:assertEquals( 'CITEREF_A1_A2_A3_A4_2020', citeref(env, {author = '_A1_', author2 = 'A2_', author3 = 'A3_', author4 = 'A4_', author5 = 'A5_'}))
	self:assertEquals( 'CITEREF_C1_C2_C3_2020', citeref(env, {author = '_A1_', contributor = '_C1_', contributor2 = 'C2_', contributor3 = 'C3_', contribution = 'CON'}))
	self:assertEquals( 'CITEREF_E1_E2_2020', citeref(env, {editor = '_E1_', editor2 = 'E2_'}))
end

-- this function passes but shouldn't.
function suite:testDates()
	local env = {
		frame = mw.getCurrentFrame(),
		pattern = '(CITEREF%s)\"',
		template = 'cite book/new',
		base_args = { title = 'T', author = '_A1_' }
	}
	self:assertEquals( 'CITEREF_A1_2020', citeref(env, {year='2020'}))
	self:assertEquals( 'CITEREF_A1_c._2020', citeref(env, {date='c. 2020'}))
	self:assertEquals( 'CITEREF_A1_2020', citeref(env, {date='1 January 2020'}))
	self:assertEquals( 'CITEREF_A1_2020a', citeref(env, {date='1 January 2020a'})) -- UNEXPECTED NO TRIM IN DISPLAY
	self:assertEquals( 'CITEREF_A1_2020', citeref(env, {date='1 January 2020', year='2020'})) -- and maint
	self:assertEquals( 'CITEREF_A1_2020a', citeref(env, {date='1 January 2020', year='2020a'})) -- UNEXPECTED MAINT
	self:assertEquals( 'CITEREF_A1_2020', citeref(env, {date='2020-01-01', year='2020'})) -- and maint
	self:assertEquals( 'CITEREF_A1_2020a', citeref(env, {date='2020-01-01', year='2020a'}))
end

function suite:testTrailingAuthorDash()
	local env = {
		frame = mw.getCurrentFrame(),
		pattern = '(CITEREF%s)\"',
		template = 'cite book/new',
		base_args = { title = 'T', author = '_A1_' }
	}
	-- should fail: missing trailing underscore in anchor
	self:assertEquals( 'CITEREF_A1_', citeref(env, {chapter='CH'}))
end

function suite:testDateExtraNd()
	local env = {
		frame = mw.getCurrentFrame(),
		pattern = '(CITEREF%s)\"',
		template = 'cite book/new',
		base_args = { title = 'T', author = '_A1_' }
	}
	-- should fail: extra unexpected nd
	self:assertEquals( 'CITEREF_A1', citeref(env, {date='nd'}))
end

function suite:testDateExtraNdPunct()
	local env = {
		frame = mw.getCurrentFrame(),
		pattern = '(CITEREF%s)\"',
		template = 'cite book/new',
		base_args = { title = 'T', author = '_A1_' }
	}
	-- should fail: extra unexpected n.d.
	self:assertEquals( 'CITEREF_A1', citeref(env, {date='n.d.'}))
end



return suite