Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Humanipedia
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Module:Citation/CS1/testcases/identifiers
Module
Discussion
English
Read
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Appearance
move to sidebar
hide
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 Humanipedia 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
Humanipedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Templates used on this page:
Template:Error
(
edit
)
Template:Module other
(
edit
)
Template:Module rating
(
edit
)
Template:Ombox
(
edit
)
Template:Pp
(
edit
)
Template:Protection padlock
(
edit
)
Template:Sandbox other
(
edit
)
Template:Template link
(
edit
)
Template:Tl
(
edit
)
Module:Citation/CS1/testcases/identifiers/doc
(
edit
)
Module:Error
(
edit
)
Module:File link
(
edit
)
Module:Message box
(
edit
)
Module:Protection banner
(
edit
)
Module:String
(
edit
)