Difference between revisions of "Module:Citation/CS1/testcases2"
< Module:Citation | CS1
Jump to navigation
Jump to search
test>Izno (poke) |
m (2 revisions imported) |
||
| (26 intermediate revisions by 4 users not shown) | |||
| Line 1: | Line 1: | ||
| − | -- Unit tests for [[Module:Citation/CS1]]. | + | --[=[ |
| − | + | 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. | ||
| − | function p: | + | 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( | self:preprocess_equals_preprocess_many( | ||
| − | '{{cite | + | '{{cite book/new |title=Title |', '}}', '{{cite book |title=Title |', '}}', |
| − | |||
{ | { | ||
| − | { | + | {'zbl=07013361'}, |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
}, | }, | ||
| − | {nowiki=false} | + | {nowiki=false, templatestyles=true} |
) | ) | ||
end | end | ||
return p | return p | ||
Latest revision as of 13:39, 24 September 2020
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