มอดูล:Citation/CS1/testcases/errors

--=  16:41, 6 February 2022‎ AManWithNoPlan
Unit tests for Module:Citation/CS1 error messages.  This is not intended to
test every possible thing that can make an error message; rather, it is to test
the creation and rendering of the messages themselves.
Tests are displayed on the talk page alphabetically by test name. By convention,
tests for errors are all lowercase, especially after "test_" e.g. test_disp_name,
which differentiates them from maintenance messages, which have an uppercase
immediately after the "_" e.g. test_Ref_maint.
Click talk page to run tests.
**
local p = require('Module:UnitTests')
--==========================>====================================**
----------------------------------------------------------------------------
function p:test_wikilink_in_url()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'title=Title |url=//example.com |title-link=Title'},				-- citation0()
			{'pmc=12345 |title=Title |url=//example.com |title-link=Title'},	-- citation0()
			{'title=Title |url=//example.com'},								-- safe_for_url()
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------------------------
function p:test_vauthors()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'vauthors=Black ABC'},												-- too many initials
			{'vauthors=Black A-B'},												-- hyphenated initials
			{'vauthors=Black AB II'},											-- invalid generational suffix - does not show an error but it should
			{'vauthors=Black AB 3d'},											-- invalid generational suffix
			{'vauthors=Black, AB, Brown, CD'},									-- improper puncutation - does not show an error but it should
			{'vauthors=Black AB; Brown CD'},									-- improper puncutation
			{'vauthors=Вlack AВ, Вrown CD'},									-- the 'В's are Cyrillic characters
			{'vauthors=Black AB, Вrown CD'},									-- the 'В's in Brown is Cyrillic
			{'vauthors=Black AB Brown CD'},										-- missing comma
			{'vauthors=Black A B'},												-- spaced initials
		},
		{nowiki=false, templatestyles=true}
	)
end
------------------------------------------------------------------------------
function p:test_vancouver()
self:preprocess_equals_preprocess_many(
	, ,
	, ,
		{
			{'last=Black |first=AB 3d'},			-- invalid generational suffix - reduce_to_initials()
			{'last=Вlack |first=Alpha Вravo'},		-- the 'В's are Cyrillic characters
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------------
function p:test_trans_missing_title()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'trans-title=Trans Title'},
		},
		{nowiki=false, templatestyles=true}
	)
end
------------------------------------------------------------------------
function p:test_text_ignored()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'text to be ignored'},
		},
		{nowiki=false, templatestyles=true}
	)
end
------------------------------------------------------------------------
function p:test_ssrn_missing()
self:preprocess_equals_preprocess_many(
	'title=Title', , 'title=Title', ,
		{
			{},
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------------------
function p:test_script_parameter()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'script-title=ja:'},												-- missing title part
			{'script-title=ac:script-title'},									-- unknown language code
			{'script-title=es:script-title'},									-- invalid language code
			{'script-title=script-title'},										-- missing prefix
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------
function p:test_redundant_parameters()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'type=Type |meduim=Meduim'},										-- argument_wrapper()
			{'last=Last |last1=Last1'},											-- extract_names()
			{'last=Last |first=First |first1=First1'},							-- extract_names()
			{'last=Last |first=First |author-mask=Author-mask |author-mask1=Author-mask1'},		-- extract_names()
			{'last=Last |first=First |author-link=Author |author1-link=Author'},				-- extract_names()
			{'vauthors=Author AA |author-link=Author'},				-- parse_vauthors_veditors()
			{'vauthors=Black AB |author2=Brown CD'},							-- select_author_editor_source()
			{'page=1 |pages=3, 4'},												-- citation0()
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------
function p:test_redundant_parameters_2()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'mailing-list=Mailing list |work=work'},							-- argument_wrapper()
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------
function p:test_redundant_parameters_3()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'encyclopedia=Encyclopedia |work=work'},							-- citation0()
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------
function p:test_redundant_parameters_4()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'encyclopedia=Encyclopedia |work=work'},							-- citation0()
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------
function p:test_redundant_parameters_5()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'number=1 |id=ID'},												-- citation0()
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------
function p:test_redundant_parameters_6()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'chapter=Chapter |map=Map'},										-- citation0()
			{'chapter=Chapter'},												-- citation0()
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------
function p:test_redundant_parameters_7()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'season=Season |series-number=Series number'},						-- citation0()
			{'minutes=Minutes |time=Time'},										-- citation0()
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------
function p:test_parameter_ignored_suggest()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'Chapter=Chapter'},												-- citation() - case
			{'pulbisher=Pulbisher'},											-- citation() – misspelled pattern matched
			{'pub=Publisher'},													-- citation() – explicit match
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------
function p:test_parameter_ignored()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'unknown=unknown'},												-- citation()
			{'encyclopedia=Encyclopedia'},										-- citation0() – |encyclopedia= only available in  and 
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------------
function p:test_parameter_ignored_2()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'pulbisher=Pulbisher'},											-- citation() – misspelled pattern matched but suggested param not supported by this template
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------------
function p:test_parameter_ignored_3()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'newsgroup=sommat.sommat.sommat |publisher=Publisher'},					-- citation0() - |publisher= not supported by 
		},
		{nowiki=false, templatestyles=true}
	)
