Module:Infobox television episode/testcases
Appearance
![]() | This is the test cases page for the module Module:Infobox television episode. Results of the test cases. |
-- Unit tests for [[Module:Infobox television episode]]. Click talk page to run tests.
local p = require('Module:UnitTests')
local function expandTemplate(template, value)
local frame = mw.getCurrentFrame()
return frame:expandTemplate{title = template, args = value}
end
function p:test_01_01_infobox_title_equal_to_article_title()
self:preprocess_equals_sandbox_many('{{#invoke:Infobox television episode', 'validate_values', {
{'page_title_test=Long article title|title=' .. expandTemplate("Nowrap", {"Long article title"}), ''},
{'page_title_test=Long article title|title=Long article <br>title', ''},
{'page_title_test=Long article title|title=Long article <br >title', ''},
{'page_title_test=Long article title|title=Long article <br/>title', ''},
{'page_title_test=Long article title|title=Long article <br />title', ''},
{'page_title_test=Long article title|title=Long article <br/> title', ''},
{'page_title_test=Long article title (dab)|title=' .. expandTemplate("Nowrap", {"Long article title"}) .. '|series=[[dab]]', ''},
{'page_title_test=Long article title (dab)|title=Long article <br>title|series=[[dab]]', ''},
{'page_title_test=title|rtitle=Title', ''},
{'page_title_test=Agents of S.H.I.E.L.D. series finale|rtitle="The End Is at Hand" and "{{nowrap|What We\'re Fighting For}}"|series=[[Agents of S.H.I.E.L.D.]]', ''},
{'page_title_test=A Game of Pool (The Twilight Zone, 1959)|title=A Game of Pool|series=[[The Twilight Zone (1985 TV series)|The Twilight Zone]]', '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_title_test=Just for the Record (Randall and Hopkirk (Deceased))|title=Just for the Record|series=[[Randall and Hopkirk (Deceased)]]', '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_title_test=Cassie (Skins series 1)|title=Cassie|series=[[Skins (British TV series)|Skins]]', '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_title_test=Debbie (Brooklyn Nine-Nine)|title=Debbie|series=[[Brooklyn Nine-Nine]]', '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_title_test=Debbie (Brooklyn Nine-Nine episode)|title=Debbie|series=[[Brooklyn Nine-Nine]]', '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_title_test=Title (dab)|title=Title (dab)', '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_title_test=Title (not a dab)|title=Title (not a dab)|series=[[Lost]]', '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_title_test=Test|title=Test', '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_title_test=Test (dab)|title=Test|series=[[dab]]', '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_title_test=Test (dab episode)|title=Test|series=[[dab]]', '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_title_test=Test|title=test', '[[Category:Pages using infobox television episode with non-matching title]]'},
{'page_title_test=Long article title|title=' .. expandTemplate("Nowrap", {"Long article Title"}), '[[Category:Pages using infobox television episode with non-matching title]]'},
{'page_title_test=Long article title|title=Long article <br/> Title', '[[Category:Pages using infobox television episode with non-matching title]]'},
{'page_title_test=Premiere (The Tonight Show Starring Jimmy Fallon)|title=Premiere|series=[[The Tonight Show Starring Jimmy Fallon|The Tonight Show Starring<br/> Jimmy Fallon]]', '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_title_test=Premiere (The Tonight Show Starring Jimmy Fallon episode)|title=Premiere|series=[[The Tonight Show Starring Jimmy Fallon|The Tonight Show Starring<br/> Jimmy Fallon]]', '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
}, {nowiki=1})
end
function p:test_01_02_infobox_title_equal_to_article_title_special_cases()
self:preprocess_equals_sandbox_many('{{#invoke:Infobox television episode', 'validate_values', {
{'page_test=HappyHolograms|title=#HappyHolograms', '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_test=HappyHolograms|title=#HappyHolograms2', '[[Category:Pages using infobox television episode with non-matching title]]'},
{'page_test=Rehash (South Park)|title=#REHASH', ''},
{'page_test=Rehash (South Park)|title=#REHASH|series=[[South Park]]', '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_test=Rehash (South Park)|title=#REHASH2|series=[[South Park]]', '[[Category:Pages using infobox television episode with non-matching title]]'},
{'page_test=Rick Potion No. 9|title=Rick Potion #9|series=[[Rick and Morty]]', '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_test=All things|page_title_test=All things|title=all things', '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_test=All things|page_title_test=All things|title=All Things', '[[Category:Pages using infobox television episode with non-matching title]]'},
{'page_test=ISpy (Modern Family)|page_title_test=ISpy (Modern Family)|title=iSpy|series=[[Modern Family]]', '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_test=ISpy (Modern Family)|page_title_test=ISpy (Modern Family)|title=ISpy|series=[[Modern Family]]', '[[Category:Pages using infobox television episode with non-matching title]]'},
{'page_test=ISpy (Modern Family)|page_title_test=ISpy (Modern Family)|title=I Spy|series=[[Modern Family]]', '[[Category:Pages using infobox television episode with non-matching title]]'},
{'page_test=Google Behind the Screen|page_title_test=Google Behind the Screen|title=Google: Behind the Screen', '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_test=Google Behind the Screen|page_title_test=Google Behind the Screen|title=Google Behind the Screen', '[[Category:Pages using infobox television episode with non-matching title]]'},
{'page_test=Eps1.0 hellofriend.mov|page_title_test=Eps1.0 hellofriend.mov|title=eps1.0_hellofriend.mov|italic_title=no', '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_test=Eps1.0 hellofriend.mov|page_title_test=Eps1.0 hellofriend.mov|title=eps1.0 hellofriend.mov|italic_title=no', '[[Category:Pages using infobox television episode with non-matching title]]'},
{'page_test=Wvrdr error 100 oest-of-th3-gs.gid30n not found|page_title_test=Wvrdr error 100 oest-of-th3-gs.gid30n not found|title=wvrdr_error_100<oest-of-th3-gs.gid30n> not found|italic_title=no', '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_test=Wvrdr error 100 oest-of-th3-gs.gid30n not found|page_title_test=Wvrdr error 100 oest-of-th3-gs.gid30n not found|title=wvrdr error 100<oest-of-th3-gs.gid30n> not found|italic_title=no', '[[Category:Pages using infobox television episode with non-matching title]]'},
{'page_test=30 Rock: A One-Time Special|page_title_test=30 Rock: A One-Time Special|title=\'\'30 Rock\'\': A One-Time Special|italic_title=no', '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_test=30 Rock: A One-Time Special|page_title_test=30 Rock: A One-Time Special|title=30 Rock: A One-Time Special|italic_title=no', '[[Category:Pages using infobox television episode with non-matching title]]'},
}, {nowiki=1})
end
function p:test_01_03_infobox_title_equal_to_article_title_quotes()
self:preprocess_equals_sandbox_many('{{#invoke:Infobox television episode', 'validate_values', {
{'page_title_test=\'Test|title=' .. expandTemplate("Space+single", {}) .. "Test", '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_title_test=Test\'|title=Test' .. expandTemplate("Single+space", {}), '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_title_test=\'Test (dab)|title=' .. expandTemplate("Space+single", {}) .. "Test|series=[[dab]]", '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_title_test=\'Test\'|title=' .. expandTemplate("Space+single", {}) .. "Test" .. expandTemplate("Single+space", {}), '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_title_test=\'Test|title=' .. expandTemplate("Space+single", {}) .. "test", '[[Category:Pages using infobox television episode with non-matching title]]'},
{'page_title_test="A" in a title|title=' .. expandTemplate("Space+single", {}) .. "A' in a title", '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_title_test=Bart Gets an "F"|title=Bart Gets an \'F' .. expandTemplate("Single+space", {}), '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_title_test="A" in a title (dab)|title=' .. expandTemplate("Space+single", {}) .. "A' in a title|series=[[dab]]", '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_title_test="A" in a title is an "F"|title=' .. expandTemplate("Space+single", {}) .. "A' in a title is an 'F" .. expandTemplate("Single+space", {}), '[[Category:Pages using infobox television episode with unnecessary title parameter]]'},
{'page_title_test="A" in a title|title=' .. expandTemplate("Space+single", {}) .. '"a" in a title', '[[Category:Pages using infobox television episode with non-matching title]]'},
}, {nowiki=1})
end
function p:test_02_image_auxiliary_values()
self:preprocess_equals_sandbox_many('{{#invoke:Infobox television episode', 'validate_values', {
{'image=test|image_size=1', ''},
--{'image=<!-- Deleted -->', '[[Category:Pages using infobox television episode with image-related values without an image]]'},
{'image_size=1', '[[Category:Pages using infobox television episode with image-related values without an image]]'},
{'image_upright=1', '[[Category:Pages using infobox television episode with image-related values without an image]]'},
{'image_alt=test', '[[Category:Pages using infobox television episode with image-related values without an image]]'},
{'alt=test', '[[Category:Pages using infobox television episode with image-related values without an image]]'},
{'caption=test', '[[Category:Pages using infobox television episode with image-related values without an image]]'},
}, {nowiki=1})
end
function p:test_03_is_image_formatted_correctly()
self:preprocess_equals_sandbox_many('{{#invoke:Infobox television episode', 'validate_values', {
{'image=image.jpg', ''},
{'image=File:image.jpg', '[[Category:Pages using infobox television episode with incorrectly formatted values|image]]'},
{'image=[[File:image.jpg]]', '[[Category:Pages using infobox television episode with incorrectly formatted values|image]]'},
{'image=Image:image.jpg', '[[Category:Pages using infobox television episode with incorrectly formatted values|image]]'},
{'image=[[Image:image.jpg]]', '[[Category:Pages using infobox television episode with incorrectly formatted values|image]]'},
}, {nowiki=1})
end
function p:test_04_is_image_size_using_px()
self:preprocess_equals_sandbox_many('{{#invoke:Infobox television episode', 'validate_values', {
{'image=test|image_size=100', ''},
{'image=test|image_size=100px', '[[Category:Pages using infobox television episode with incorrectly formatted values|image_size]]'},
}, {nowiki=1})
end
function p:test_05_links_only()
self:preprocess_equals_sandbox_many('{{#invoke:Infobox television episode', 'validate_values|', {
{'series=[[Lost]]', ''},
{'prev=[[? (Lost)]]', ''},
{'next=[[? (Lost)]]', ''},
{'series=Lost', '[[Category:Pages using infobox television episode with unlinked values|series]]'},
{'prev=? (Lost)', '[[Category:Pages using infobox television episode with unlinked values|prev]]'},
{'next=? (Lost)', '[[Category:Pages using infobox television episode with unlinked values|next]]'},
{"series=''Lost''", '[[Category:Pages using infobox television episode with unlinked values|series]]'},
{"series=''[[Lost]]''", '[[Category:Pages using infobox television episode with incorrectly formatted values|series]]'},
{"prev=''[[? (Lost)]]''", '[[Category:Pages using infobox television episode with incorrectly formatted values|prev]]'},
{"next=''[[? (Lost)]]''", '[[Category:Pages using infobox television episode with incorrectly formatted values|next]]'},
}, {nowiki=1})
end
function p:test_06_using_overall()
self:preprocess_equals_sandbox_many('{{#invoke:Infobox television episode', 'validate_values', {
{'episode=1', ''},
{'season=1', ''},
{'series_no=1', ''},
{'episode=1 (1 overall)', '[[Category:Pages using infobox television episode with incorrectly formatted values|episode]]'},
{'season=1 (1 overall)', '[[Category:Pages using infobox television episode with incorrectly formatted values|season]]'},
{'series_no=1 (1 overall)', '[[Category:Pages using infobox television episode with incorrectly formatted values|series_no]]'},
}, {nowiki=1})
end
function p:test_07_formatted()
self:preprocess_equals_sandbox_many('{{#invoke:Infobox television episode', 'validate_values', {
{"rtitle=''rtitle''", ''},
{"rprev=''rprev''", ''},
{"rnext=''rnext''", ''},
{"image=image|image_alt=''image_alt''", ''},
{"image=image|alt=''alt''", ''},
{"image=image|caption=''caption''", ''},
{"based_on=''based_on''", ''},
{"music=''music''", ''},
{"guests=''guests''", ''},
{"series=[[American Horror Story]]|season_article=\'\'[[American Horror Story: Apocalypse]]\'\'", ''},
{"series=''[[Lost (TV series)]]''", '[[Category:Pages using infobox television episode with incorrectly formatted values|series]]'},
{"prev=''[[prev]]''", '[[Category:Pages using infobox television episode with incorrectly formatted values|prev]]'},
{"next=''[[next]]''", '[[Category:Pages using infobox television episode with incorrectly formatted values|next]]'},
{"episode=''1''", '[[Category:Pages using infobox television episode with incorrectly formatted values|episode]]'},
{"season=''1''", '[[Category:Pages using infobox television episode with incorrectly formatted values|season]]'},
{"series_no=''1''", '[[Category:Pages using infobox television episode with incorrectly formatted values|series_no]]'},
{"episode_list=[[List of ''Lost'' episodes]]", '[[Category:Pages using infobox television episode with incorrectly formatted values|episode_list]][[Category:Pages using infobox television episode with incorrectly formatted values|episode_list]]'},
{"producer=''Executive producer'': John", '[[Category:Pages using infobox television episode with incorrectly formatted values|producer]]'},
}, {nowiki=1})
end
function p:test_08_linked()
self:preprocess_equals_sandbox_many('{{#invoke:Infobox television episode', 'validate_values', {
{'episode=1', ''},
{'season=1', ''},
{'series_no=1', ''},
{'episode_list=List of Lost episodes', ''},
{'episode=[[1]]', '[[Category:Pages using infobox television episode with incorrectly formatted values|episode]]'},
{'season=[[1]]', '[[Category:Pages using infobox television episode with incorrectly formatted values|season]]'},
{'series_no=[[1]]', '[[Category:Pages using infobox television episode with incorrectly formatted values|series_no]]'},
{'episode_list=[[List of Lost episodes]]', '[[Category:Pages using infobox television episode with incorrectly formatted values|episode_list]]'},
}, {nowiki=1})
end
function p:test_09_has_icons()
self:preprocess_equals_sandbox_many('{{#invoke:Infobox television episode', 'validate_values', {
{'director=' .. expandTemplate("USA", {}) .. 'test', '[[Category:Pages using infobox television with flag icon]]'},
}, {nowiki=1})
end
-- function p:test_10_invalid_tags()
-- self:preprocess_equals_sandbox_many('{{#invoke:Infobox television episode', 'validate_values', {
-- {'guests={{center|Name}}', '[[Category:Pages using infobox television episode with incorrectly formatted values|guests]]'},
-- {'episode=<small>Name</small>', '[[Category:Pages using infobox television episode with incorrectly formatted values|episode]]'},
-- {'episode=' .. expandTemplate("Small", {"Name"}), '[[Category:Pages using infobox television episode with incorrectly formatted values|episode]]'},
-- }, {nowiki=1})
-- end
-- {'director=First name<br>Second name', '[[Category:Pages using infobox television episode with incorrectly formatted values|director]]'},
-- {'director=First name<br/>Second name', '[[Category:Pages using infobox television episode with incorrectly formatted values|director]]'},
-- {'director=First name<br />Second name', '[[Category:Pages using infobox television episode with incorrectly formatted values|director]]'},
function p:test_10_are_dates_formatted_correctly()
self:preprocess_equals_sandbox_many('{{#invoke:Infobox television episode', 'validate_values', {
{'airdate=' .. expandTemplate("Start date", {"1999", "3", "4"}), ''},
{'released=' .. expandTemplate("Start date", {"1999", "3", "4"}), ''},
{'airdate=' .. expandTemplate("Start date and age", {"1999", "3", "4"}), '[[Category:Pages using infobox television episode with nonstandard dates]]'},
{'airdate=' .. expandTemplate("Start and end dates", {"1939", "9", "1", "1945", "9", "2"}), '[[Category:Pages using infobox television episode with nonstandard dates]]'},
{'airdate=' .. expandTemplate("Film date/sandbox", {"1999", "3", "4"}), '[[Category:Pages using infobox television episode with unnecessary list markup]][[Category:Pages using infobox television episode with nonstandard dates]]'},
{'airdate=4/3/1999', '[[Category:Pages using infobox television episode with nonstandard dates]]'},
{'airdate=March 4, 1999', '[[Category:Pages using infobox television episode with nonstandard dates]]'},
{'released=4/3/1999', '[[Category:Pages using infobox television episode with nonstandard dates]]'},
{'released=March 4, 1999', '[[Category:Pages using infobox television episode with nonstandard dates]]'},
{'airdate=Unaired', ''},
{'released=Unaired', ''},
}, {nowiki=1})
end
function p:test_11_is_italic_title_valid_value()
self:preprocess_equals_sandbox_many('{{#invoke:Infobox television episode', 'validate_values', {
{'', ''},
{'italic_title=no', ''},
{'italic_title=n', '[[Category:Pages using infobox television episode with incorrectly formatted values|italic_title]]'},
{'italic_title=y', '[[Category:Pages using infobox television episode with incorrectly formatted values|italic_title]]'},
}, {nowiki=1})
end
function p:test_12_list_markup()
self:preprocess_equals_sandbox_many('{{#invoke:Infobox television episode', 'validate_values', {
{'director=* First director', ''},
{'director=* First director * Second director', ''},
{'episode=1 <br> 2', ''},
{'director=' .. expandTemplate("Plainlist", {"|* First director * Second director"}), '[[Category:Pages using infobox television episode with unnecessary list markup]]'},
{'director=' .. expandTemplate("Indented plainlist", {"|* First director * Second director"}), '[[Category:Pages using infobox television episode with unnecessary list markup]]'},
{'director=' .. expandTemplate("Flatlist", {"|* First director * Second director"}), '[[Category:Pages using infobox television episode with unnecessary list markup]]'},
{'director=' .. expandTemplate("Hlist", {"|First director|Second director"}), '[[Category:Pages using infobox television episode with unnecessary list markup]]'},
{'director=' .. expandTemplate("Unbulleted list", {"|First director|Second director"}), '[[Category:Pages using infobox television episode with unnecessary list markup]]'},
{'director=' .. expandTemplate("Bulleted list", {"|First director|Second director"}), '[[Category:Pages using infobox television episode with unnecessary list markup]]'},
{'director=' .. expandTemplate("Ordered list", {"|First director|Second director"}), '[[Category:Pages using infobox television episode with unnecessary list markup]]'},
{'director=' .. expandTemplate("Horizontal ordered list", {"|First director|Second director"}), '[[Category:Pages using infobox television episode with unnecessary list markup]]'},
{'director=First director <br> Second director', '[[Category:Pages using infobox television episode with unnecessary list markup]]'},
{'director=First director <br > Second director', '[[Category:Pages using infobox television episode with unnecessary list markup]]'},
{'director=First director <br/> Second director', '[[Category:Pages using infobox television episode with unnecessary list markup]]'},
{'director=First director <br /> Second director', '[[Category:Pages using infobox television episode with unnecessary list markup]]'},
{'director=First director <BR> Second director', '[[Category:Pages using infobox television episode with unnecessary list markup]]'},
{'commentary=' .. expandTemplate("Plainlist", {"* First person * Second person"}), '[[Category:Pages using infobox television episode with unnecessary list markup]]'},
}, {nowiki=1})
end
-- function p:test_13_are_refs_in_infobox()
-- self:preprocess_equals_sandbox_many('{{#invoke:Infobox television episode', 'validate_values', {
-- {'airdate=' .. expandTemplate("Start date", {"1999", "3", "4"}) .. '<ref>test</ref>', '[[Category:Pages using infobox television episode with references in the infobox]]'},
-- {'director=First director<ref>test</ref>', '[[Category:Pages using infobox television episode with references in the infobox]]'},
-- {'caption=image caption<ref>test</ref>', ''},
-- {'production=1234<ref>test</ref>', ''},
-- }, {nowiki=1})
-- end
function p:test_16_all_errors()
self:preprocess_equals_sandbox_many('{{#invoke:Infobox television episode', 'validate_values', {
{'page_title_test=Test|title=Test|episode=[[1]]|image_size=1|series=Lost|director=' .. expandTemplate("USA", {}) .. 'test|airdate=4/3/1999', '[[Category:Pages using infobox television episode with unnecessary title parameter]][[Category:Pages using infobox television episode with image-related values without an image]][[Category:Pages using infobox television episode with unlinked values|series]][[Category:Pages using infobox television episode with incorrectly formatted values|episode]][[Category:Pages using infobox television with flag icon]][[Category:Pages using infobox television episode with nonstandard dates]]'},
}, {nowiki=1})
end
function p:test_17_italic_title()
self:preprocess_equals_sandbox_many('{{#invoke:Infobox television episode', 'italic_title', {
{'', ''},
{'page_title_test=', ''},
{'page_title_test=title', ''},
{'page_title_test=title (dab)', ''},
{'page_title_test=title|series=Lost', ''},
{'page_title_test=title (dab)|series=Lost', ''},
{'page_title_test=title (Lost)|series=Lost|italic_title=no', ''},
{'page_title_test=Agents of S.H.I.E.L.D. series finale|page_test=Agents of S.H.I.E.L.D. series finale|italic_title=no', ''},
{'page_title_test=title (Lost)|series=Lost', 'italic_dab'},
{'page_title_test=title (Lost episode)|series=Lost', 'italic_dab'},
{'page_title_test=title (Lost episode)|series=Lost', 'italic_dab'},
{'page_title_test=The End (The X-Files)|series=The X-Files', 'italic_dab'},
{'page_title_test=The End (The X-Files episode)|series=The X-Files', 'italic_dab'},
{'page_title_test=A Game of Pool (The Twilight Zone, 1959)|series=[[The Twilight Zone (1985 TV series)|The Twilight Zone]]', 'italic_dab'},
{'page_title_test=Just for the Record (Randall and Hopkirk (Deceased))|series=Randall and Hopkirk (Deceased)', 'italic_dab'},
{'page_title_test=Premiere (The Tonight Show Starring Jimmy Fallon)|series=[[The Tonight Show Starring Jimmy Fallon|The Tonight Show Starring<br/> Jimmy Fallon]]', 'italic_dab'},
{'page_title_test=Agents of S.H.I.E.L.D. series finale|page_test=Agents of S.H.I.E.L.D. series finale|series=Agents of S.H.I.E.L.D.', '[[Category:Pages using infobox television episode with unnecessary manual displaytitle]]'},
{'page_title_test=The End (Lost)|page_test=Agents of S.H.I.E.L.D. series finale|series=Lost', 'italic_dab[[Category:Pages using infobox television episode with unnecessary manual displaytitle]]'},
}, {nowiki=1})
end
local function handle_title(text)
return "\"'''" .. text .. "'''\""
end
local function handle_marks(text, side)
local left_template = "Space+single"
local right_template = "Single+space"
if side == "left" then
return handle_title(expandTemplate(left_template, {}) .. text)
elseif
side == "right" then
return handle_title(text .. expandTemplate(right_template, {}))
else
return handle_title(expandTemplate(left_template, {}) .. text .. expandTemplate(right_template, {}))
end
end
function p:test_18_above_title()
self:preprocess_equals_sandbox_many('{{#invoke:Infobox television episode', 'above_title', {
{'rtitle=title', "'''title'''"},
{'rtitle="title1" and "title2"', handle_title("title1") .. " and " .. handle_title("title2")},
{'rtitle="whoami" and "Hello, Elliot"', handle_title("whoami") .. " and " .. handle_title("Hello, Elliot")},
{'rtitle="The End Is at Hand" and "' .. expandTemplate('nowrap', {"What We\'re Fighting For"}) .. '"', handle_title("The End Is at Hand") .. " and " .. handle_title(expandTemplate('nowrap', {'What We\'re Fighting For'}))},
{'rtitle="The Ed-touchables" and<br/> "Nagged to Ed"', handle_title("The Ed-touchables") .. " and<br/> " .. handle_title("Nagged to Ed")},
{'title=title', handle_title("title")},
{'title=title (dab)', handle_title("title (dab)")},
{'title=title (dab)|series=dab', handle_title("title (dab)")},
{'title=title (dab)|series=[[dab]]', handle_title("title (dab)")},
{'title=title (Randall and Hopkirk (Deceased))|series=Randall and Hopkirk (Deceased)', handle_title("title (Randall and Hopkirk (Deceased))")},
{'title=title (Randall and Hopkirk (Deceased))|series=[[Randall and Hopkirk (Deceased)]]', handle_title("title (Randall and Hopkirk (Deceased))")},
{'title=#title', handle_title("#title")},
{'page_title_test=title', handle_title("title")},
{'page_title_test=title|series=dab', handle_title("title")},
{'page_title_test=title (another title)', handle_title("title (another title)")},
{'page_title_test=title (another title)|series=dab', handle_title("title (another title)")},
{'page_title_test=title (dab)|series=dab', handle_title("title")},
{'page_title_test=title (dab)|series=[[dab]]', handle_title("title")},
{'page_title_test=title (Randall and Hopkirk (Deceased))|series=Randall and Hopkirk (Deceased)', handle_title("title")},
{'page_title_test=title (Randall and Hopkirk (Deceased))|series=[[Randall and Hopkirk (Deceased)]]', handle_title("title")},
{'page_title_test=A Game of Pool (The Twilight Zone, 1959)|series=[[The Twilight Zone (1985 TV series)|The Twilight Zone]]', handle_title("A Game of Pool")},
{'page_title_test=\'title', handle_marks("title", "left", "'")},
{'page_title_test=title\'', handle_marks("title", "right", "'")},
{'page_title_test=\'title (dab)|series=[[dab]]', handle_marks("title", "left")},
{'page_title_test=\'title (another title)', handle_marks("title (another title)", "left")},
{'page_title_test=\'title (another title)|series=[[dab]]', handle_marks("title (another title)", "left")},
{'page_title_test=\'title\'', handle_marks("title", "both")},
{'page_title_test="A" in a title', handle_marks("A' in a title", "left")},
{'page_title_test=Bart Gets an "F"', handle_marks("Bart Gets an 'F", "right")},
{'page_title_test="A" in a title (dab)|series=[[dab]]', handle_marks("A' in a title", "left")},
{'page_title_test="A" in a title (another title)', handle_marks("A' in a title (another title)", "left")},
{'page_title_test="A" in a title (another title)|series=[[dab]]', handle_marks("A' in a title (another title)", "left")},
{'page_title_test="A" in a title is an "F"', handle_marks("A' in a title is an 'F", "both")},
{'page_title_test=The Old Man and the "C" Student', handle_title("The Old Man and the 'C' Student")},
{'page_test=HappyHolograms', handle_title("#HappyHolograms")},
{'page_test=Rick Potion No. 9', handle_title("Rick Potion #9")},
{'page_test=Rehash (South Park)|series=South Park', handle_title("#REHASH")},
{'page_test=All things', handle_title("all things")},
{'page_test=ISpy (Modern Family)|series=[[Modern Family]]', handle_title("iSpy")},
{'page_test=Google Behind the Screen|series=[[Backlight (TV program)]]', handle_title("Google: Behind the Screen")},
{'page_test=Eps1.0 hellofriend.mov|series=[[Mr. Robot]]|italic_title=no', handle_title("eps1.0_hellofriend.mov")},
{'page_test=Wvrdr error 100 oest-of-th3-gs.gid30n not found|series=[[Legends of Tomorrow]]|italic_title=no', handle_title("wvrdr_error_100<oest-of-th3-gs.gid30n> not found")},
{'page_test=30 Rock: A One-Time Special|series=[[30 Rock]]|italic_title=no', handle_title("''30 Rock'': A One-Time Special")},
{'page_test=Advanced Dungeons & Dragons (Community)|series=[[Community (TV series)|Community]]|italic_title=no', handle_title("Advanced ''Dungeons & Dragons''")},
}, {nowiki=1})
end
function p:test_18_above_title_no_bold()
self:preprocess_equals_sandbox_many('{{#invoke:Infobox television episode', 'above_title', {
{'title=title|no_bold=yes', "\"title\""},
{'page_test=eps1.0_hellofriend.mov|no_bold=yes', "\"eps1.0_hellofriend.mov\""},
{'page_test=Strip Jack (Rebus)|no_bold=yes', "\"Strip Jack\""},
}, {nowiki=1})
end
function p:test_19_episode_list()
self:preprocess_equals_sandbox_many('{{#invoke:Infobox television episode', 'episode_list', {
{'episode_list=List of Lost episodes', '[[List of Lost episodes|List of episodes]]'},
{'episode_list=EastEnders#Storylines', '[[EastEnders#Storylines|Storylines]]'},
{'episode_list=[[List of Lost episodes]]', '[[List of Lost episodes]]'},
{"episode_list=List of ''Lost'' episodes", "List of ''Lost'' episodes"},
{'series=[[Lost (TV series)]]', '[[List of Lost (TV series) episodes|List of episodes]]'},
{'series=[[Lost (TV series)|Lost]]', '[[List of Lost (TV series) episodes|List of episodes]]'},
{'series=Agents of S.H.I.E.L.D.', '[[List of Agents of S.H.I.E.L.D. episodes|List of episodes]]'},
{'series=[[Agents of S.H.I.E.L.D.]]', '[[List of Agents of S.H.I.E.L.D. episodes|List of episodes]]'},
{'series=[[Agents of S.H.I.E.L.D.|Agents of S.H.I.E.L.D.]]', '[[List of Agents of S.H.I.E.L.D. episodes|List of episodes]]'},
{'series=The X-Files', '[[List of The X-Files episodes|List of episodes]]'},
{'series=[[The X-Files]]', '[[List of The X-Files episodes|List of episodes]]'},
{'series=[[The X-Files|The X-Files]]', '[[List of The X-Files episodes|List of episodes]]'},
{'series=[[no page exists like this]]', ''},
}, {nowiki=1})
end
function p:test_20_validate_values_crossover_images()
self:preprocess_equals_sandbox_many('{{#invoke:Infobox television episode', 'validate_values_crossover', {
{'image=test|image_size=1', ''},
{'image_size=1', '[[Category:Pages using infobox television episode with image-related values without an image]]'},
{'image_upright=1', '[[Category:Pages using infobox television episode with image-related values without an image]]'},
{'image_alt=test', '[[Category:Pages using infobox television episode with image-related values without an image]]'},
{'alt=test', '[[Category:Pages using infobox television episode with image-related values without an image]]'},
{'caption=test', '[[Category:Pages using infobox television episode with image-related values without an image]]'},
}, {nowiki=1})
end
function p:test_21_validate_values_crossover_has_icons()
self:preprocess_equals_sandbox_many('{{#invoke:Infobox television episode', 'validate_values_crossover', {
{'director1=' .. expandTemplate("USA", {}) .. 'test', '[[Category:Pages using infobox television with flag icon]]'},
}, {nowiki=1})
end
function p:test_22_validate_values_crossover_airdates()
self:preprocess_equals_sandbox_many('{{#invoke:Infobox television episode', 'validate_values_crossover', {
{'airdate_overall=' .. expandTemplate("Start date", {"1999", "3", "4"}), ''},
{'series1=[[series1]]|airdate1=' .. expandTemplate("Start date", {"1999", "3", "4"}), ''},
{'series1=[[series1]]|airdate1=' .. expandTemplate("Start date", {"1999", "3", "4"}) .. '|series2=[[series2]]|airdate2=' .. expandTemplate("Start date", {"1999", "3", "4"}), ''},
{'series1=[[series1]]|airdate1=' .. expandTemplate("Start date", {"1999", "3", "4"}) .. '|series2=[[series2]]|airdate2=' .. expandTemplate("Start date", {"1999", "3", "4"})
.. '|series3=[[series3]]|airdate3=' .. expandTemplate("Start date", {"1999", "3", "4"}), ''},
{'series1=[[series1]]|airdate1=' .. expandTemplate("Start date", {"1999", "3", "4"}) .. '|series2=[[series2]]|airdate2=' .. expandTemplate("Start date", {"1999", "3", "4"})
.. '|series3=[[series3]]|airdate3=' .. expandTemplate("Start date", {"1999", "3", "4"}) .. '|series4=[[series4]]|airdate4=' .. expandTemplate("Start date", {"1999", "3", "4"}), ''},
{'series1=[[series1]]|airdate1=' .. expandTemplate("Start date", {"1999", "3", "4"}) .. '|series2=[[series2]]|airdate2=' .. expandTemplate("Start date", {"1999", "3", "4"})
.. '|series3=[[series3]]|airdate3=' .. expandTemplate("Start date", {"1999", "3", "4"}) .. '|series4=[[series4]]|airdate4=' .. expandTemplate("Start date", {"1999", "3", "4"})
.. '|series5=[[series5]]|airdate5=' .. expandTemplate("Start date", {"1999", "3", "4"}), ''},
{'airdate_overall=4/3/1999', '[[Category:Pages using infobox television episode with nonstandard dates]]'},
{'series1=[[series1]]|airdate1=4/3/1999', '[[Category:Pages using infobox television episode with nonstandard dates]]'},
{'series1=[[series1]]|airdate1=' .. expandTemplate("Start date", {"1999", "3", "4"}) .. '|series2=[[series2]]|airdate2=4/3/1999',
'[[Category:Pages using infobox television episode with nonstandard dates]]'},
{'series1=[[series1]]|airdate1=' .. expandTemplate("Start date", {"1999", "3", "4"}) .. '|series2=[[series2]]|airdate2=' .. expandTemplate("Start date", {"1999", "3", "4"})
.. '|series3=[[series3]]|airdate3=4/3/1999', '[[Category:Pages using infobox television episode with nonstandard dates]]'},
{'series1=[[series1]]|airdate1=' .. expandTemplate("Start date", {"1999", "3", "4"}) .. '|series2=[[series2]]|airdate2=' .. expandTemplate("Start date", {"1999", "3", "4"})
.. '|series3=[[series3]]|airdate3=' .. expandTemplate("Start date", {"1999", "3", "4"}) .. '|series4=[[series4]]|airdate4=4/3/1999',
'[[Category:Pages using infobox television episode with nonstandard dates]]'},
{'series1=[[series1]]|airdate1=' .. expandTemplate("Start date", {"1999", "3", "4"}) .. '|series2=[[series2]]|airdate2=' .. expandTemplate("Start date", {"1999", "3", "4"})
.. '|series3=[[series3]]|airdate3=' .. expandTemplate("Start date", {"1999", "3", "4"}) .. '|series4=[[series4]]|airdate4=' .. expandTemplate("Start date", {"1999", "3", "4"})
.. '|series5=[[series5]]|airdate5=4/3/1999', '[[Category:Pages using infobox television episode with nonstandard dates]]'},
}, {nowiki=1})
end
function p:test_23_validate_values_crossover_links_only()
self:preprocess_equals_sandbox_many('{{#invoke:Infobox television episode', 'validate_values_crossover', {
{'series1=[[Lost]]', ''},
{'series1=[[Lost]]|prev1=[[? (Lost)]]', ''},
{'series1=[[Lost]]|next1=[[? (Lost)]]', ''},
{'series1=[[Lost]]|series2=Lost', '[[Category:Pages using infobox television episode with unlinked values|series]]'},
{'series1=[[Lost]]|prev1=? (Lost)', '[[Category:Pages using infobox television episode with unlinked values|prev]]'},
{'series1=[[Lost]]|next1=? (Lost)', '[[Category:Pages using infobox television episode with unlinked values|next]]'},
{"series1=''[[Lost]]''", '[[Category:Pages using infobox television episode with incorrectly formatted values|series]]'},
{"series1=[[Lost]]|prev1=''[[? (Lost)]]''", '[[Category:Pages using infobox television episode with incorrectly formatted values|prev]]'},
{"series1=[[Lost]]|next1=''[[? (Lost)]]''", '[[Category:Pages using infobox television episode with incorrectly formatted values|next]]'},
{'series1=[[Lost]]|series2=Lost', '[[Category:Pages using infobox television episode with unlinked values|series]]'},
{'series1=[[Lost]]|prev1=[[? (Lost)]]|series2=[[Lost]]|prev2=? (Lost)', '[[Category:Pages using infobox television episode with unlinked values|prev]]'},
{'series1=[[Lost]]|next1=[[? (Lost)]]|series2=[[Lost]]|next2=? (Lost)', '[[Category:Pages using infobox television episode with unlinked values|next]]'},
{"series1=[[Lost]]|series2=''[[Lost]]''", '[[Category:Pages using infobox television episode with incorrectly formatted values|series]]'},
{"series1=[[Lost]]|prev1=[[? (Lost)]]|series2=[[Lost]]|prev2=''[[? (Lost)]]''", '[[Category:Pages using infobox television episode with incorrectly formatted values|prev]]'},
{"series1=[[Lost]]|next1=[[? (Lost)]]|series2=[[Lost]]|next2=''[[? (Lost)]]''", '[[Category:Pages using infobox television episode with incorrectly formatted values|next]]'},
}, {nowiki=1})
end
function p:test_24_validate_values_crossover_using_overall()
self:preprocess_equals_sandbox_many('{{#invoke:Infobox television episode', 'validate_values_crossover', {
{'series1=[[Lost]]|episode_no1=1', ''},
{'series1=[[Lost]]|season1=1', ''},
{'series1=[[Lost]]|episode_no1=1 (1 overall)', '[[Category:Pages using infobox television episode with incorrectly formatted values|episode]]'},
{'series1=[[Lost]]|season1=1 (1 overall)', '[[Category:Pages using infobox television episode with incorrectly formatted values|season]]'},
}, {nowiki=1})
end
function p:test_25_validate_values_crossover_linked_or_formatted()
self:preprocess_equals_sandbox_many('{{#invoke:Infobox television episode', 'validate_values_crossover', {
{'series1=[[Lost]]|episode_no1=1', ''},
{'series1=[[Lost]]|season1=1', ''},
{'series1=[[Lost]]|episode_list1=List of Lost episodes', ''},
{'series1=[[Lost]]|episode_no1=[[1]]', '[[Category:Pages using infobox television episode with incorrectly formatted values|episode]]'},
{'series1=[[Lost]]|season1=[[1]]', '[[Category:Pages using infobox television episode with incorrectly formatted values|season]]'},
{'series1=[[Lost]]|episode_list1=[[List of Lost episodes]]', '[[Category:Pages using infobox television episode with incorrectly formatted values|episode_list]]'},
{"series1=[[Lost]]|episode_no1=''1''", '[[Category:Pages using infobox television episode with incorrectly formatted values|episode]]'},
{"series1=[[Lost]]|season1=''1''", '[[Category:Pages using infobox television episode with incorrectly formatted values|season]]'},
{"series1=[[Lost]]|episode_list1=List of ''Lost'' episodes]]", '[[Category:Pages using infobox television episode with incorrectly formatted values|episode_list]][[Category:Pages using infobox television episode with incorrectly formatted values|episode_list]]'},
}, {nowiki=1})
end
return p