Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Module:Citation/CS1/testcases/anchor

From Wikipedia, the free encyclopedia
<Module:Citation |CS1 |testcases
Module documentation[create] [purge]
You might want tocreate a documentation page for thisScribunto module.
Editors can experiment in this module's sandbox(create |mirror) and testcases(create) pages.
Add categories to the/doc subpage.Subpages of this module.
-- we never call cs1 directly because it doesn't have a nice implementation-- as a module, so comment out below line-- local myModule = require('Module:Citation/CS1') -- the module to be testedlocalScribuntoUnit=require('Module:ScribuntoUnit')localsuite=ScribuntoUnit:new()-- merge keys and values into one tablelocalfunctionmerge(t1,t2)localt3={}fork,vinpairs(t1)dot3[k]=vendfork,vinpairs(t2)dot3[k]=vendreturnt3end-- Finds the citeref in an expanded CS1/2 template. Takes a test_parameters-- table and a specific template invoke's args. The test_parameters table has-- the following fields:-- * base_args, a table representing the template args common to the test case.-- * pattern, a string to find in the expanded template-- * frame, usually from mw.getCurrentFrame()-- * template, a string which is the name of the template to test.-- targs is a table of the template arguments unique to the specific assertion.localfunctionciteref(test_parameters,targs)localmerged_args=merge(test_parameters.base_args,targs)localexpansion=test_parameters.frame:expandTemplate{title=test_parameters.template,args=merged_args}local_,_,citeref_value=mw.ustring.find(expansion,test_parameters.pattern)ifnotciteref_valuethenciteref_value=''endreturnciteref_valueend-- Tests to ensure author masks don't corrupt the CITEREFfunctionsuite:testAuthorMask()localenv={frame=mw.getCurrentFrame(),pattern='id=\"(CITEREF%S-)\"',template='cite book/new',base_args={title='T',author='_A1_',year='2020'}}self:assertEquals('CITEREF_A1_2020',citeref(env,{chapter='CH'}))self:assertEquals('CITEREF_A1_2020',citeref(env,{['author-mask']='A1'}))self:assertEquals('CITEREF_A1_2020',citeref(env,{['author-mask1']='2'}))end-- Tests what happens with various counts of contributors, authors, and editorsfunctionsuite:testCounts()localenv={frame=mw.getCurrentFrame(),pattern='id=\"(CITEREF%S-)\"',template='cite book/new',base_args={title='T',year='2020'}}self:assertEquals('',citeref(env,{chapter='CH'}))self:assertEquals('CITEREF_A1_2020',citeref(env,{author='_A1_'}))self:assertEquals('',citeref(env,{contributor='C1'}))self:assertEquals('',citeref(env,{contributor='C1',contribution='CON'}))self:assertEquals('CITEREF_E1_2020',citeref(env,{editor='_E1_'}))self:assertEquals('CITEREF_A1_2020',citeref(env,{author='_A1_',contributor='_C1_'}))self:assertEquals('CITEREF_C1_2020',citeref(env,{author='_A1_',contributor='_C1_',contribution='CON'}))self:assertEquals('CITEREF_A1_2020',citeref(env,{author='_A1_',editor='_E1_'}))self:assertEquals('CITEREF_E1_2020',citeref(env,{editor='_E1_',contributor='_C1_'}))self:assertEquals('CITEREF_E1_2020',citeref(env,{editor='_E1_',contributor='_C1_',contribution='CON'}))self:assertEquals('CITEREF_A1_2020',citeref(env,{author='_A1_',contributor='_C1_',editor='_E1_'}))self:assertEquals('CITEREF_C1_2020',citeref(env,{author='_A1_',contributor='_C1_',editor='_E1_',contribution='CON'}))self:assertEquals('CITEREF_A1_A2_A3_A4_2020',citeref(env,{author='_A1_',author2='A2_',author3='A3_',author4='A4_'}))self:assertEquals('CITEREF_A1_A2_A3_A4_2020',citeref(env,{author='_A1_',author2='A2_',author3='A3_',author4='A4_',author5='A5_'}))self:assertEquals('CITEREF_C1_C2_C3_2020',citeref(env,{author='_A1_',contributor='_C1_',contributor2='C2_',contributor3='C3_',contribution='CON'}))self:assertEquals('CITEREF_E1_E2_2020',citeref(env,{editor='_E1_',editor2='E2_'}))end-- Tests date resolution code, including anchor years.functionsuite:testDates()localenv={frame=mw.getCurrentFrame(),pattern='id=\"(CITEREF%S-)\"',template='cite book/new',base_args={title='T',author='_A1_'}}self:assertEquals('CITEREF_A1_2020',citeref(env,{year='2020'}))self:assertEquals('CITEREF_A1_c\._2020',citeref(env,{date='c. 2020'}))self:assertEquals('CITEREF_A1_2020',citeref(env,{date='1 January 2020'}))self:assertEquals('CITEREF_A1_2020a',citeref(env,{date='1 January 2020a'}))self:assertEquals('CITEREF_A1_2020',citeref(env,{date='1 January 2020',year='2020'}))self:assertEquals('CITEREF_A1_2020a',citeref(env,{date='1 January 2020',year='2020a'}))self:assertEquals('CITEREF_A1_2020',citeref(env,{date='2020-01-01',year='2020'}))self:assertEquals('CITEREF_A1_2020a',citeref(env,{date='2020-01-01',year='2020a'}))endfunctionsuite:testDatesMaint()localframe=mw.getCurrentFrame()localbase_args={title='T',author='_A1_',year='2020'}localtemplate='cite book/new'localmaint='CS1 maint: date and year'self:assertStringContains(maint,frame:expandTemplate{title=template,args=merge(base_args,{date='1 January 2020'})})self:assertStringContains(maint,frame:expandTemplate{title=template,args=merge(base_args,{date='2020-01-01'})})end-- should fail: extra unexpected nd in the anchor, plus trailingauthordash below-- TODO: Should that change? I've seen workarounds in the wild.functionsuite:testDatesExtraNd()localenv={frame=mw.getCurrentFrame(),pattern='id=\"(CITEREF%S-)\"',template='cite book/new',base_args={title='T',author='_A1_'}}self:assertEquals('CITEREF_A1_',citeref(env,{date='nd'}))end-- should fail: extra unexpected n.d. in the anchor-- TODO: Should that change? I've seen workarounds in the wild.functionsuite:testDatesExtraNdPunct()localenv={frame=mw.getCurrentFrame(),pattern='id=\"(CITEREF%S-)\"',template='cite book/new',base_args={title='T',author='_A1_'}}self:assertEquals('CITEREF_A1_',citeref(env,{date='n.d.'}))end-- Tests to ensure display name settings don't corrupt the CITEREFfunctionsuite:testDisplayNames()localenv={frame=mw.getCurrentFrame(),pattern='id=\"(CITEREF%S-)\"',template='cite book/new',base_args={title='T',author='_A1_',author2='A2_',date='2020'}}self:assertEquals('CITEREF_A1_A2_2020',citeref(env,{chapter='CH'}))self:assertEquals('CITEREF_A1_A2_2020',citeref(env,{['display-authors']='0'}))self:assertEquals('CITEREF_A1_A2_2020',citeref(env,{['display-authors']='1'}))self:assertEquals('CITEREF_A1_A2_2020',citeref(env,{['display-authors']='etal'}))end-- Tests what happens for certain values of reffunctionsuite:testRef()localenv={frame=mw.getCurrentFrame(),pattern='(id=\"CITEREF%S-\")',template='cite book/new',base_args={title='T',author='_A1_',year='2020'}}-- TODO test citation for equivalent valueself:assertEquals('id=\"CITEREF_A1_2020\"',citeref(env,{chapter='CH'}))self:assertEquals('',citeref(env,{ref='none'}))self:assertEquals('id=\"CITEREF_A1_2020\"',citeref(env,{ref='CITEREF_A1_2020'}))end-- slightly different setup; we want to test that the input ID is the output IDfunctionsuite:testRefREF()localenv={frame=mw.getCurrentFrame(),pattern='(id=\"REF\")',template='cite book/new',base_args={title='T',author='_A1_',year='2020'}}self:assertEquals('id=\"REF\"',citeref(env,{ref='REF'}))end-- tests for expected presence of maintenance messages in reffunctionsuite:testRefMaint()localframe=mw.getCurrentFrame()localbase_args={title='T',author='_A1_',date='2020'}self:assertStringContains('CS1 maint: ref duplicates default',frame:expandTemplate{title='cite book/new',args=merge(base_args,{ref='CITEREF_A1_2020'})})self:assertStringContains('Invalid <code class=\"cs1%-code\">&#124;ref=harv</code>',frame:expandTemplate{title='cite book/new',args=merge(base_args,{ref='harv'})})end-- should fail: missing trailing underscore in anchor; not sure if that's desirable-- or if that can change-- TODO: Ask someone.functionsuite:testTrailingAuthorDash()localenv={frame=mw.getCurrentFrame(),pattern='id=\"(CITEREF%S-)\"',template='cite book/new',base_args={title='T',author='_A1_'}}self:assertEquals('CITEREF_A1_',citeref(env,{chapter='CH'}))endreturnsuite
Retrieved from "https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/testcases/anchor&oldid=1020088396"

[8]ページ先頭

©2009-2025 Movatter.jp