Module:Citation/CS1/testcases/identifiers
Appearance
From Wikipedia, the free encyclopedia
Usage
[edit ]{{#invoke:Citation/CS1/testcases/identifiers|function_name}}
The above documentation is transcluded from Module:Citation/CS1/testcases/identifiers/doc. (edit | history)
Editors can experiment in this module's sandbox (create | mirror) and testcases (create) pages.
Subpages of this module.
Editors can experiment in this module's sandbox (create | mirror) and testcases (create) pages.
Subpages of this module.
--[=[ Unit tests for [[Module:Citation/CS1/Identifiers]]. Click talk page to run tests. ]=] localp=require('Module:UnitTests'); locallive_cfg=mw.loadData('Module:Citation/CS1/Configuration'); localnew_cfg=mw.loadData('Module:Citation/CS1/Configuration/sandbox'); --[[--------------------------< T O D A Y _ P L U S _ O F F S E T _ G E T >------------------------------------ returns date offset from today by <offset> in <format> (#time parser function formatting) Y - four digit year m - two digit month M - abbreviated month name F - full month name d - zero-padded day j - day without zero-padding <offset> must include units: days, months, years ]] localfunctiontoday_plus_offset_get(format,offset) returnmw.getContentLanguage():formatDate(format,'today '..offsetand('+ '..offset)or''); end --[[--------------------------< A R X I V _ 9 1 0 7 _ 0 7 0 3 >------------------------------------------------ ]] functionp:test_arxiv_9107_0703() self:preprocess_equals_preprocess_many( '{{cite book/new |title=Title |','}}','{{cite book |title=Title |','}}', { -- legitimate date range {'arxiv=a.a/9007333'},-- invalid yymm (fail) {'arxiv=a.a/9106333'},-- invalid yymm (fail) {'arxiv=a.a/9107333'},-- valid yymm (pass) {'arxiv=a.a/0703333'},-- valid yymm (pass) {'arxiv=a.a/0704333'},-- invalid yymm (fail) {'arxiv=a.a/0803333'},-- valid yymm (pass) -- archive & class {'arxiv=.a/9107333'},-- without archive (fail) {'arxiv=aa/9107333'},-- without class (pass) -- number {'arxiv=aa/910722'},-- not enough digits (fail) {'arxiv=aa/91074444'},-- too many digits (fail) -- version {'arxiv=a.a/9107333v'},-- missing version number (fail) {'arxiv=a.a/9107333v1'},-- with version number (pass) }, {nowiki=false,templatestyles=true} ) end --[[--------------------------< A R X I V _ 0 7 0 4 _ 1 4 1 2 >------------------------------------------------ ]] functionp:test_arxiv_0704_1412() self:preprocess_equals_preprocess_many( '{{cite book/new |title=Title |','}}','{{cite book |title=Title |','}}', { -- date range {'arxiv=0612.4444'},-- invalid yymm (fail) {'arxiv=0703.4444'},-- invalid yymm (fail) {'arxiv=0704.4444'},-- valid yymm (pass) {'arxiv=1412.4444'},-- valid yymm (pass) {'arxiv=1413.4444'},-- invalid yymm (fail) {'arxiv=1501.4444'},-- invalid yymm (fail) -- number {'arxiv=0704.333'},-- not enough digits (fail) {'arxiv=0704.55555'},-- too many digits (fail) -- version {'arxiv=0704.4444v'},-- missing version number (fail) {'arxiv=0704.4444v1'},-- with version number (pass) }, {nowiki=false,templatestyles=true} ) end --[[--------------------------< A R X I V _ 1 5 0 1 >---------------------------------------------------------- ]] functionp:test_arxiv_1501() self:preprocess_equals_preprocess_many( '{{cite book/new |title=Title |','}}','{{cite book |title=Title |','}}', { -- date range {'arxiv=1412.55555'},-- invalid yymm (fail) {'arxiv=1500.55555'},-- invalid yymm (fail) {'arxiv=1501.55555'},-- valid yymm (pass) {'arxiv=1513.55555'},-- invalid yymm (fail) -- number {'arxiv=1501.4444'},-- not enough digits (fail) {'arxiv=1501.666666'},-- too many digits (fail) -- version {'arxiv=1501.4444v'},-- missing version number (fail) {'arxiv=1501.4444v1'},-- with version number (pass) }, {nowiki=false,templatestyles=true} ) end --[[--------------------------< A S I N >---------------------------------------------------------------------- ]] functionp:test_asin() self:preprocess_equals_preprocess_many( '{{cite book/new |title=Title |','}}','{{cite book |title=Title |','}}', { {'asin=4-12346789X'},-- invalid char: hyphen (fail) {'asin=412346789'},-- length (9) (fail) {'asin=ABCDEFGHIJK'},-- length (11) (fail) {'asin=ABCDEFGHIJ'},-- valid (pass) {'asin=412346789X'},-- valid (isbn) (pass) {'asin=6302732913'},-- valid (but not an isbn) (pass) {'asin=ABCDEFGHIJ|asin-tld=com'},-- invalid tld (fail) {'asin=ABCDEFGHIJ|asin-tld=jp'},-- valid tld (pass) {'asin=ABCDEFGHIJ|asin-tld=uk'},-- valid tld (pass) {'asin=ABCDEFGHIJ|asin-tld=au'},-- valid tld (pass) {'asin=ABCDEFGHIJ|asin-tld=br'},-- valid tld (pass) {'asin=ABCDEFGHIJ|asin-tld=mx'},-- valid tld (pass) }, {nowiki=false,templatestyles=true} ) end --[[--------------------------< B I B C O D E >---------------------------------------------------------------- ]] functionp:test_bibcode() localthis_year=today_plus_offset_get('Y','0 year');-- get this year self:preprocess_equals_preprocess_many( '{{cite book/new |title=Title |','}}','{{cite book |title=Title |','}}', { -- years {'bibcode=0999a&1.b2.c3.d4..e'},-- invalid yyyy (fail) {'bibcode=1000a&1.b2.c3.d4..e'},-- valid yyyy (pass) {'bibcode='..this_year..'a&1.b2.c3.d4..e'},-- valid yyyy (pass) {'bibcode='..today_plus_offset_get('Y','1 year')..'a&1.b2.c3.d4..e'},-- valid yyyy (pass) {'bibcode='..today_plus_offset_get('Y','2 year')..'a&1.b2.c3.d4..e'},-- invalid yyyy (fail) {'bibcode='..this_year..'#&1.b2.c3.d4..e'},-- invalid [5] (fail) {'bibcode='..this_year..'a#1.b2.c3.d4..e'},-- invalid [6] (fail) {'bibcode='..this_year..'a&#.b2.c3.d4..e'},-- invalid [7] (fail) {'bibcode='..this_year..'a&1#b2.c3.d4..e'},-- invalid [8] (fail) {'bibcode='..this_year..'a&..b2.c3.d4..e'},-- ampersand preceeds dot (fail) {'bibcode='..this_year..'a&1.#2.c3.d4..e'},-- invalid [9] (fail) {'bibcode='..this_year..'a&1.b#.c3.d4..e'},-- invalid [10] (fail) {'bibcode='..this_year..'a&1.b2#c3.d4..e'},-- invalid [11] (fail) {'bibcode='..this_year..'a&1.b2.#3.d4..e'},-- invalid [12] (fail) {'bibcode='..this_year..'a&1.b2.c#.d4..e'},-- invalid [13] (fail) {'bibcode='..this_year..'a&1.b2.c3#d4..e'},-- invalid [14] (fail) {'bibcode='..this_year..'a&1.b2.c3.#4..e'},-- invalid [15] (fail) {'bibcode='..this_year..'a&1.b2.c3.d#..e'},-- invalid [16] (fail) {'bibcode='..this_year..'a&1.b2.c3.d4#.e'},-- invalid [17] (fail) {'bibcode='..this_year..'a&1.b2.c3.d4.#e'},-- invalid [18] (fail) {'bibcode='..this_year..'a&1.b2.c3.d4..#'},-- invalid [19] (fail) }, {nowiki=false,templatestyles=true} ) end --[[--------------------------< B I O R X I V >---------------------------------------------------------------- ]] functionp:test_biorxiv() localtoday=today_plus_offset_get('Y.m.d','0 year'); self:preprocess_equals_preprocess_many( '{{cite book/new |title=Title |','}}','{{cite book |title=Title |','}}', { -- years {'biorxiv=10.1100/666666'},-- invalid prefix (fail) {'biorxiv=10.1101/666666'},-- valid prefix (pass) {'biorxiv=11.1101/666666'},-- invalid prefix (fail) {'biorxiv=10.1101/55555'},-- invalid identifier (fail) {'biorxiv=10.1101/7777777'},-- invalid identifier (fail) ---- {'biorxiv=10.1100/2019.12.10.666666'},-- invalid date (fail) {'biorxiv=10.1101/2019.12.11.666666'},-- valid date (pass) {'biorxiv=10.1101/2019.00.11.666666'},-- invalid date (fail) {'biorxiv=10.1101/2019.13.11.666666'},-- invalid date (fail) {'biorxiv=10.1101/2019.12.00.666666'},-- invalid date (fail) {'biorxiv=10.1101/2019.12.32.666666'},-- invalid date (fail) {'biorxiv=10.1101/'..today..'.666666'},-- valid date (pass) {'biorxiv=10.1101/'..today_plus_offset_get('Y.m.d','1 year')..'.666666'},-- valid date (pass) {'biorxiv=10.1101/'..today..'55555'},-- invalid identifier (fail) {'biorxiv=10.1101/'..today..'7777777'},-- invalid identifier (fail) {'biorxiv=10.1101/'..today..'.666666v'},-- valid date (pass) {'biorxiv=10.1101/'..today..'.666666v1'},-- valid date (pass) }, {nowiki=false,templatestyles=true} ) end --[[--------------------------< C I T E S E E R X >------------------------------------------------------------ ]] functionp:test_citeseerx() self:preprocess_equals_preprocess_many( '{{cite book/new |title=Title |','}}','{{cite book |title=Title |','}}', { {'citeseerx=11.1.1.1234.1234'},-- invalid site id (fail) {'citeseerx=10.0.1.1234.1234'},-- invalid deployment id (fail) {'citeseerx=10.1.0.1234.1234'},-- invalid type (fail) {'citeseerx=10.1.1.0234.1234'},-- invalid bin (fail) {'citeseerx=10.1.1.1234.0234'},-- invalid record (fail) {'citeseerx=10.1.1.1234.1234'},-- invalid record (fail) }, {nowiki=false,templatestyles=true} ) end --[[--------------------------< D O I >------------------------------------------------------------------------ ]] functionp:test_doi() self:preprocess_equals_preprocess_many( '{{cite book/new |title=Title |','}}','{{cite book |title=Title |','}}', { {'doi=10.1000/something'},-- valid directory indicator (pass) {'doi=11.1000/something'},-- invalid directory indicator (fail) {'doi=10.10 00/something'},-- invalid registrant (fail) {'doi=10.5555/something'},-- invalid registrant (fail) {'doi=10.666666/something'},-- invalid registrant (fail) -- four digit < registrant w/o subcode {'doi=10.1/something'},-- invalid registrant (fail) {'doi=10.22/something'},-- invalid registrant (fail) {'doi=10.333/something'},-- invalid registrant (fail) -- four digit < registrant w/ subcode {'doi=10.1.1/something'},-- valid registrant (pass) {'doi=10.22.1/something'},-- valid registrant (pass) {'doi=10.333.1/something'},-- valid registrant (pass) -- four digit registrant w/o subcode {'doi=10.0999/something'},-- invalid registrant (fail) {'doi=10.1000/something'},-- valid registrant (pass) {'doi=10.9999/something'},-- valid registrant (pass) -- four digit registrant w/ subcode {'doi=10.0999.1/something'},-- invalid registrant (fail) {'doi=10.1000.1/something'},-- valid registrant (pass) {'doi=10.9999.1/something'},-- valid registrant (pass) -- five digit registrant w/o subcode {'doi=10.09999/something'},-- invalid registrant (fail) {'doi=10.10000/something'},-- valid registrant (pass) {'doi=10.59999/something'},-- valid registrant (pass) {'doi=10.60000/something'},-- invalid registrant (fail) -- five digit registrant w/ subcode {'doi=10.09999.1/something'},-- invalid registrant (fail) {'doi=10.10000.1/something'},-- valid registrant (pass) {'doi=10.39999.1/something'},-- valid registrant (pass) {'doi=10.40000.1/something'},-- invalid registrant (fail) -- terminal punctuation {'doi=10.1000/something.'},-- trailing dot (fail) {'doi=10.1000/something,'},-- trailing comma (fail) {'doi=10.1000/some thing'},-- space character in identifier (fail) -- doi-broken date {'doi=10.1000/something |doi-broken-date=2020'},-- valid doi-broken date (pass) {'doi=10.1000/something |doi-broken-date=January 1900'},-- valid doi-broken date (pass) TODO: valid but not valid; limit to same-as-access-date? {'doi=10.1000/something |doi-broken-date=XXXX'},-- invalid doi-broken date (fail) {'doi=10.1000/something |doi-broken-date=January 3500'},-- invalid doi-broken date (fail) }, {nowiki=false,templatestyles=true} ) end --[[--------------------------< H D L >------------------------------------------------------------------------ ]] functionp:test_hdl() self:preprocess_equals_preprocess_many( '{{cite book/new |title=Title |','}}','{{cite book |title=Title |','}}', { {'hdl=abc 123/abc123'},-- invalid prefix (fail) {'hdl=abc–123/abc123'},-- invalid prefix (fail) {'hdl=abc123/abc 123'},-- invalid suffix (fail) {'hdl=abc123/abc–123'},-- invalid suffix (fail) {'hdl=abc123/abc123.'},-- trailing dot (fail) {'hdl=abc123/abc123,'},-- trailing comma (fail) {'hdl=abc123/abc123'},-- valid (pass) -- query strings {'hdl=abc123/abc123?not_a_query=string'},-- valid (pass) {'hdl=abc123/abc123?noredirect=string'},-- valid (pass) TODO: does this take a value? {'hdl=abc123/abc123?ignore_aliases=string'},-- valid (pass) TODO: does this take a value? {'hdl=abc123/abc123?auth=string'},-- valid (pass) TODO: does this take a value? {'hdl=abc123/abc123?cert=string'},-- valid (pass) TODO: does this take a value? {'hdl=abc123/abc123?index=string'},-- valid (pass) {'hdl=abc123/abc123?type=string'},-- valid (pass) {'hdl=abc123/abc123?urlappend=string'},-- valid (pass) {'hdl=abc123/abc123?locatt=string'},-- valid (pass) {'hdl=abc123/abc123?action=string'},-- valid (pass) }, {nowiki=false,templatestyles=true} ) end --[[--------------------------< T E S T _ I S B N >------------------------------------------------------------ ]] functionp:test_isbn() self:preprocess_equals_preprocess_many( '{{cite book/new |title=Title |','}}','{{cite book |title=Title |','}}', { {'isbn=3–123467899'},-- invalid character (ndash) (fail) {'isbn=312346789'},-- length (9) (fail) {'isbn=31234678999'},-- length (11) (fail) {'isbn=41234678X9'},-- X in the wrong spot (fail) {'isbn=3123467896'},-- checkdigit (fail) {'isbn=3123467899'},-- valid (pass) {'isbn=412346789X'},-- valid (pass) {'isbn=3-123467899'},-- valid (pass) {'isbn=4-12346789X'},-- valid (pass) {'isbn=3 123467899'},-- valid (pass) {'isbn=4 12346789X'},-- valid (pass) {'isbn=978-01234567866'},-- length (14) (fail) {'isbn=978-012345678'},-- length (12) (fail) {'isbn=978-012345678X'},-- isbn13 is digits only (fail) {'isbn=977-0123456786'},-- 978 or 979 prefix only (fail) {'isbn=979-0123456785'},-- 9790 is ismn (fail) {'isbn=978-0123456788'},-- check digit (fail) {'isbn=9780123456786'},-- valid 978 (pass) {'isbn=9791123456782'},-- valid 979 (pass) {'isbn=978-0123456786'},-- valid 978 (pass) {'isbn=979-1123456782'},-- valid 979 (pass) {'isbn=978 0123456786'},-- valid 978 (pass) {'isbn=979 1123456782'},-- valid 979 (pass) {'isbn=3123467896 |ignore-isbn-error=yes'},-- checkdigit (pass) {'isbn=3123467899 |ignore-isbn-error=yes'},-- valid (pass) {'isbn=978-0123456788 |ignore-isbn-error=yes'},-- check digit (pass) {'isbn=9780123456786 |ignore-isbn-error=yes'},-- valid 978 (pass) }, {nowiki=false,templatestyles=true} ) end --[[--------------------------< T E S T _ I S M N >------------------------------------------------------------ ]] functionp:test_ismn() self:preprocess_equals_preprocess_many( '{{cite book/new |title=Title |','}}','{{cite book |title=Title |','}}', { {'ismn=979-01234567856'},-- length (14) (fail) {'ismn=979-012345678'},-- length (12) (fail) {'ismn=979-012345678X'},-- digits only (fail) {'ismn=979-1123456782'},-- group designator must be 0 (fail) {'ismn=979-0123456788'},-- check digit (fail) {'ismn=979–0123456785'},-- valid (pass) {'ismn=9790123456785'},-- valid (pass) {'ismn=979-0123456785'},-- valid (pass) {'ismn=979 0123456785'},-- valid (pass) }, {nowiki=false,templatestyles=true} ) end --[[--------------------------< T E S T _ I S S N >------------------------------------------------------------ ]] functionp:test_issn() self:preprocess_equals_preprocess_many( '{{cite book/new |title=Title |','}}','{{cite book |title=Title |','}}', { {'issn=0123-45601'},-- length (9) (fail) {'issn=0123-456'},-- length (7) (fail) {'issn=7123-45X6'},-- X mispositioned (fail) {'issn=0123-4566'},-- check digit (fail) {'issn=0123–4560'},-- valid (pass) {'issn=01234560'},-- valid (pass) {'issn=7123-456X'},-- valid (pass) {'issn=7123 456X'},-- valid (pass) }, {nowiki=false,templatestyles=true} ) end --[[--------------------------< T E S T _ J F M >-------------------------------------------------------------- ]] functionp:test_jfm() self:preprocess_equals_preprocess_many( '{{cite book/new |title=Title |','}}','{{cite book |title=Title |','}}', { {'jfm=1.4444.22'},-- missing digit (fail) {'jfm=22.333.22'},-- missing digit (fail) {'jfm=22.4444.1'},-- missing digit (fail) {'jfm=333.4444.22'},-- to many digit (fail) {'jfm=22.55555.22'},-- to many digit (fail) {'jfm=22.4444.333'},-- to many digit (fail) {'jfm=224444.22'},-- missing separator (fail) {'jfm=22.444422'},-- missing separator (fail) {'jfm=jfm22.4444.22'},-- jfm prefix (pass) {'jfm=22.4444.22'},-- valid (pass) }, {nowiki=false,templatestyles=true} ) end --[[--------------------------< T E S T _ L C C N >------------------------------------------------------------ ]] functionp:test_lccn() self:preprocess_equals_preprocess_many( '{{cite book/new |title=Title |','}}','{{cite book |title=Title |','}}', { -- length 8 {'lccn=7777777'},-- missing digit (fail) {'lccn=8888888a'},-- not all digit (fail) {'lccn=888 8888'},-- space (fail) {'lccn=88888888'},-- valid (pass) -- length 9 {'lccn=999999999'},-- to many digit (fail) {'lccn=A99999999'},-- case (fail) {'lccn=a99999999'},-- valid (pass) -- length 10 {'lccn=a000000000'},-- not all digit (fail) {'lccn=AA00000000'},-- case (fail) {'lccn=000 000000'},-- space (fail) TODO: fix this: renders as 000000 000 000000 {'lccn=0000000000'},-- valid (pass) {'lccn=aa00000000'},-- valid (pass) -- length 11 {'lccn=11111111111'},-- all digit (fail) {'lccn=aa111111111'},-- not enough alpha (fail) {'lccn=A1111111111'},-- case (fail) {'lccn=AAA11111111'},-- case (fail) {'lccn=a1111111111'},-- valid (pass) {'lccn=aaa11111111'},-- valid (pass) -- length 12 {'lccn=222222222222'},-- all digit (fail) {'lccn=a22222222222'},-- not enough alpha (fail) {'lccn=AA2222222222'},-- case (fail) {'lccn=aa2222222222'},-- valid (pass) }, {nowiki=false,templatestyles=true} ) end --[[--------------------------< T E S T _ M R >---------------------------------------------------------------- ]] functionp:test_mr() self:preprocess_equals_preprocess_many( '{{cite book/new |title=Title |','}}','{{cite book |title=Title |','}}', { {'mr=88888888'},-- to many digit (fail) {'mr=a777777'},-- non-digit (fail) {'mr=7777777'},-- valid (pass) {'mr=MR7777777'},-- valid (pass) {'mr=MR7'},-- zero fill valid (pass) {'mr=7'},-- zero fill valid (pass) }, {nowiki=false,templatestyles=true} ) end --[[--------------------------< T E S T _ O C L C >------------------------------------------------------------ ]] functionp:test_oclc() self:preprocess_equals_preprocess_many( '{{cite book/new |title=Title |','}}','{{cite book |title=Title |','}}', { {'oclc=ocm8888888'},-- not enough digit (fail) {'oclc=ocm888888888'},-- too many digit (fail) {'oclc=OCM88888888'},-- case (fail) {'oclc=ocm88888888'},-- valid (pass) {'oclc=ocn99999999'},-- not enough digit (fail) {'oclc=ocn9999999999'},-- too many digit (fail) {'oclc=OCN999999999'},-- case (fail) {'oclc=ocn999999999'},-- valid (pass) {'oclc=on000000000'},-- not enough digit (fail) {'oclc=ON0000000000'},-- case (fail) {'oclc=on0000000000'},-- valid (pass) {'oclc=(OCoLC)07'},-- leading 0 (fail) {'oclc=(OCoLC)9999999999'},-- too many digit (fail) {'oclc=(ocolc)07'},-- case (fail) {'oclc=OCoLC9'},-- missing parentheses (fail) {'oclc=(OCoLC)9'},-- valid (pass) {'oclc=(OCoLC)999999999'},-- valid (pass) {'oclc=00000000000'},-- too many digit (fail) {'oclc=000X000000'},-- non-digit (fail) {'oclc=0000000000'},-- valid (pass) {'oclc=0'},-- valid (pass) }, {nowiki=false,templatestyles=true} ) end --[[--------------------------< T E S T _ O L >---------------------------------------------------------------- ]] functionp:test_ol() self:preprocess_equals_preprocess_many( '{{cite book/new |title=Title |','}}','{{cite book |title=Title |','}}', { {'ol=OLA'},-- no digit (fail) {'ol=ol22A'},-- prefix case (fail) {'ol=LO22A'},-- invalid prefix (fail) {'ol=OL 22A'},-- space (fail) {'ol=333'},-- no suffix (fail) {'ol=333a'},-- suffix case (fail) {'ol=333m'},-- suffix case (fail) {'ol=333w'},-- suffix case (fail) {'ol=333R'},-- unknown suffix (fail) {'ol=OL4444A'},-- valid (pass) {'ol=4444A'},-- valid (pass) {'ol=OL55555M'},-- valid (pass) {'ol=55555M'},-- valid (pass) {'ol=OL666666W'},-- valid (pass) {'ol=666666W'},-- valid (pass) }, {nowiki=false,templatestyles=true} ) end --[[--------------------------< T E S T _ P M C >-------------------------------------------------------------- ]] functionp:test_pmc() locallimit=live_cfg.id_handlers['PMC'].id_limit self:preprocess_equals_preprocess_many( '{{cite book/new |title=Title |','}}','{{cite book |title=Title |','}}', { {'pmc=PMC'},-- no digit (fail) {'pmc=0'},-- out of bounds (fail) {'pmc=1'},-- in bounds (pass) {'pmc='..limit},-- in bounds (pass) {'pmc='..limit+1},-- out of bounds (fail) {'pmc=PMC1'},-- valid (pass) {'pmc=PMC1 |doi=10.1000/something |doi-access=free'},-- title linked from pmc {'pmc=22 |pmc-embargo-date='..today_plus_offset_get('Y-m-d','1 days')},-- valid still embargoed {'pmc=22 |pmc-embargo-date='..today_plus_offset_get('Y-m-d','0 days')},-- valid (pass) {'pmc=22 |pmc-embargo-date='..today_plus_offset_get('F j, Y','0 days')},-- valid (pass) {'pmc=22 |pmc-embargo-date='..today_plus_offset_get('j F Y','0 days')},-- valid (pass) {'pmc=22 |pmc-embargo-date='..today_plus_offset_get('F Y','0 days')},-- valid (pass) {'pmc=22 |pmc-embargo-date='..today_plus_offset_get('Y','0 days')},-- valid (pass) }, {nowiki=false,templatestyles=true} ) limit=new_cfg.id_handlers['PMC'].id_limit;-- get samdbox limit self:preprocess_equals_preprocess_many( '{{cite book/new |title=Sandbox limit test |','}}','{{cite book |title=Sandbox limit test |','}}', { {'pmc='..limit},-- in bounds (pass) {'pmc='..limit+1},-- out of bounds (fail) }, {nowiki=false,templatestyles=true} ) end --[[--------------------------< T E S T _ P M I D >------------------------------------------------------------ ]] functionp:test_pmid() locallimit=live_cfg.id_handlers['PMID'].id_limit self:preprocess_equals_preprocess_many( '{{cite book/new |title=Title |','}}','{{cite book |title=Title |','}}', { {'pmid=pmid'},-- no digit (fail) {'pmid=0'},-- out of bounds (fail) {'pmid=1'},-- in bounds (pass) {'pmid='..limit},-- in bounds (pass) {'pmid='..limit+1},-- out of bounds (fail) }, {nowiki=false,templatestyles=true} ) limit=new_cfg.id_handlers['PMID'].id_limit;-- get samdbox limit self:preprocess_equals_preprocess_many( '{{cite book/new |title=Sandbox limit test |','}}','{{cite book |title=Sandbox limit test |','}}', { {'pmid='..limit},-- in bounds (pass) {'pmid='..limit+1},-- out of bounds (fail) }, {nowiki=false,templatestyles=true} ) end --[[--------------------------< T E S T _ Q I D >-------------------------------------------------------------- ]] functionp:test_qid() self:preprocess_equals_preprocess_many( '{{cite journal/new |title=Title |journal=Journal |','}}','{{cite journal |title=Title |journal=Journal |','}}', { {'q=Q'},-- no digit (fail) {'q=q1'},-- not uppercase Q (fail) {'q=Q1'},-- valid (pass) }, {nowiki=false,templatestyles=true} ) end --[[--------------------------< T E S T _ S 2 C I D >---------------------------------------------------------- ]] functionp:test_s2cid() locallimit=live_cfg.id_handlers['S2CID'].id_limit self:preprocess_equals_preprocess_many( '{{cite book/new |title=Title |','}}','{{cite book |title=Title |','}}', { {'s2cid=s2cid'},-- no digit (fail) {'s2cid=0'},-- out of bounds (fail) {'s2cid=1'},-- in bounds (pass) {'s2cid='..limit},-- in bounds (pass) {'s2cid='..limit+1},-- out of bounds (fail) }, {nowiki=false,templatestyles=true} ) limit=new_cfg.id_handlers['S2CID'].id_limit self:preprocess_equals_preprocess_many( '{{cite book/new |title=Sandbox limit test |','}}','{{cite book |title=Sandbox limit test |','}}', { {'s2cid='..limit},-- in bounds (pass) {'s2cid='..limit+1},-- out of bounds (fail) }, {nowiki=false,templatestyles=true} )end --[[--------------------------< T E S T _ S B N >-------------------------------------------------------------- ]] functionp:test_sbn() self:preprocess_equals_preprocess_many( '{{cite book/new |title=Title |','}}','{{cite book |title=Title |','}}', { {'sbn=0–12345679'},-- invalid character (ndash) (fail) {'sbn=01234567'},-- length (8) (fail) {'sbn=0123456799'},-- length (10) (fail) {'sbn=6123456X7'},-- X in the wrong spot (fail) {'sbn=012345678'},-- checkdigit (fail) {'sbn=012345679'},-- valid (pass) {'sbn=61234567X'},-- valid (pass) {'sbn=0-12345679'},-- valid (pass) {'sbn=6-1234567X'},-- valid (pass) {'sbn=0 12345679'},-- valid (pass) {'sbn=6 1234567X'},-- valid (pass) }, {nowiki=false,templatestyles=true} ) end --[[--------------------------< T E S T _ S S R N >------------------------------------------------------------ ]] functionp:test_ssrn() locallimit=live_cfg.id_handlers['SSRN'].id_limit self:preprocess_equals_preprocess_many( '{{cite book/new |title=Title |','}}','{{cite book |title=Title |','}}', { {'ssrn=ssrn'},-- no digit (fail) {'ssrn=99'},-- out of bounds (fail) {'ssrn=100'},-- in bounds (pass) {'ssrn='..limit},-- in bounds (pass) {'ssrn='..limit+1},-- out of bounds (fail) }, {nowiki=false,templatestyles=true} ) limit=new_cfg.id_handlers['SSRN'].id_limit self:preprocess_equals_preprocess_many( '{{cite book/new |title=Sandbox limit test |','}}','{{cite book |title=Sandbox limit test |','}}', { {'ssrn='..limit},-- in bounds (pass) {'ssrn='..limit+1},-- out of bounds (fail) }, {nowiki=false,templatestyles=true} ) end --[[--------------------------< T E S T _ M E S S A G E - I D >------------------------------------------------ ]] functionp:test_message_id() self:preprocess_equals_preprocess_many( '{{cite newsgroup/new |title=Title |','}}','{{cite newsgroup |title=Title |','}}', { {'message-id=something'},-- missing '@' (fail) {'message-id=<something@somewhere'},-- leading '<' (fail) {'message-id=something@somewhere>'},-- trailing '>' (fail) {'message-id=something@somewhere'},-- valid (pass) }, {nowiki=false,templatestyles=true} ) end --[[--------------------------< T E S T _ Z B L >-------------------------------------------------------------- ]] functionp:test_zbl() self:preprocess_equals_preprocess_many( '{{cite newsgroup/new |title=Title |','}}','{{cite newsgroup |title=Title |','}}', { {'zbl=7777777'},-- length (temp form) (fail) {'zbl=999999999'},-- length (temp form) (fail) {'zbl=aaaaaaaa'},-- must be digits (temp form) (fail) {'zbl=88888888'},-- valid (temp form) (pass) {'zbl=444455555'},-- missing dot (fail) {'zbl=333.666666'},-- dot misplaced (fail) {'zbl=4444.55555'},-- valid (pass) }, {nowiki=false,templatestyles=true} ) end --[[--------------------------< T E S T _ A U T O _ L I N K >----------------------------------------========= ]] functionp:test_auto_link() self:preprocess_equals_preprocess_many( '{{cite book/new |title=Title |doi-access=free |','}}','{{cite book |title=Title |doi-access=free |','}}', { {'doi=10.1000/something'},-- title not linked {'pmc=1 |doi=10.1000/something'},-- title not linked }, {nowiki=false,templatestyles=true} ); self:preprocess_equals_preprocess_many( '{{cite journal/new |title=Title |journal=Journal |','}}','{{cite journal |title=Title |journal=Journal |','}}', { {'doi=10.1000/something |doi-access=free |doi-broken-date=2020年09月09日'},-- title linked by doi; TODO: but should it be linked? {'doi=10.1000/some thing |doi-access=free'},-- title linked by doi; TODO: but should it be linked? {'doi=10.1000/something |doi-access=free'},-- title linked by doi {'pmc=1 |doi=10.1000/something |doi-access=free |pmc-embargo-date='..today_plus_offset_get('Y-m-d','1 days')},-- embargoed pmc; title linked by doi {'pmc=1 |doi=10.1000/something |doi-access=free'},-- title linked by pmc {'pmc=1 |pmc-embargo-date='..today_plus_offset_get('Y-m-d','1 days')},-- title not linked {'pmc=0 |pmc-embargo-date='..today_plus_offset_get('Y-m-d','1 days')},-- title not linked {'pmc=0 |doi=10.1000/something |doi-access=free'},-- title linked by pmc; TODO: but shouldn't it be linked by doi? {'pmc=0 |doi=10.1000/something |doi-access=free |doi-broken-date=2020年09月09日'},-- title linked by pmc; TODO: should not be linked? {'pmc=0 |doi=10.1000/something |doi-access=free |doi-broken-date=2020年09月09日 |pmc-embargo-date='..today_plus_offset_get('Y-m-d','1 days')},-- title linked by pmc; TODO: should not be linked? }, {nowiki=false,templatestyles=true} ) end --[[--------------------------< T E S T _ A C C E S S _ I C O N S >-------------------------------------------- ]] functionp:test_access_icons() self:preprocess_equals_preprocess_many( '{{cite book/new |title=Title |','}}','{{cite book |title=Title |','}}', { {'bibcode=1000a&1.b2.c3.d4..e |bibcode-access=free'}, {'doi=10.1000/something |doi-access=free'}, {'hdl=abc123/abc123 |hdl-access=free'}, {'jstor=12345 |jstor-access=free'}, {'ol=OL4444A |ol-access=free'}, {'osti=15005772 |osti-access=free'}, {'s2cid=30337924 |s2cid-access=free'}, }, {nowiki=false,templatestyles=true} ) end --[[--------------------------< T E S T _ A C C E P T _ A S _ W R I T T E N >---------------------------------- ]] functionp:test_accept_as_written() self:preprocess_equals_preprocess_many( '{{cite book/new |title=Title |','}}','{{cite book |title=Title |','}}', { {'doi=((10.1000/something.))'}, {'eissn=((0123-4566))'},-- check digit (fail) {'isbn=((3123467896))'},-- checkdigit (fail) {'isbn=((978-01234567866))'},-- length (14) (fail) {'isbn=((978-0123456788))'},-- check digit (fail) {'issn=((0123-4566))'},-- check digit (fail) {'sbn=((012345678))'},-- checkdigit (fail) }, {nowiki=false,templatestyles=true} ) end returnp