Module:Citation/CS1/testcases/errors

--[=[ 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') --==========================<< E R R O R  M E S S A G E S >>======================================== ----< W I K I L I N K _ I N _ U R L >

function p:test_wikilink_in_url self:preprocess_equals_preprocess_many(   	, ,		{			{'title=Title |url=https://example.com |title-link=Title'},				-- citation0			{'pmc=12345 |title=Title |url=https://example.com |title-link=Title'},	-- citation0			{'title=Title |url=https://example.com'},								-- safe_for_url		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ V A U T H O R S >

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

----< T E S T _ V A N C O U V E R >--

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

----< T E S T _ T R A N S _ M I S S I N G _ T I T L E >--

function p:test_trans_missing_title self:preprocess_equals_preprocess_many(   	, ,		{			{'trans-title=Trans Title'},		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ T E X T _ I G N O R E D >

function p:test_text_ignored self:preprocess_equals_preprocess_many(   	, ,		{			{'text to be ignored'},		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ S S R N _ M I S S I N G >

function p:test_ssrn_missing self:preprocess_equals_preprocess_many(   	, ,		{			{''},		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ S C R I P T _ P A R A M E T E R >

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

----< T E S T _ R E D U N D A N T _ P A R A M E T E R S >

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

----< T E S T _ R E D U N D A N T _ P A R A M E T E R S _ 2 >

function p:test_redundant_parameters_2 self:preprocess_equals_preprocess_many(   	, ,		{			{'mailing-list=Mailing list |work=work'},							-- argument_wrapper		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ R E D U N D A N T _ P A R A M E T E R S _ 3 >

function p:test_redundant_parameters_3 self:preprocess_equals_preprocess_many(   	, ,		{			{'encyclopedia=Encyclopedia |work=work'},							-- citation0		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ R E D U N D A N T _ P A R A M E T E R S _ 4 >

function p:test_redundant_parameters_4 self:preprocess_equals_preprocess_many(   	, ,		{			{'encyclopedia=Encyclopedia |work=work'},							-- citation0		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ R E D U N D A N T _ P A R A M E T E R S _ 5 >

function p:test_redundant_parameters_5 self:preprocess_equals_preprocess_many(   	, ,		{			{'number=1 |id=ID'},												-- citation0		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ R E D U N D A N T _ P A R A M E T E R S _ 6 >

function p:test_redundant_parameters_6 self:preprocess_equals_preprocess_many(   	, ,		{			{'chapter=Chapter |map=Map'},										-- citation0			{'chapter=Chapter'},												-- citation0		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ R E D U N D A N T _ P A R A M E T E R S _ 7 >

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

----< T E S T _ P A R A M E T E R _ I G N O R E D _ S U G G E S T >--

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

----< T E S T _ P A R A M E T E R _ I G N O R E D >--

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

----< T E S T _ P A R A M E T E R _ I G N O R E D _ 2 >--

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

----< T E S T _ P A R A M E T E R _ I G N O R E D _ 3 >--

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

----< T E S T _ P A R A M _ H A S _ E X T _ L I N K >

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

----< T E S T _ P A R A M _ A C C E S S _ R E Q U I R E S _ P A R A M >--

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

----< T E S T _ P A R A M _ A C C E S S _ R E Q U I R E S _ P A R A M _ 2 >--

function p:test_param_access_requires_param_2 self:preprocess_equals_preprocess_many(   	, ,		{			{'map-url-access=subscription'},									-- citation0		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ M I S S I N G _ P I P E >

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

----< T E S T _ M I S S I N G _ P E R I O D I C A L >

function p:test_missing_periodical self:preprocess_equals_preprocess_many(   	, ,		{			{''},																-- citation0		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ M I S S I N G _ P E R I O D I C A L _ 2 >

function p:test_missing_periodical_2 self:preprocess_equals_preprocess_many(   	, ,		{			{''},																-- citation0		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ M I S S I N G _ N A M E >

function p:test_missing_name self:preprocess_equals_preprocess_many(   	, ,		{			{'author=Black AB |author3=Red EF'},								-- extract_names		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ I N V I S I B L E _ C H A R >

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

----< T E S T _ I N V A L I D _ P A R A M _ V A L >--

function p:test_invalid_param_val self:preprocess_equals_preprocess_many(   	, ,		{			{'mode=cs3'},														-- is_valid_parameter_value		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ F O R M A T _ M I S S I N G _ U R L >

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

----< T E S T _ F I R S T _ M I S S I N G _ L A S T >

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

----< T E S T _ E T A L >

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

----< T E S T _ E M P T Y _ C I T A T I O N >

function p:test_empty_citation self:preprocess_equals_preprocess_many(   	, ,		{			{''},																-- citation		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ D O I B R O K E N _ M I S S I N G _ D O I >--

function p:test_doibroken_missing_doi self:preprocess_equals_preprocess_many(   	, ,		{			{'doi-broken-date=June 2020'},																-- citation		},		{nowiki=false, templatestyles=true}	) end

--[[--< T E S T _ D E P R E C A T E D _ P A R A M S >--

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

----< T E S T _ C O N T R I B U T O R _ M I S S I N G _ R E Q U I R E D _ P A R A M >

function p:test_contributor_missing_required_param self:preprocess_equals_preprocess_many(   	, ,		{			{'contribution=Contribution'},										-- citation0			{'author=Author'},													-- citation0		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ C O N T R I B U T O R _ I G N O R E D >--

function p:test_contributor_ignored self:preprocess_equals_preprocess_many(   	, ,		{			{''},																-- citation0		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ C L A S S _ I G N O R E D >--

function p:test_class_ignored self:preprocess_equals_preprocess_many(   	, ,		{			{'arxiv=abc.de/9901333 |class=abc'},								-- arxiv (~/Identifiers)		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ C I T E S E E R X _ M I S S I N G >--

function p:test_citeseerx_missing self:preprocess_equals_preprocess_many(   	, ,		{			{'title=Title '},																-- citation0		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ C I T E _ W E B _ U R L >

function p:test_cite_web_url self:preprocess_equals_preprocess_many(   	, ,		{			{'title=Title'},													-- citation0		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ C I T E _ W E B _ U R L _ 2 >

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

----< T E S T _ C I T A T I O N _ M I S S I N G _ T I T L E >

function p:test_citation_missing_title self:preprocess_equals_preprocess_many(   	, ,		{			{'author=Author'},													-- citation0		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ C I T A T I O N _ M I S S I N G _ T I T L E _ 2 >

function p:test_citation_missing_title_2 self:preprocess_equals_preprocess_many(   	, ,		{			{'author=Author'},													-- citation0		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ C H A P T E R _ I G N O R E D >--

function p:test_chapter_ignored self:preprocess_equals_preprocess_many(   	, ,		{			{'chapter=Chapter'},												-- citation0			{'chapter-url=https://example.com'},								-- citation0			{'trans-chapter=Trans-chapter'},									-- citation0			{'script-chapter=ja:Script-chapter'},								-- citation0			{'chapter-format=Chapter-format'},									-- citation0		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ B I O R X I V _ M I S S I N G >--

function p:test_biorxiv_missing self:preprocess_equals_preprocess_many(   	, ,		{			{'title=Title '},													-- citation0		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ B A R E _ U R L _ M I S S I N G _ T I T L E >

function p:test_bare_url_missing_title self:preprocess_equals_preprocess_many(   	, ,		{			{'title=Title |chapter-url=https://example.com'},													-- citation0			{'title=Title |conference-url=https://example.com'},													-- citation0		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ B A R E _ U R L _ M I S S I N G _ T I T L E _ 2 >

function p:test_bare_url_missing_title_2 self:preprocess_equals_preprocess_many(   	, ,		{			{'title=Title |map-url=https://example.com'},													-- citation0		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ B A D _ Z B L >--

function p:test_bad_zbl self:preprocess_equals_preprocess_many(   	, ,		{			{'zbl=ZBL'},														-- zbl (~/Identifiers)		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ B A D _ U S E N E T _ I D >--

function p:test_bad_usenet_id self:preprocess_equals_preprocess_many(   	, ,		{			{'message-id=message-id'},											-- usenet_id (~/Identifiers)		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ B A D _ U R L >--

function p:test_bad_url self:preprocess_equals_preprocess_many(   	, ,		{			{'url=example.com'},												-- zbl (~/Identifiers)		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ B A D _ S S R N >

function p:test_bad_ssrn self:preprocess_equals_preprocess_many(   	, ,		{			{'ssrn=SSRN'},														-- ssrn (~/Identifiers)		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ B A D _ S B N >--

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

----< T E S T _ B A D _ S 2 C I D >--

function p:test_bad_s2cid self:preprocess_equals_preprocess_many(   	, ,		{			{'s2cid=S2CID'},													-- s2cid (~/Identifiers)		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ B A D _ O C L C >

function p:test_bad_oclc self:preprocess_equals_preprocess_many(   	, ,		{			{'oclc=OCLC'},														-- oclc (~/Identifiers)		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ B A D _ P M I D >

function p:test_bad_pmid self:preprocess_equals_preprocess_many(   	, ,		{			{'pmid=PMID'},														-- pmid (~/Identifiers)		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ B A D _ P M C >--

function p:test_bad_pmc self:preprocess_equals_preprocess_many(   	, ,		{			{'pmc=PMC'},														-- pmc (~/Identifiers)		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ B A D _ P A R A M _ L I N K >

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=https://example.com'},					-- link_title_ok		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ B A D _ O L >

function p:test_bad_ol self:preprocess_equals_preprocess_many(   	, ,		{			{'ol=OL'},															-- ol (~/Identifiers)		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ B A D _ M R >

function p:test_bad_mr self:preprocess_equals_preprocess_many(   	, ,		{			{'mr=MR'},															-- mr (~/Identifiers)		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ B A D _ L C C N >

function p:test_bad_lccn self:preprocess_equals_preprocess_many(   	, ,		{			{'lccn=LCCN'},														-- lccn (~/Identifiers)		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ B A D _ J F M >--

function p:test_bad_jfm self:preprocess_equals_preprocess_many(   	, ,		{			{'jfm=JFM'},														-- jfm (~/Identifiers)		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ B A D _ I S S N >

function p:test_bad_issn self:preprocess_equals_preprocess_many(   	, ,		{			{'issn=ISSN'},														-- issn (~/Identifiers)			{'eissn=eISSN'},													-- issn (~/Identifiers)		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ B A D _ I S M N >

function p:test_bad_ismn self:preprocess_equals_preprocess_many(   	, ,		{			{'ismn=ISMN'},														-- ismn (~/Identifiers)		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ B A D _ I S B N >

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

----< T E S T _ B A D _ H D L >--

function p:test_bad_hdl self:preprocess_equals_preprocess_many(   	, ,		{			{'hdl=HDL'},														-- hdl (~/Identifiers)		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ B A D _ D O I >--

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

----< T E S T _ B A D _ D A T E >

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

----< T E S T _ B A D _ C I T E S E E R X >--

function p:test_bad_citeseerx self:preprocess_equals_preprocess_many(   	, ,		{			{'citeseerx=CITESEERX'},											-- citeseerx (~/Identifiers)		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ B A D _ B I O R X I V >--

function p:test_bad_biorxiv self:preprocess_equals_preprocess_many(   	, ,		{			{'biorxiv=BIORXIV'},												-- biorxiv (~/Identifiers)		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ B A D _ B I B C O D E >--

function p:test_bad_bibcode self:preprocess_equals_preprocess_many(   	, ,		{			{'bibcode=..................'},										-- length - bibcode (~/Identifiers)			{'bibcode=0999...............'},									-- value; missing letter after year			{'bibcode=0999a..............'},									-- year < 1000			{'bibcode=0999ab&............'},									-- journal abbrev must not have '&.'		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ B A D _ A S I N >

function p:test_bad_asin self:preprocess_equals_preprocess_many(   	, ,		{			{'asin=ASIN'},														-- asin (~/Identifiers)		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ B A D _ A R X I V >--

function p:test_bad_arxiv self:preprocess_equals_preprocess_many(   	, ,		{			{'arxiv=ARXIV'},													-- arxiv (~/Identifiers)		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ A R X I V _ M I S S I N G >--

function p:test_arxiv_missing self:preprocess_equals_preprocess_many(   	, ,		{			{'author=Author |title=Title'},										-- citation0		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ A R C H I V E _ U R L >--

function p:test_archive_url self:preprocess_equals_preprocess_many(   	, ,		{			{'archive-url=https://web.archive.org/save/'},							-- save - archive_url_check			{'archive-url=https://liveweb.archive.org/'},								-- obsolete liveweb url			{'archive-url=https://web.archive.org/2020'},								-- old form url short time stamp			{'archive-url=https://web.archive.org/web/2020'},							-- new form url short time stamp			{'archive-url=https://web.archive.org/20200611000000id_/'},				-- old form without path and with flag			{'archive-url=https://web.archive.org/path/20200611000000id_/'},			-- new form with malformed path and with flag			{'archive-url=https://web.archive.org/web/20200611000000_id/'},			-- new form with path and with malformed flag		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ A R C H I V E _ M I S S I N G _ U R L >--

function p:test_archive_missing_url self:preprocess_equals_preprocess_many(   	, ,		{			{'archive-url=https://archive.org |archive-date=2020-06-10 |url-status=live'},	-- live - citation0			{'archive-url=https://archive.org |archive-date=2020-06-10'},				-- anything else		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ A P O S T R O P H E _ M A R K U P >--

function p:test_apostrophe_markup self:preprocess_equals_preprocess_many(   	, ,		{			{'newspaper=\'\'Newspaper\'\},									-- citation0			{'publisher=\'\'\'Newspaper\'\'\},								-- citation0		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ A C C E S S D A T E _ M I S S I N G _ U R L >

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

----< T E S T _ E X T R A _ T E X T >

function p:test_extra_text self:preprocess_equals_preprocess_many(   	, ,		{			{'page=p. 35'},			{'edition=1st ed.'},		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ D I S P _ N A M E >--

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

--==========================<< M A I N T  C A T   M E S S A G E S >>======================================== ----< T E S T _ A S I N _ U S E S _ I S B N >

function p:test_ASIN_uses_ISBN self:preprocess_equals_preprocess_many(   	, ,		{			{'asin=412346789X'},		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ A R C H I V E D _ C O P Y >--

function p:test_Archived_copy self:preprocess_equals_preprocess_many(   	, ,		{			{'title=Archived copy'},		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ A U T H O R S >--

function p:test_Authors self:preprocess_equals_preprocess_many(   	, ,		{			{'authors=Authors'},		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ B O T : U N K N O W N >--

function p:test_Bot_unknown self:preprocess_equals_preprocess_many(   	, ,		{			{'url-status=bot: unknown'},		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ D A T E _ F O R M A T >--

function p:test_Date_format self:preprocess_equals_preprocess_many(   	, ,		{			{'date=Jun-Jul 2020'},		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ D A T E _ Y E A R >--

function p:test_Date_year self:preprocess_equals_preprocess_many(   	, ,		{			{'date=2020 |year=2020'},		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ D I S C O U R A G E D _ P A R A M >--

function p:test_Discourage_param self:preprocess_equals_preprocess_many(   	, ,		{			{'url=https://example.com |accessdate=2020-04-09'},			{'url=https://example.com |archive-url=https://archive.org |archivedate=2020-04-09'},			{'url=https://example.com |archiveurl=https://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

----< T E S T _ E M B A R G O >--

function p:test_Pmc_embargo_date self:preprocess_equals_preprocess_many(   	, ,		{			{'pmc=12345 |pmc-embargo-date=1 January 2020'},		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ E X T R A _ P U N C T >--

function p:test_Extra_punct self:preprocess_equals_preprocess_many(   	, ,		{			{'last=Surname,'},		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ E X T R A _ T E X T _ N A M E S >

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

----< T E S T _ I G N O R E _ I S B N _ E R R >--

function p:test_Ignore_isbn_err self:preprocess_equals_preprocess_many(   	, ,		{			{'isbn=((978-0123456789))'},						-- check digit		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ L O C A T I O N >

function p:test_Location self:preprocess_equals_preprocess_many(   	, ,		{			{'location=Sec. 6'},		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ M U L T _ N A M E S >

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

----< T E S T _ N U M E R I C _ N A M E S >--

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

----< T E S T _ O T H E R S >

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

----< T E S T _ P M C _ F O R M A T >

function p:test_Pmc_format self:preprocess_equals_preprocess_many(   	, ,		{			{'pmc=PMC12345'},		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ R E F _ H A R V >

function p:test_Ref_maint self:preprocess_equals_preprocess_many(   	, ,		{			{'ref=harv'},			{'author=Example|date=2008|ref=CITEREFExample2008'}		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ U N F I T >--

function p:test_Unfit self:preprocess_equals_preprocess_many(   	, ,		{			{'url-status=unfit'},		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ U N K N O W N _ L A N G >

function p:test_Unknown_lang self:preprocess_equals_preprocess_many(   	, ,		{			{'language=Taglish'},		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ U N T I T L E D >

function p:test_Untitled self:preprocess_equals_preprocess_many(   	, ,		{			{'title=none'},		},		{nowiki=false, templatestyles=true}	) end

----< T E S T _ Z B L >--

function p:test_Zbl self:preprocess_equals_preprocess_many(   	, ,		{			{'zbl=07013361'},		},		{nowiki=false, templatestyles=true}	) end

return p