Module:Infobox television episode/testcases

-- 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
title', ''},

{'page_title_test=Long article title|title=Long article
title', ''},

{'page_title_test=Long article title|title=Long article
title', ''},

{'page_title_test=Long article title|title=Long article
title', ''},

{'page_title_test=Long article title|title=Long article
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
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', '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', '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
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
', '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
', '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 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 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=', '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', 'image'},

{'image=File:image.jpg', 'image'},

{'image=Image:image.jpg', 'image'},

{'image=Image:image.jpg', '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', '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', 'series'},

{'prev=? (Lost)', 'prev'},

{'next=? (Lost)', 'next'},

{"series=Lost", 'series'},

{"series=Lost", 'series'},

{"prev=? (Lost)", 'prev'},

{"next=? (Lost)", '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)', 'episode'},

{'season=1 (1 overall)', 'season'},

{'series_no=1 (1 overall)', '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)", 'series'},

{"prev=prev", 'prev'},

{"next=next", 'next'},

{"episode=1", 'episode'},

{"season=1", 'season'},

{"series_no=1", 'series_no'},

{"episode_list=List of Lost episodes", 'episode_listepisode_list'},

{"producer=Executive producer: John", 'producer'},

}, {nowiki=1})

end

function p:test_08_incorrectly_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', 'episode'},

{'season=1', 'season'},

{'series_no=1', 'series_no'},

{'episode_list=List of Lost episodes', 'episode_list'},

{'season=3', 'season'},

}, {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}}', 'guests'},

-- {'episode=Name', 'episode'},

-- {'episode=' .. expandTemplate("Small", {"Name"}), 'episode'},

-- }, {nowiki=1})

-- end

-- {'director=First name
Second name', 'director'},

-- {'director=First name
Second name', 'director'},

-- {'director=First name
Second name', '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 markupCategory: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', 'italic_title'},

{'italic_title=y', '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
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
Second director', 'Category:Pages using infobox television episode with unnecessary list markup'},

{'director=First director
Second director', 'Category:Pages using infobox television episode with unnecessary list markup'},

{'director=First director
Second director', 'Category:Pages using infobox television episode with unnecessary list markup'},

{'director=First director
Second director', 'Category:Pages using infobox television episode with unnecessary list markup'},

{'director=First director
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"}) .. 'test', 'Category:Pages using infobox television episode with references in the infobox'},

-- {'director=First directortest', 'Category:Pages using infobox television episode with references in the infobox'},

-- {'caption=image captiontest', ''},

-- {'production=1234test', ''},

-- }, {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 parameterCategory:Pages using infobox television episode with image-related values without an imageseriesepisodeCategory:Pages using infobox television with flag iconCategory: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', '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
', '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_dabCategory: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
"Nagged to Ed"', handle_title("The Ed-touchables") .. " and
" .. 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', 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 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|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 episodes'},

{'episode_list=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 episodes'},

{'series=Lost', 'List of episodes'},

{'series=Agents of S.H.I.E.L.D.', 'List of episodes'},

{'series=Agents of S.H.I.E.L.D.', 'List of episodes'},

{'series=Agents of S.H.I.E.L.D.', 'List of episodes'},

{'series=The X-Files', 'List of episodes'},

{'series=The X-Files', 'List of episodes'},

{'series=The X-Files', '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', 'series'},

{'series1=Lost|prev1=? (Lost)', 'prev'},

{'series1=Lost|next1=? (Lost)', 'next'},

{"series1=Lost", 'series'},

{"series1=Lost|prev1=? (Lost)", 'prev'},

{"series1=Lost|next1=? (Lost)", 'next'},

{'series1=Lost|series2=Lost', 'series'},

{'series1=Lost|prev1=? (Lost)|series2=Lost|prev2=? (Lost)', 'prev'},

{'series1=Lost|next1=? (Lost)|series2=Lost|next2=? (Lost)', 'next'},

{"series1=Lost|series2=Lost", 'series'},

{"series1=Lost|prev1=? (Lost)|series2=Lost|prev2=? (Lost)", 'prev'},

{"series1=Lost|next1=? (Lost)|series2=Lost|next2=? (Lost)", '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)', 'episode'},

{'series1=Lost|season1=1 (1 overall)', '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', 'episode'},

{'series1=Lost|season1=1', 'season'},

{'series1=Lost|episode_list1=List of Lost episodes', 'episode_list'},

{"series1=Lost|episode_no1=1", 'episode'},

{"series1=Lost|season1=1", 'season'},

{"series1=Lost|episode_list1=List of Lost episodes]]", 'episode_listepisode_list'},

}, {nowiki=1})

end

return p