end
------------------------------------------------------------
function p:test_param_has_ext_link()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'title=Title //example.com'},										-- check_for_url()
			{'title=Title http://example.com'},									-- check_for_url()
			{'title= Title'},								-- check_for_url()
		},
		{nowiki=false, templatestyles=true}
	)
end
------------------------------------------
function p:test_param_access_requires_param()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'url-access=subscription'},										-- citation0()
			{'doi-access=free'},												-- extract_id_access_levels() (~/Identifiers)
			{'chapter-url-access=subscription'},								-- citation0()
--			{'map-url-access=subscription'},									-- citation0()
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------
function p:test_param_access_requires_param_2()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'map-url-access=subscription'},									-- citation0()
		},
		{nowiki=false, templatestyles=true}
	)
end
------------------------------------------------------------------------
function p:test_missing_pipe()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'chapter=Chapter access-date=2020-06-10'},							-- missing_pipe_check()
			{'chapter=access-date=2020-06-10'},									-- missing_pipe_check()
		},
		{nowiki=false, templatestyles=true}
	)
end
------------------------------------------------------------
function p:test_missing_periodical()
self:preprocess_equals_preprocess_many(
	'title=Title', , 'title=Title', ,
		{
			{},																-- citation0()
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------
function p:test_missing_periodical_2()
self:preprocess_equals_preprocess_many(
	'title=Title', , 'title=Title', ,
		{
			{},																-- citation0()
		},
		{nowiki=false, templatestyles=true}
	)
end
------------------------------------------------------------------------
function p:test_missing_name()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'author=Black AB |author3=Red EF'},								-- extract_names()
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------------
function p:test_invisible_char()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'title=Title\239\191\189'},										-- replacement char - has_invisible_chars()
			{'title=Title\127UNIQ--spoof-000000-QINU\127'},						-- spoof a stripmarker so that comparison compares the same thing;  does not exist so not replaced with content
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------
function p:test_invalid_param_val()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'mode=cs3'},														-- is_valid_parameter_value()
		},
		{nowiki=false, templatestyles=true}
	)
end
------------------------------------------------------------
function p:test_format_missing_url()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'format=abc'},														-- style_format()
			{'archive-format=def'},
			{'chapter-format=ghi'},
		},
		{nowiki=false, templatestyles=true}
	)
end
------------------------------------------------------------
function p:test_first_missing_last()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'first=AB'},														-- extract_names()
			{'editor-first=AB'},
			{'given=AB'},
			{'editor-given=AB'},
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------------------------------------------
function p:test_etal()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'editor=Black AB; et al'},											-- name_has_etal()
			{'editor=Black AB, et al'},
			{'editor=Black AB et al'},
			{'editor=Black AB "et al"'},
			{'editor=Black AB \'et al\},
			{'editor=Black AB et. al.'},
			{'editor=Black AB ET AL'},
			{'editor=Black AB EtAl'},
			{'editor=Black AB, \'\'et alia.\'\},
			{'editor=Black AB; and others'},
			{'editor=Black AB; et al'},
			{'editor=Black AB; et al'},
			{'editor=Black AB; (et al)'},
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------------
function p:test_empty_citation()
self:preprocess_equals_preprocess_many(
	, ,
		{
			{},																-- citation()
		},
		{nowiki=false, templatestyles=true}
	)
end
------------------------------------------------------
function p:test_doibroken_missing_doi()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'doi-broken-date=June 2020'},																-- citation()
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------
this here for completeness; can't test deprecated param error messaging without actual deprecated parameters; at
this writing, 2020-06-10 there are no deprecated parameters
function p:test_deprecated_params()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'editors'},																-- citation()
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------
function p:test_contributor_missing_required_param()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'contribution=Contribution'},										-- citation0()
			{'author=Author'},													-- citation0()
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------------
function p:test_contributor_ignored()
self:preprocess_equals_preprocess_many(
	'journal= Journal', , 'journal= Journal', ,
		{
			{},																-- citation0()
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------------------------
function p:test_class_ignored()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'arxiv=abc.de/9901333 |class=abc'},								-- arxiv() (~/Identifiers)
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------
function p:test_citeseerx_missing()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'title=Title '},																-- citation0()
		},
		{nowiki=false, templatestyles=true}
	)
