Module: Citation/CS1/testcases/identifiers Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.Anti-spam check. Do not fill this in! --[=[ Unit tests for [[Module:Citation/CS1/Identifiers]]. Click talk page to run tests. ]=] local p = require('Module:UnitTests'); local live_cfg = mw.loadData ('Module:Citation/CS1/Configuration'); local new_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 ]] local function today_plus_offset_get (format, offset) return mw.getContentLanguage():formatDate(format, 'today ' .. offset and ('+ ' .. offset) or ''); end --[[--------------------------< A R X I V _ 9 1 0 7 _ 0 7 0 3 >------------------------------------------------ ]] function p: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 >------------------------------------------------ ]] function p: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 >---------------------------------------------------------- ]] function p: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 >---------------------------------------------------------------------- ]] function p: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 >---------------------------------------------------------------- ]] function p:test_bibcode() local this_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 >---------------------------------------------------------------- ]] function p:test_biorxiv() local today = 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 >------------------------------------------------------------ ]] function p: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 >------------------------------------------------------------------------ ]] function p: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 >------------------------------------------------------------------------ ]] function p: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 >------------------------------------------------------------ ]] function p: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 >------------------------------------------------------------ ]] function p: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 >------------------------------------------------------------ ]] function p: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 >-------------------------------------------------------------- ]] function p: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 >------------------------------------------------------------ ]] function p: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 >---------------------------------------------------------------- ]] function p: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 >------------------------------------------------------------ ]] function p: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 >---------------------------------------------------------------- ]] function p: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 >-------------------------------------------------------------- ]] function p:test_pmc() local limit = 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 >------------------------------------------------------------ ]] function p:test_pmid() local limit = 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 >-------------------------------------------------------------- ]] function p: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 >---------------------------------------------------------- ]] function p:test_s2cid() local limit = 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 >-------------------------------------------------------------- ]] function p: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 >------------------------------------------------------------ ]] function p:test_ssrn() local limit = 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 >------------------------------------------------ ]] function p: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 >-------------------------------------------------------------- ]] function p: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 >----------------------------------------========= ]] function p: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 >-------------------------------------------- ]] function p: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 >---------------------------------- ]] function p: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 return p Summary: Please note that all contributions to Christianpedia may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here. You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see Christianpedia:Copyrights for details). Do not submit copyrighted work without permission! Cancel Editing help (opens in new window) Template used on this page: Module:Citation/CS1/testcases/identifiers/doc (view source) Discuss this page