Module:Citation/CS1/testcases2
< Module:Citation | CS1
Jump to navigation
Jump to search
Documentation for this module may be created at Module:Citation/CS1/testcases2/doc
--[=[
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.
Click talk page to run tests.
]=]
local p = require('Module:UnitTests')
--[[--------------------------< W I K I L I N K _ I N _ U R L >------------------------------------------------
]]
function p:test_wikilink_in_url()
self:preprocess_equals_preprocess_many(
'{{cite journal/new |journal=Journal |', '}}', '{{cite journal |journal=Journal |', '}}',
{
{'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
--[[--------------------------< T E S T _ V A U T H O R S >----------------------------------------------------
]]
function p:test_vauthors()
self:preprocess_equals_preprocess_many(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'vauthors=Black ABC'}, -- too many initials
{'vauthors=Black A-B'}, -- hyphenated initials
{'vauthors=Black AB II'}, -- invalid generational suffix - does not show and error but it should
{'vauthors=Black AB 3d'}, -- invalid generational suffix
{'vauthors=Black, AB, Brown, CD'}, -- improper puncutation - does not show and error but it should
{'vauthors=Black AB; Brown CD'}, -- improper puncutation
{'vauthors=Вlack AВ, Вrown CD,'}, -- the 'В's are Cyrillic characters
{'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(
'{{cite book/new |title=Title |name-list-format=vanc |', '}}', '{{cite book |title=Title |name-list-format=vanc |', '}}',
{
{'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(
'{{cite book/new |', '}}', '{{cite book |', '}}',
{
{'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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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(
'{{cite ssrn/new |title=Title', '}}', '{{cite ssrn |title=Title', '}}',
{
{''},
},
{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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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|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(
'{{cite mailinglist/new |title=Title |', '}}', '{{cite mailinglist |title=Title |', '}}',
{
{'mailinglist=Mailinglist |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(
'{{cite encyclopedia/new |title=Title |', '}}', '{{cite encyclopedia |title=Title |', '}}',
{
{'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(
'{{citation/new |title=Title |', '}}', '{{citation |title=Title |', '}}',
{
{'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(
'{{cite tech report/new |title=Title |', '}}', '{{cite tech report |title=Title |', '}}',
{
{'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(
'{{cite map/new |title=Title |', '}}', '{{cite map |title=Title |', '}}',
{
{'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(
'{{cite episode/new |title=Title |series=Series |', '}}', '{{cite episode |title=Title |series=Series |', '}}',
{
{'season=Season |series-no=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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'unknown=unknown'}, -- citation()
{'encyclopedia=Encyclopedia'}, -- citation0() – |encyclopedia= only available in {{cite encyclopdia}} and {{citation}}
},
{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(
'{{cite ssrn/new |title=Title |ssrn=123456 |', '}}', '{{cite ssrn |title=Title |ssrn=123456 |', '}}',
{
{'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(
'{{cite newsgroup/new |title=Title |', '}}', '{{cite newsgroup |title=Title |', '}}',
{
{'newsgroup=sommat.sommat.sommat |publisher=Publisher'}, -- citation0() - |publisher= not supported by {{cite newsgroup}}
},
{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(
'{{cite book/new |', '}}', '{{cite book |', '}}',
{
{'title=Title //example.com'}, -- check_for_url()
{'title=Title http://example.com'}, -- check_for_url()
{'title=[http://example.com 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(
'{{cite journal/new |title=Title |journal=Journal |', '}}', '{{cite journal |title=Title |journal=Journal |', '}}',
{
{'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(
'{{cite map/new |title=Title |', '}}', '{{cite map |title=Title |', '}}',
{
{'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(
'{{cite book/new |title=Title |url=//example.com |', '}}', '{{cite book |title=Title |url=//example.com |', '}}',
{
{'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(
'{{cite journal/new |title=Title', '}}', '{{cite journal |title=Title', '}}',
{
{''}, -- 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(
'{{cite magazine/new |title=Title', '}}', '{{cite magazine |title=Title', '}}',
{
{''}, -- 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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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(
'{{cite book/new |', '}}', '{{cite book |', '}}',
{
{'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; <spoof></spoof> 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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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(
'{{cite book/new', '}}', '{{cite book', '}}',
{
{''}, -- 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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'doi-broken=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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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(
'{{cite book/new |title=Title |contributor=Contributor |', '}}', '{{cite book |title=Title |contributor=Contributor |', '}}',
{
{'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(
'{{cite journal/new |title=Title |contributor=Contributor |journal= Journal', '}}', '{{cite journal |title=Title |contributor=Contributor |journal= Journal', '}}',
{
{''}, -- 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(
'{{cite arxiv/new |title=Title |author=Author |', '}}', '{{cite arxiv |title=Title |author=Author |', '}}',
{
{'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(
'{{cite citeseerx/new |', '}}', '{{cite citeseerx |', '}}',
{
{'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(
'{{cite web/new |', '}}', '{{cite web |', '}}',
{
{'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(
'{{citation/new |', '}}', '{{citation |', '}}',
{
{'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(
'{{cite book/new |', '}}', '{{cite book |', '}}',
{
{'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(
'{{cite episode/new |', '}}', '{{cite episode |', '}}',
{
{'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(
'{{cite news/new |title=Title |', '}}', '{{cite news |title=Title |', '}}',
{
{'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
--[[--------------------------< 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(
'{{cite biorxiv/new |', '}}', '{{cite biorxiv |', '}}',
{
{'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(
'{{cite book/new |', '}}', '{{cite book |', '}}',
{
{'title=Title |chapter-url=//example.com'}, -- citation0()
{'title=Title |conference-url=//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(
'{{cite map/new |', '}}', '{{cite map |', '}}',
{
{'title=Title |map-url=//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(
'{{cite journal/new |title=Title |journal=Journal |', '}}', '{{cite journal |title=Title |journal=Journal |', '}}',
{
{'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(
'{{cite newsgroup/new |title=Title |', '}}', '{{cite newsgroup |title=Title |', '}}',
{
{'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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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(
'{{cite journal/new |title=Title |journal=Journal |', '}}', '{{cite journal |title=Title |journal=Journal |', '}}',
{
{'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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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(
'{{cite journal/new |title=Title |journal=Journal |', '}}', '{{cite journal |title=Title |journal=Journal |', '}}',
{
{'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(
'{{cite journal/new |title=Title |journal=Journal |', '}}', '{{cite journal |title=Title |journal=Journal |', '}}',
{
{'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(
'{{cite journal/new |title=Title |journal=Journal |', '}}', '{{cite journal |title=Title |journal=Journal |', '}}',
{
{'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(
'{{cite journal/new |title=Title |journal=Journal |', '}}', '{{cite journal |title=Title |journal=Journal |', '}}',
{
{'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(
'{{cite book/new |', '}}', '{{cite book |', '}}',
{
{'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
--[[--------------------------< T E S T _ B A D _ O L >--------------------------------------------------------
]]
function p:test_bad_ol()
self:preprocess_equals_preprocess_many(
'{{cite journal/new |title=Title |journal=Journal |', '}}', '{{cite journal |title=Title |journal=Journal |', '}}',
{
{'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(
'{{cite journal/new |title=Title |journal=Journal |', '}}', '{{cite journal |title=Title |journal=Journal |', '}}',
{
{'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(
'{{cite journal/new |title=Title |journal=Journal |', '}}', '{{cite journal |title=Title |journal=Journal |', '}}',
{
{'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(
'{{cite journal/new |title=Title |journal=Journal |', '}}', '{{cite journal |title=Title |journal=Journal |', '}}',
{
{'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(
'{{cite journal/new |title=Title |journal=Journal |', '}}', '{{cite journal |title=Title |journal=Journal |', '}}',
{
{'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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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(
'{{cite journal/new |title=Title |journal=Journal |', '}}', '{{cite journal |title=Title |journal=Journal |', '}}',
{
{'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(
'{{cite journal/new |title=Title |journal=Journal |', '}}', '{{cite journal |title=Title |journal=Journal |', '}}',
{
{'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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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(
'{{cite journal/new |title=Title |journal=Journal |', '}}', '{{cite journal |title=Title |journal=Journal |', '}}',
{
{'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(
'{{cite journal/new |title=Title |journal=Journal |', '}}', '{{cite journal |title=Title |journal=Journal |', '}}',
{
{'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(
'{{cite journal/new |title=Title |journal=Journal |', '}}', '{{cite journal |title=Title |journal=Journal |', '}}',
{
{'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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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(
'{{cite journal/new |title=Title |journal=Journal |', '}}', '{{cite journal |title=Title |journal=Journal |', '}}',
{
{'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(
'{{cite arxiv/new |', '}}', '{{cite arxiv |', '}}',
{
{'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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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
--[[--------------------------< 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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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
--[[--------------------------< 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(
'{{cite news/new |title=Title |', '}}', '{{cite news |title=Title |', '}}',
{
{'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(
'{{cite journal/new |title=Title |journal=Journal |', '}}', '{{cite journal |title=Title |journal=Journal |', '}}',
{
{'access-date=2020-06-11'}, -- citation0()
{'pmc=12345 |access-date=2020-06-11'},
},
{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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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(
'{{cite book/new |url=//example.com |archive-url=//archive.org |archive-date=2020-07-29 |', '}}', '{{cite book |url=//example.com |archive-url=//archive.org |archive-date=2020-07-29 |', '}}',
{
{'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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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(
'{{cite book/new |title=Title |url=//example.com |archive-url=//archive.org |archive-date=2020-07-29 |', '}}', '{{cite book |title=Title |url=//example.com |archive-url=//archive.org |archive-date=2020-07-29 |', '}}',
{
{'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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'date=2020 |year=2020'},
},
{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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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'},
{'author=Black AB |display-authors=etal'},
{'author=Black AB |author2=Red CD |display-authors=1'},
},
{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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'last=Surname,'},
},
{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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'page=p. 35'},
{'edition=1st ed.'},
},
{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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'isbn=978-0123456789 |ignore-isbn-error=yes'}, -- 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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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'},
},
{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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'pmc=PMC12345'},
},
{nowiki=false, templatestyles=true}
)
end
--[[--------------------------< T E S T _ R E F _ H A R V >----------------------------------------------------
]]
function p:test_Ref_harv()
self:preprocess_equals_preprocess_many(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'ref=harv'},
},
{nowiki=false, templatestyles=true}
)
end
--[[--------------------------< T E S T _ U N F I T >----------------------------------------------------------
]]
function p:test_Unfit()
self:preprocess_equals_preprocess_many(
'{{cite book/new |title=Title |url=//example.com |archive-url=//archive.org |archive-date=2020-07-29 |', '}}', '{{cite book |title=Title |url=//example.com |archive-url=//archive.org |archive-date=2020-07-29 |', '}}',
{
{'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(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'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(
'{{cite journal/new |journal=Journal |', '}}', '{{cite journal |journal=Journal |', '}}',
{
{'title=none'},
},
{nowiki=false, templatestyles=true}
)
end
--[[--------------------------< T E S T _ Z B L >--------------------------------------------------------------
]]
function p:test_Zbl()
self:preprocess_equals_preprocess_many(
'{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}',
{
{'zbl=07013361'},
},
{nowiki=false, templatestyles=true}
)
end
return p