end
------------------------------------------------------------------------
function p:test_cite_web_url()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'title=Title'},													-- citation0()
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------------
function p:test_cite_web_url_2()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'title=Title |website=Website'},									-- citation0()
			{'title=Title |script-website=ja:Website'},							-- citation0()
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------
function p:test_citation_missing_title()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'author=Author'},													-- citation0()
		},
		{nowiki=false, templatestyles=true}
	)
end
------------------------------------------------
function p:test_citation_missing_title_2()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'author=Author'},													-- citation0()
		},
		{nowiki=false, templatestyles=true}
	)
end
------------------------------------------------------------------
function p:test_chapter_ignored()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'chapter=Chapter'},												-- citation0()
			{'chapter-url=//example.com'},										-- citation0()
			{'trans-chapter=Trans-chapter'},									-- citation0()
			{'script-chapter=ja:Script-chapter'},								-- citation0()
			{'chapter-format=Chapter-format'},									-- citation0()
		},
		{nowiki=false, templatestyles=true}
	)
end
------------------------------------------------------------------
function p:test_biorxiv_missing()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'title=Title '},													-- citation0()
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------
function p:test_bare_url_missing_title()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'title=Title |chapter-url=//example.com'},													-- citation0()
			{'title=Title |conference-url=//example.com'},													-- citation0()
		},
		{nowiki=false, templatestyles=true}
	)
end
------------------------------------------------
function p:test_bare_url_missing_title_2()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'title=Title |map-url=//example.com'},													-- citation0()
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------------------------------------
function p:test_bad_zbl()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'zbl=ZBL'},														-- zbl() (~/Identifiers)
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------------------------
function p:test_bad_usenet_id()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'message-id=message-id'},											-- usenet_id() (~/Identifiers)
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------------------------------------
function p:test_bad_url()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'url=example.com'},												-- zbl() (~/Identifiers)
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------------------------
function p:test_bad_ssrn()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'ssrn=SSRN'},														-- ssrn() (~/Identifiers)
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------------------------------------
function p:test_bad_sbn()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'sbn=123–456789'},													-- invalid character - sbn() (~/Identifiers)
			{'sbn=12345678'},													-- improper length
			{'sbn=123X45678'},													-- X in wrong spot
			{'sbn=012345678'},													-- incorrect check digit
		},
		{nowiki=false, templatestyles=true}
	)
end
------------------------------------------------------------------------------
function p:test_bad_s2cid()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'s2cid=S2CID'},													-- s2cid() (~/Identifiers)
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------------------------
function p:test_bad_oclc()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'oclc=OCLC'},														-- oclc() (~/Identifiers)
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------------------------
function p:test_bad_pmid()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'pmid=PMID'},														-- pmid() (~/Identifiers)
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------------------------------------
function p:test_bad_pmc()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'pmc=PMC'},														-- pmc() (~/Identifiers)
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------------
function p:test_bad_paramlink()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'title=Title |title-link=Title'},								-- link_title_ok()
			{'title=Title |title-link=Title'},								-- link_title_ok()
			{'title=Title |title-link=//example.com'},							-- link_title_ok()
		},
		{nowiki=false, templatestyles=true}
	)
end
------------------------------------------------------------------------------------
function p:test_bad_ol()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'ol=OL'},															-- ol() (~/Identifiers)
		},
		{nowiki=false, templatestyles=true}
	)
end
------------------------------------------------------------------------------------
function p:test_bad_mr()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'mr=MR'},															-- mr() (~/Identifiers)
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------------------------
function p:test_bad_lccn()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'lccn=LCCN'},														-- lccn() (~/Identifiers)
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------------------------------------
function p:test_bad_jfm()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'jfm=JFM'},														-- jfm() (~/Identifiers)
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------------------------
function p:test_bad_issn()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'issn=ISSN'},														-- issn() (~/Identifiers)
			{'eissn=eISSN'},													-- issn() (~/Identifiers)
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------------------------
function p:test_bad_ismn()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'ismn=ISMN'},														-- ismn() (~/Identifiers)
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------------------------
function p:test_bad_isbn()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'isbn=0–1234567890'},												-- invalid character - ismn() (~/Identifiers)
			{'isbn=01234567890X'},												-- length
			{'isbn=01234X6789'},												-- X in the wrong spot
			{'isbn=978-01234X6789'},											-- isbn13 is digits only
			{'isbn=977-0123456789'},											-- 978 or 979 prefix only
			{'isbn=979-0123456789'},											-- 9790 is ismn
			{'isbn=978-0123456789'},											-- check digit
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------------------------------------
function p:test_bad_hdl()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'hdl=HDL'},														-- hdl() (~/Identifiers)
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------------------------------------
function p:test_bad_doi()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'doi=10.5555/12345678'},											-- invalid registrant - doi() (~/Identifiers)
			{'doi=10.2343/1234 5678'},											-- space char in suffix
			{'doi=11.2343/12345678'},											-- invalid prefix
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------------------------
function p:test_bad_date()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'date=DATE'},														-- citation0()
			{'date=2020 |year=2019'},											-- mismatch
			{'date=9201 |year=2019'},											-- mismatch with date error
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------------------------
function p:test_bad_citeseerx()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'citeseerx=CITESEERX'},											-- citeseerx() (~/Identifiers)
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------------------
function p:test_bad_biorxiv()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'biorxiv=BIORXIV'},												-- biorxiv() (~/Identifiers)
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------------------
function p:test_bad_bibcode()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'bibcode=..................'},										-- length - bibcode() (~/Identifiers)
			{'bibcode=0999...............'},									-- value; missing letter after year
			{'bibcode=0999a..............'},									-- year ----------------------------------------------------
function p:test_bad_asin()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'asin=ASIN'},														-- asin() (~/Identifiers)
		},
		{nowiki=false, templatestyles=true}
	)
end
------------------------------------------------------------------------------
function p:test_bad_arxiv()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'arxiv=ARXIV'},													-- arxiv() (~/Identifiers)
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------------------------
function p:test_arxiv_missing()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'author=Author |title=Title'},										-- citation0()
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------------------
function p:test_archive_url()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'archive-url=//web.archive.org/save/'},							-- save - archive_url_check()
			{'archive-url=//liveweb.archive.org/'},								-- obsolete liveweb url
			{'archive-url=//web.archive.org/2020'},								-- old form url short time stamp
			{'archive-url=//web.archive.org/web/2020'},							-- new form url short time stamp
			{'archive-url=//web.archive.org/20200611000000id_/'},				-- old form without path and with flag
			{'archive-url=//web.archive.org/path/20200611000000id_/'},			-- new form with malformed path and with flag
			{'archive-url=//web.archive.org/web/20200611000000_id/'},			-- new form with path and with malformed flag
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------------
function p:test_archive_missing_url()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'archive-url=//archive.org |archive-date=2020-06-10 |url-status=live'},	-- live - citation0()
			{'archive-url=//archive.org |archive-date=2020-06-10'},				-- anything else
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------
function p:test_apostrophe_markup()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'newspaper=\'\'Newspaper\'\},									-- citation0()
			{'publisher=\'\'\'Newspaper\'\'\},								-- citation0()
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------
function p:test_accessdate_missing_url()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'access-date=2020-06-11'},											-- citation0()
			{'pmc=12345 |access-date=2020-06-11'},
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------------------------------
function p:test_extra_text()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'page=p. 35'},
			{'edition=1st ed.'},
		},
		{nowiki=false, templatestyles=true}
	)
end
------------------------------------------------------------------------------
function p:test_disp_name()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'author=Author |display-authors=1'},
			{'author=Author |contribution=Contribution |contributor=Contributor |display-contributors=1'},
			{'editor=Editor |display-editors=1'},
			{'interviewer=Interviewer |display-interviewers=1'},
			{'translator=Translator |display-translators=1'},
			{'author=Black AB |display-authors=etalia'}
		},
		{nowiki=false, templatestyles=true}
	)
end
--==========================>====================================**
--------------------------------------------------------------------
function p:test_ASIN_uses_ISBN()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'asin=412346789X'},
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------------------------
function p:test_Archived_copy()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'title=Archived copy'},
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------------------------------------
function p:test_Authors()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'authors=Authors'},
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------------------
function p:test_Bot_unknown()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'url-status=bot: unknown'},
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------------------
function p:test_Date_format()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'date=Jun-Jul 2020'},
		},
		{nowiki=false, templatestyles=true}
	)
end
------------------------------------------------------------------------------
function p:test_Date_year()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'date=2020 |year=2020'},
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------
function p:test_Discourage_param()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'url=//example.com |accessdate=2020-04-09'},
			{'url=//example.com |archive-url=//archive.org |archivedate=2020-04-09'},
			{'url=//example.com |archiveurl=//archive.org |archive-date=2020-04-09'},
			{'author=Blue |authorlink=Blue'},
			{'author=Blue |author1link=Blue'},
			{'author=Blue |authorlink1=Blue'},
			{'date=2021 |origyear=1921'},
		},
		{nowiki=false, templatestyles=true}
	)
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'airdate=2021'},
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------------------------------------
function p:test_Pmc_embargo_date()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'pmc=12345 |pmc-embargo-date=1 January 2020'},
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------------------
function p:test_Extra_punct()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'last=Surname,'},
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------------------
function p:test_Extra_text_names()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'author=Author (ed)'},
			{'author=Author |contribution=Contribution |contributor=Contributor (ed)'},
			{'editor=Editor (ed)'},
			{'interviewer=Interviewer (ed)'},
			{'translator=Translator (ed)'},
		},
		{nowiki=false, templatestyles=true}
	)
end
------------------------------------------------------------------
function p:test_Ignore_isbn_err()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'isbn=((978-0123456789))'},						-- check digit
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------------------------
function p:test_Location()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'location=Sec. 6'},
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------------------------------
function p:test_Mult_names()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'author=Name, Name, Name'},
			{'author=Author |contribution=Contribution |contributor=Name, Name, Name'},
			{'editor=Name, Name, Name'},
			{'interviewer=Name, Name, Name'},
			{'translator=Name, Name, Name'},{'author=Name; Name'},
			{'author=Author |contribution=Contribution |contributor=Name; Name'},
			{'editor=Name; Name'},
			{'interviewer=Name; Name'},
			{'translator=Name; Name'},
{'author=Name; Name, Name'},
{'author=Name; Name, Name, Name'},
{'author=Name '},
{'author=Last, FI. MI.'},
{'last=Last |first=FI. MI.'},
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------------------------
function p:test_Numeric_names()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'author=1234'},
			{'author=Author |contribution=Contribution |contributor=1234'},
			{'editor=1234'},
			{'interviewer=1234'},
			{'translator=1234'},
		},
		{nowiki=false, templatestyles=true}
	)
end
------------------------------------------------------------------------------------
function p:test_Others()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'others=Name'},
		},
		{nowiki=false, templatestyles=true}
	)
end
function p:test_Others_avmn()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'others=Name'},
		},
		{nowiki=false, templatestyles=true}
	)
end
----------------------------------------------------------------------------
function p:test_Pmc_format()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'pmc=PMC12345'},
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------------------------
function p:test_Ref_maint()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'ref=harv'},
			{'author=Example|date=2008|ref=CITEREFExample2008'}
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------------------------------
function p:test_Unfit()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'url-status=unfit'},
		},
		{nowiki=false, templatestyles=true}
	)
end
------------------------------------------------------------------------
function p:test_Unknown_lang()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'language=Taglish'},
		},
		{nowiki=false, templatestyles=true}
	)
end
--------------------------------------------------------------------------------
function p:test_Untitled()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'title=none'},
		},
		{nowiki=false, templatestyles=true}
	)
end
------------------------------------------------------------------------------------------
function p:test_Zbl()
self:preprocess_equals_preprocess_many(
	, , , ,
		{
			{'zbl=07013361'},
		},
		{nowiki=false, templatestyles=true}
	)
end
return p