Module:Infobox television/testcases

-- Unit tests for Module:Infobox television. Click talk page to run tests. local p = require('Module:UnitTests')

local categories = { alt_name = "", dates_incorrectly_formatted = "", dates_missing = "", flag_icon = "", image_values_without_an_image = "", incorrectly_formatted = "", manual_display_title = "", manual_display_title_temp_tracking = "", non_matching_title = "", unnecessary_title_parameter = "", unlinked_values = "", }

local function expandTemplate(template, value) local frame = mw.getCurrentFrame return frame:expandTemplate{title = template, args = value} end

local function getCategory(category, parameter) return string.format(category, parameter) end

function p:test_01_is_infobox_title_equal_to_article_title self:preprocess_equals_sandbox_many('{{#invoke:Infobox television', 'validate_values|all_tests=no', {		{'page_title_test=Long article title|name=' .. expandTemplate("Nowrap", {"Long article title"}), },		{'page_title_test=Long article title|name=Long article title', },		{'page_title_test=Long article title|name=Long article title', },		{'page_title_test=Long article title|name=Long article title', },		{'page_title_test=Long article title|name=Long article title', },		{'page_title_test=Long article title|name=Long article title', },		{'page_title_test=Long article title (dab)|name=' .. expandTemplate("Nowrap", {"Long article title"}), },		{'page_title_test=Long article title (dab)|name=Long article title', },		{'page_title_test=Title (not dab)|name=' .. expandTemplate("Nowrap", {"Title (not dab)"}), },		{'page_title_test=Title (not dab)|name=Title (not dab)', },				{'page_title_test=Test|name=Test', categories.unnecessary_title_parameter}, {'page_title_test=Test (not dab)|name=Test (not dab)', categories.unnecessary_title_parameter}, {'page_title_test=Test (dab)|name=Test', categories.unnecessary_title_parameter}, {'page_title_test=Test|name=test', categories.non_matching_title}, {'page_title_test=Long article title|name=' .. expandTemplate("Nowrap", {"Long article Title"}), categories.non_matching_title}, {'page_title_test=Long article title|name=Long article Title', categories.non_matching_title}, }, {nowiki=1}) end

function p:test_02_has_display_title self:preprocess_equals_sandbox_many('{{#invoke:Infobox television', 'validate_values|all_tests=no', {		{, },		{'page_test=Module:Infobox television/italic test6', categories.manual_display_title}, -- {{Italic title}}		{'page_test=Module:Infobox television/italic test1', categories.manual_display_title}, -- {{Italic}}		{'page_test=Module:Infobox television/italic test2', categories.manual_display_title}, -- {{Italics}}		{'page_test=Module:Infobox television/italic test3', categories.manual_display_title}, -- {{Italictitle}}		{'page_test=Module:Infobox television/italic test4', categories.manual_display_title}, -- {{Italics title}}		{'page_test=Module:Infobox television/italic test5', categories.manual_display_title_temp_tracking}, -- {{DISPLAYTITLE}}	}, {nowiki=1}) end

function p:test_03_are_image_auxiliary_values_used_for_no_image self:preprocess_equals_sandbox_many('{{#invoke:Infobox television', 'validate_values|all_tests=no', {		{'image=test|image_size=1', ''},		{'image_size=1', categories.image_values_without_an_image},		{'image_upright=1', categories.image_values_without_an_image},		{'image_alt=test', categories.image_values_without_an_image},		{'alt=test', categories.image_values_without_an_image},		{'caption=test', categories.image_values_without_an_image},	}, {nowiki=1}) end

function p:test_04_is_image_using_incorrect_syntax self:preprocess_equals_sandbox_many('{{#invoke:Infobox television', 'validate_values|all_tests=no', {		{'image=image.jpg', ''},		{'image=File:image.jpg', getCategory(categories.incorrectly_formatted, 'image')},		{'image=', getCategory(categories.incorrectly_formatted, 'image')},		{'image=Image:image.jpg', getCategory(categories.incorrectly_formatted, 'image')},		{'image=', getCategory(categories.incorrectly_formatted, 'image')},	}, {nowiki=1}) end

function p:test_05_is_image_size_using_px self:preprocess_equals_sandbox_many('{{#invoke:Infobox television', 'validate_values|all_tests=no', {		{'image=test|image_size=100', ''},		{'image=test|image_size=100px', getCategory(categories.incorrectly_formatted, 'image_size')},	}, {nowiki=1}) end

function p:test_06_is_image_size_using_px self:preprocess_equals_sandbox_many('{{#invoke:Infobox television', 'validate_values|all_tests=no', {		{'image=test|image_size=100', ''},		{'image=test|image_size=100px', getCategory(categories.incorrectly_formatted, 'image_size')},	}, {nowiki=1}) end

-- function p:test_07_is_alt_name_in_italics -- 	self:preprocess_equals_sandbox_many('{{#invoke:Infobox television', 'validate_values|all_tests=no', { -- 		{'alt_name=Another name', }, -- 		{"alt_name=another name''", getCategory(categories.incorrectly_formatted, 'alt_name')},

-- 		-- Single word name -- 		{'alt_name=' .. expandTemplate("Plainlist", {"* First alt name\n* Second alt name\n* Third alt name"}), ''}, -- 		{'alt_name=' .. expandTemplate("Plainlist", {"* First alt name\n* Second alt name\n* Third alt name"}), getCategory(categories.incorrectly_formatted, 'alt_name')}, -- 		{'alt_name=' .. expandTemplate("Plainlist", {"* First alt name\n* Second alt name *\nThird alt name"}), getCategory(categories.incorrectly_formatted, 'alt_name')}, -- 		{'alt_name=' .. expandTemplate("Unbulleted list", {"First alt name", "Second alt name", "Third alt name"}), ''}, -- 		{'alt_name=' .. expandTemplate("Unbulleted list", {"First alt name", "Second alt name", "Third alt name"}), getCategory(categories.incorrectly_formatted, 'alt_name')}, -- 		{"alt_name=First alt name Second alt name Third alt name", ''}, -- 		{"alt_name=First alt name Second alt name Third alt name", getCategory(categories.incorrectly_formatted, 'alt_name')}, -- 		{"alt_name=First alt name Second alt name Third alt name", getCategory(categories.incorrectly_formatted, 'alt_name')}, -- 		{"alt_name=First alt name Second alt name Third alt name", getCategory(categories.incorrectly_formatted, 'alt_name')}, -- 		-- Multi-word names -- 		{'alt_name=' .. expandTemplate("Plainlist", {"* alt1\n* alt2\n* alt3"}), ''}, -- 		{'alt_name=' .. expandTemplate("Plainlist", {"* alt1\n* alt2\n* alt3"}), getCategory(categories.incorrectly_formatted, 'alt_name')}, -- 		{'alt_name=' .. expandTemplate("Plainlist", {"* alt1\n* alt2 *\nalt3"}), getCategory(categories.incorrectly_formatted, 'alt_name')}, -- 		{'alt_name=' .. expandTemplate("Unbulleted list", {"alt1", "alt2", "alt3"}), ''}, -- 		{'alt_name=' .. expandTemplate("Unbulleted list", {"alt1", "alt2", "alt3"}), getCategory(categories.incorrectly_formatted, 'alt_name')}, -- 		{"alt_name=alt1 alt2 alt3", ''}, -- 		{"alt_name=alt1 alt2 alt3", getCategory(categories.incorrectly_formatted, 'alt_name')}, -- 		{"alt_name=alt1 alt2 alt3", getCategory(categories.incorrectly_formatted, 'alt_name')}, -- 		{"alt_name=alt1 alt2 alt3", getCategory(categories.incorrectly_formatted, 'alt_name')}, -- 	}, {nowiki=1}) -- end

function p:test_08_has_flag_icon self:preprocess_equals_sandbox_many('{{#invoke:Infobox television', 'validate_values|all_tests=no', {		{'director=' .. expandTemplate("USA", {}) .. 'test', categories.flag_icon},	}, {nowiki=1}) end

function p:test_09_is_country_name_valid self:preprocess_equals_sandbox_many('{{#invoke:Infobox television', 'validate_values|all_tests=no', {		{'country=United States', },		{'country=' .. expandTemplate("Plainlist", {'*France\n*United States'}), },		{'country=U.S.A.', getCategory(categories.incorrectly_formatted, 'country')},		{'country=U.S.A', getCategory(categories.incorrectly_formatted, 'country')},		{'country=U.S.', getCategory(categories.incorrectly_formatted, 'country')},		{'country=U.S', getCategory(categories.incorrectly_formatted, 'country')},		{'country=USA', getCategory(categories.incorrectly_formatted, 'country')},		{'country=US', getCategory(categories.incorrectly_formatted, 'country')},		{'country=UK', getCategory(categories.incorrectly_formatted, 'country')},		{'country=U.K.', getCategory(categories.incorrectly_formatted, 'country')},		{'country=' .. expandTemplate("Plainlist", {'*France\n*USA'}), getCategory(categories.incorrectly_formatted, 'country')}, }, {nowiki=1}) end

function p:test_10_are_values_linked_or_formatted self:preprocess_equals_sandbox_many('{{#invoke:Infobox television', 'validate_values|all_tests=no', {		{'language=English', ''},		{'language=English', getCategory(categories.incorrectly_formatted, 'language')},	}, {nowiki=1}) end

function p:test_11_is_credit_used_correctly self:preprocess_equals_sandbox_many('{{#invoke:Infobox television', 'validate_values|all_tests=no', {		{'producer=John Doe', },		{'producer=John Doe', },		{'producer=John Doe John Doe', },		{'producer=Muiris Mac Conghail', },		{'producer=Caroline Jane Doe', },		{'producer=Sabrina Plisco-Morris', },		{'producer=John Doe \'\'\'executive\'\'\' Jane Doe', getCategory(categories.incorrectly_formatted, 'producer')},		{'producer=John Doe \'\'\'associate\'\'\' Jane Doe', getCategory(categories.incorrectly_formatted, 'producer')},		{'producer=John Doe \'\'\'co-producer\'\'\' Jane Doe', getCategory(categories.incorrectly_formatted, 'producer')},		{'producer=John Doe \'\'\'line producer\'\'\' Jane Doe', getCategory(categories.incorrectly_formatted, 'producer')},		{'producer=John Doe \'\'\'supervising producer\'\'\' Jane Doe', getCategory(categories.incorrectly_formatted, 'producer')}, {'producer=John Doe \'\'\'Executive\'\'\' Jane Doe', getCategory(categories.incorrectly_formatted, 'producer')}, {'producer=John Doe \'\'\'Associate\'\'\' Jane Doe', getCategory(categories.incorrectly_formatted, 'producer')}, {'producer=John Doe \'\'\'Co-producer\'\'\' Jane Doe', getCategory(categories.incorrectly_formatted, 'producer')}, {'producer=John Doe \'\'\'Line producer\'\'\' Jane Doe', getCategory(categories.incorrectly_formatted, 'producer')}, {'producer=John Doe \'\'\'Supervising producer\'\'\' Jane Doe', getCategory(categories.incorrectly_formatted, 'producer')}, {'executive_producer=John Doe', ''}, {'executive_producer=John Doe \'\'\'executive\'\'\' Jane Doe', getCategory(categories.incorrectly_formatted, 'executive_producer')}, {'executive_producer=John Doe \'\'\'associate\'\'\' Jane Doe', getCategory(categories.incorrectly_formatted, 'executive_producer')}, {'executive_producer=John Doe \'\'\'co-producer\'\'\' Jane Doe', getCategory(categories.incorrectly_formatted, 'executive_producer')}, {'executive_producer=John Doe \'\'\'line producer\'\'\' Jane Doe', getCategory(categories.incorrectly_formatted, 'executive_producer')}, {'executive_producer=John Doe \'\'\'supervising producer\'\'\' Jane Doe', getCategory(categories.incorrectly_formatted, 'executive_producer')}, {'executive_producer=John Doe \'\'\'Executive\'\'\' Jane Doe', getCategory(categories.incorrectly_formatted, 'executive_producer')}, {'executive_producer=John Doe \'\'\'Associate\'\'\' Jane Doe', getCategory(categories.incorrectly_formatted, 'executive_producer')}, {'executive_producer=John Doe \'\'\'Co-producer\'\'\' Jane Doe', getCategory(categories.incorrectly_formatted, 'executive_producer')}, {'executive_producer=John Doe \'\'\'Line producer\'\'\' Jane Doe', getCategory(categories.incorrectly_formatted, 'executive_producer')}, {'executive_producer=John Doe \'\'\'Supervising producer\'\'\' Jane Doe', getCategory(categories.incorrectly_formatted, 'executive_producer')}, {'executive_producer=John Doe \'\'\'prod.\'\'\' Jane Doe', getCategory(categories.incorrectly_formatted, 'executive_producer')}, {'editor=John Doe', ''}, {'editor=John Doe \'\'\'on-line\'\'\' Jane Doe', getCategory(categories.incorrectly_formatted, 'editor')}, {'editor=John Doe \'\'\'Assistant\'\'\' Jane Doe', getCategory(categories.incorrectly_formatted, 'editor')}, {'screenplay=John Doe', ''}, {'story=John Doe', ''}, {'screenplay=John Doe', ''}, {'teleplay=John Doe', ''}, {'writer=John Doe (screenplay)', getCategory(categories.incorrectly_formatted, 'writer')}, {'writer=John Doe (story)', getCategory(categories.incorrectly_formatted, 'writer')}, {'writer=John Doe (teleplay)', getCategory(categories.incorrectly_formatted, 'writer')}, {'story=John Doe1 John Doe2 (story)', getCategory(categories.incorrectly_formatted, 'story')}, {'screenplay=John Doe1 John Doe2 (story)', getCategory(categories.incorrectly_formatted, 'screenplay')}, {'teleplay=John Doe1 John Doe2 (story)', getCategory(categories.incorrectly_formatted, 'teleplay')}, }, {nowiki=1}) end

local function get_date(version) if version == "start" then return expandTemplate("Start date", {"1999", "3", "4"}) elseif version == "future" then return expandTemplate("Start date", {"3000", "3", "4"}) elseif version == "no day" then return expandTemplate("Start date", {"1999", "3"}) elseif version == "no month" then return expandTemplate("Start date", {"1999"}) else return expandTemplate("End date", {"1999", "3", "4"}) end end

function p:test_12_does_num_episodes_have_extraneous_text self:preprocess_equals_sandbox_many('{{#invoke:Infobox television', 'validate_values|all_tests=no', {		{'num_episodes=', },		{'num_episodes=5', },		{'num_episodes=Text', ''},		{'num_episodes=5 As of 2022', getCategory(categories.incorrectly_formatted, 'num_episodes')},		{'num_episodes=5' .. get_date("start"), getCategory(categories.incorrectly_formatted, 'num_episodes')},	}, {nowiki=1}) end

function p:test_13_are_dates_formatted_correctly self:preprocess_equals_sandbox_many('{{#invoke:Infobox television', 'validate_values', {		{, }, -- should pass		{'first_aired=' .. get_date("start") .. '|last_aired=' .. get_date("end"), },		{'first_aired=' .. get_date("start") .. '|last_aired=present', },		{'released=' .. get_date("start"), },		{'first_aired2=' .. get_date("start") .. '|last_aired2=present', },		{'released2=' .. get_date("start"), },		{'first_aired3=' .. get_date("start") .. '|last_aired3=present', },		{'released3=' .. get_date("start"), },		{'first_aired4=' .. get_date("start") .. '|last_aired4=present', },		{'released4=' .. get_date("start"), },		{'first_aired5=' .. get_date("start") .. '|last_aired5=present', },		{'released5=' .. get_date("start"), },		{'first_aired=Upcoming', },		{'released=Upcoming', },		{'first_aired=' .. get_date("no day") .. '|last_aired=present', },		{'first_aired=' .. get_date("no month") .. '|last_aired=present', ''}, {'first_aired=' .. get_date("start"), categories.dates_missing}, {'last_aired=' .. get_date("end"), categories.dates_missing}, {'last_aired=present', categories.dates_missing}, {'first_aired=upcoming', categories.dates_incorrectly_formatted}, {'first_aired=bad data', categories.dates_incorrectly_formatted}, {'first_aired=' .. expandTemplate("Start date and age", {"1999", "3", "4"}) .. '|last_aired=present', categories.dates_incorrectly_formatted}, {'first_aired=' .. get_date("start") .. '|last_aired=' .. expandTemplate("Start and end dates", {"1939", "9", "1", "1945", "9", "2"}), categories.dates_incorrectly_formatted}, {'first_aired=' .. expandTemplate("Film date", {"1999", "3", "4"}) .. '|last_aired=present', categories.dates_incorrectly_formatted}, {'first_aired=' .. get_date("start") .. '|last_aired=' ..expandTemplate("Film date", {"1999", "3", "4"}), categories.dates_incorrectly_formatted}, {'first_aired=4/3/1999', categories.dates_incorrectly_formatted}, {'first_aired=4/3/1999|last_aired=present', categories.dates_incorrectly_formatted}, {'first_aired=March 4, 1999|last_aired=present', categories.dates_incorrectly_formatted}, {'released=4/3/1999', categories.dates_incorrectly_formatted}, {'released=March 4, 1999', categories.dates_incorrectly_formatted}, {'first_aired=' .. get_date("start") .. '|last_aired=March 4, 1999', categories.dates_incorrectly_formatted}, {'first_aired=' .. get_date("start") .. '|last_aired=Present', categories.dates_incorrectly_formatted}, {'first_aired=' .. get_date("start") .. '|last_aired=' .. get_date("start"), categories.dates_incorrectly_formatted}, {'first_aired2=' .. get_date("start"), categories.dates_missing}, {'released2=March 4, 1999', categories.dates_incorrectly_formatted}, {'first_aired3=' .. get_date("start"), categories.dates_missing}, {'released3=March 4, 1999', categories.dates_incorrectly_formatted}, {'first_aired4=' .. get_date("start"), categories.dates_missing}, {'released4=March 4, 1999', categories.dates_incorrectly_formatted}, {'first_aired5=' .. get_date("start"), categories.dates_missing}, {'released5=March 4, 1999', categories.dates_incorrectly_formatted}, {'first_aired=' .. get_date("start") .. get_date("start") .. '|last_aired=' .. get_date("end"), categories.dates_incorrectly_formatted}, {'first_aired=' .. get_date("start") .. '|last_aired=' .. get_date("end").. get_date("end"), categories.dates_incorrectly_formatted}, {'first_aired=' .. get_date("future") .. '|last_aired=present', categories.dates_incorrectly_formatted}, -- start date in the future {'first_aired=March 4, 1999' .. get_date("start") .. 'March 4, 1999' .. '|last_aired=' .. get_date("end"), categories.dates_incorrectly_formatted}, --TODO: currently does not work {'first_aired=' .. get_date("start") .. '|last_aired=' .. get_date("end") .. 'March 4, 1999', categories.dates_incorrectly_formatted}, --TODO: currently does not work }, {nowiki=1}) end

function p:test_14_does_release_information_have_extraneous_text self:preprocess_equals_sandbox_many('{{#invoke:Infobox television', 'validate_values|all_tests=no', {		{'network=Aboriginal Peoples Television Network', ''},

{'first_aired=Original series ' .. get_date("start") .. '|last_aired=present', getCategory(categories.incorrectly_formatted, 'first_aired')}, -- find 'original' {'first_aired=Revival series ' .. get_date("start") .. '|last_aired=present', getCategory(categories.incorrectly_formatted, 'first_aired')}, -- find 'revival' {'first_aired=' .. get_date("start") .. '|last_aired=Original series ' .. get_date("end"), getCategory(categories.incorrectly_formatted, 'last_aired')}, -- find 'original' {'first_aired=' .. get_date("start") .. '|last_aired=Revival series ' .. get_date("end"), getCategory(categories.incorrectly_formatted, 'last_aired')}, -- find 'revival' {'released=Original series ' .. get_date("start"), getCategory(categories.incorrectly_formatted, 'released')}, -- find 'original' {'released=Revival series ' .. get_date("start"), getCategory(categories.incorrectly_formatted, 'released')}, -- find 'revival' {'released=original series ' .. get_date("start"), getCategory(categories.incorrectly_formatted, 'released')}, -- find 'original' {'released=revival series ' .. get_date("start"), getCategory(categories.incorrectly_formatted, 'released')}, -- find 'revival' {'first_aired2=' .. get_date("start") .. 'Original series|last_aired2=present', getCategory(categories.incorrectly_formatted, 'first_aired2')}, -- find 'original' {'first_aired2=' .. get_date("start") .. '|last_aired2=Original series ' .. get_date("end"), getCategory(categories.incorrectly_formatted, 'last_aired2')}, -- find 'original' {'released2=' .. get_date("start") .. 'Original series', getCategory(categories.incorrectly_formatted, 'released2')}, -- find 'original' {'channel2=Original series NBC', getCategory(categories.incorrectly_formatted, 'channel2')}, -- find 'original' {'network2=Original series NBC', getCategory(categories.incorrectly_formatted, 'network2')}, -- find 'original'

{'first_aired3=' .. get_date("start") .. 'Original series|last_aired3=present', getCategory(categories.incorrectly_formatted, 'first_aired3')}, -- find 'original' {'first_aired3=' .. get_date("start") .. '|last_aired3=Original series ' .. get_date("end"), getCategory(categories.incorrectly_formatted, 'last_aired3')}, -- find 'original' {'released3=' .. get_date("start") .. 'Original series', getCategory(categories.incorrectly_formatted, 'released3')}, -- find 'original' {'channel3=Original series NBC', getCategory(categories.incorrectly_formatted, 'channel3')}, -- find 'original' {'network3=Original series NBC', getCategory(categories.incorrectly_formatted, 'network3')}, -- find 'original'

{'first_aired4=' .. get_date("start") .. 'Original series|last_aired4=present', getCategory(categories.incorrectly_formatted, 'first_aired4')}, -- find 'original' {'first_aired4=' .. get_date("start") .. '|last_aired4=Original series ' .. get_date("end"), getCategory(categories.incorrectly_formatted, 'last_aired4')}, -- find 'original' {'released4=' .. get_date("start") .. 'Original series', getCategory(categories.incorrectly_formatted, 'released4')}, -- find 'original' {'channel4=Original series NBC', getCategory(categories.incorrectly_formatted, 'channel4')}, -- find 'original' {'network4=Original series NBC', getCategory(categories.incorrectly_formatted, 'network4')}, -- find 'original'

{'first_aired5=' .. get_date("start") .. 'Original series|last_aired5=present', getCategory(categories.incorrectly_formatted, 'first_aired5')}, -- find 'original' {'first_aired5=' .. get_date("start") .. '|last_aired5=Original series ' .. get_date("end"), getCategory(categories.incorrectly_formatted, 'last_aired5')}, -- find 'original' {'released5=' .. get_date("start") .. 'Original series', getCategory(categories.incorrectly_formatted, 'released5')}, -- find 'original' {'channel5=Original series NBC', getCategory(categories.incorrectly_formatted, 'channel5')}, -- find 'original' {'network5=Original series NBC', getCategory(categories.incorrectly_formatted, 'network5')}, -- find 'original'

{'first_aired6=' .. get_date("start") .. 'Original series|last_aired6=present', getCategory(categories.incorrectly_formatted, 'first_aired6')}, -- find 'original' {'first_aired6=' .. get_date("start") .. '|last_aired6=Original series ' .. get_date("end"), getCategory(categories.incorrectly_formatted, 'last_aired6')}, -- find 'original' {'released6=' .. get_date("start") .. 'Original series', getCategory(categories.incorrectly_formatted, 'released6')}, -- find 'original' {'channel6=Original series NBC', getCategory(categories.incorrectly_formatted, 'channel6')}, -- find 'original' {'network6=Original series NBC', getCategory(categories.incorrectly_formatted, 'network6')}, -- find 'original'

{'first_aired7=' .. get_date("start") .. 'Original series|last_aired7=present', getCategory(categories.incorrectly_formatted, 'first_aired7')}, -- find 'original' {'first_aired7=' .. get_date("start") .. '|last_aired7=Original series ' .. get_date("end"), getCategory(categories.incorrectly_formatted, 'last_aired7')}, -- find 'original' {'released7=' .. get_date("start") .. 'Original series', getCategory(categories.incorrectly_formatted, 'released7')}, -- find 'original' {'channel7=Original series NBC', getCategory(categories.incorrectly_formatted, 'channel7')}, -- find 'original' {'network7=Original series NBC', getCategory(categories.incorrectly_formatted, 'network7')}, -- find 'original'

{'released=\'\'NBC\'\' ' .. get_date("start"), getCategory(categories.incorrectly_formatted, 'released')}, -- find italics {'first_aired=\'\'NBC\'\' ' .. get_date("start") .. '|last_aired=present', getCategory(categories.incorrectly_formatted, 'first_aired')}, -- find italics {'first_aired=' .. get_date("start") .. '|last_aired=\'\'NBC\'\' ' .. get_date("end"), getCategory(categories.incorrectly_formatted, 'last_aired')}, -- find italics {'channel=\'\'New series\'\' NBC', getCategory(categories.incorrectly_formatted, 'channel')}, -- find italics {'network4=revival NBC', getCategory(categories.incorrectly_formatted, 'network4')}, -- find 'revival' {'channel4=NBC revival', getCategory(categories.incorrectly_formatted, 'channel4')}, -- find 'revival' }, {nowiki=1}) end

function p:test_15_are_values_unlinked self:preprocess_equals_sandbox_many('{{#invoke:Infobox television', 'validate_values|all_tests=no', {		{, },		{'network=NBC', },		{'network2=NBC', },		{'network3=NBC', },		{'network4=NBC', },		{'network5=NBC', },		{'network6=NBC', },		{'network7=NBC', },		{'channel=NBC', },		{'channel2=NBC', },		{'channel3=NBC', },		{'channel4=NBC', },		{'channel5=NBC', },		{'channel6=NBC', },		{'channel7=NBC', },		{'network=NBC', getCategory(categories.unlinked_values, 'network')},		{'network2=NBC', getCategory(categories.unlinked_values, 'network')},		{'network3=NBC', getCategory(categories.unlinked_values, 'network')},		{'network4=NBC', getCategory(categories.unlinked_values, 'network')},		{'network5=NBC', getCategory(categories.unlinked_values, 'network')},		{'network6=NBC', getCategory(categories.unlinked_values, 'network')}, {'network7=NBC', getCategory(categories.unlinked_values, 'network')}, {'channel=NBC', getCategory(categories.unlinked_values, 'channel')}, {'channel2=NBC', getCategory(categories.unlinked_values, 'channel')}, {'channel3=NBC', getCategory(categories.unlinked_values, 'channel')}, {'channel4=NBC', getCategory(categories.unlinked_values, 'channel')}, {'channel5=NBC', getCategory(categories.unlinked_values, 'channel')}, {'channel6=NBC', getCategory(categories.unlinked_values, 'channel')}, {'channel7=NBC', getCategory(categories.unlinked_values, 'channel')}, {'network=NBC ABC', ''}, {'network=NBC ABC', getCategory(categories.unlinked_values, 'network')}, --TODO: currently does not work {'network=NBC ABC', getCategory(categories.unlinked_values, 'network')}, --TODO: currently does not work {'network=ABC NBC', getCategory(categories.unlinked_values, 'network')}, --TODO: currently does not work {'network=' .. expandTemplate("Plainlist", {"* ABC\n* NBC\n"}), ''}, {'network=' .. expandTemplate("Plainlist", {"* ABC\n* NBC\n"}), getCategory(categories.unlinked_values, 'network')}, --TODO: currently does not work {'network=' .. expandTemplate("Plainlist", {"* ABC\n* NBC\n"}), getCategory(categories.unlinked_values, 'network')}, --TODO: currently does not work }, {nowiki=1}) end

function p:test_16_are_network_parameters_duplicated self:preprocess_equals_sandbox_many('{{#invoke:Infobox television', 'validate_values|all_tests=no', {		{, },		{'image=test|image_alt=test|alt=test', getCategory(categories.incorrectly_formatted, "-duplicate")},		{'based_on=test|inspired_by=test', getCategory(categories.incorrectly_formatted, "-duplicate")},		{'screenplay=test|teleplay=test', getCategory(categories.incorrectly_formatted, "-duplicate")},		{'presenter=test|host=test', getCategory(categories.incorrectly_formatted, "-duplicate")},		{'narrator=test|narrated=test', getCategory(categories.incorrectly_formatted, "-duplicate")},		{'narrator=test|announcer=test', getCategory(categories.incorrectly_formatted, "-duplicate")},		{'narrated=test|announcer=test', getCategory(categories.incorrectly_formatted, "-duplicate")},		{'theme_music_composer=test|music=test', getCategory(categories.incorrectly_formatted, "-duplicate")},		{'open_theme=test|opentheme=test', getCategory(categories.incorrectly_formatted, "-duplicate")}, {'end_theme=test|endtheme=test', getCategory(categories.incorrectly_formatted, "-duplicate")}, {'network=NBC', ''}, {'network2=NBC', ''}, {'network3=NBC', ''}, {'network4=NBC', ''}, {'network5=NBC', ''}, {'network6=NBC', ''}, {'network7=NBC', ''}, {'channel=NBC', ''}, {'channel2=NBC', ''}, {'channel3=NBC', ''}, {'channel4=NBC', ''}, {'channel5=NBC', ''}, {'channel6=NBC', ''}, {'channel7=NBC', ''}, {'network=NBC|channel=', ''}, {'network2=NBC|channel=', ''}, {'network3=NBC|channel=', ''}, {'network4=NBC|channel=', ''}, {'network5=NBC|channel=', ''}, {'network6=NBC|channel=', ''}, {'network7=NBC|channel=', ''}, {'network=NBC|channel=NBC', getCategory(categories.incorrectly_formatted, "-duplicate")}, {'network2=NBC|channel2=NBC', getCategory(categories.incorrectly_formatted, "-duplicate")}, {'network3=NBC|channel3=NBC', getCategory(categories.incorrectly_formatted, "-duplicate")}, {'network4=NBC|channel4=NBC', getCategory(categories.incorrectly_formatted, "-duplicate")}, {'network5=NBC|channel5=NBC', getCategory(categories.incorrectly_formatted, "-duplicate")}, {'network6=NBC|channel6=NBC', getCategory(categories.incorrectly_formatted, "-duplicate")}, {'network7=NBC|channel7=NBC', getCategory(categories.incorrectly_formatted, "-duplicate")}, {'network=NBC|channel=CBS', getCategory(categories.incorrectly_formatted, "-duplicate")}, {'first_aired=' .. get_date("start") .. '|released=' .. get_date("start") .. 'last_aired=present', getCategory(categories.incorrectly_formatted, "-duplicate")}, {'released=' .. get_date("start") .. '|last_aired=present', getCategory(categories.incorrectly_formatted, "-duplicate")}, }, {nowiki=1}) end

function p:test_20_is_italic_title_valid_value self:preprocess_equals_sandbox_many('{{#invoke:Infobox television', 'validate_values|all_tests=no', {		{, },		{'italic_title=no', ''},		{'italic_title=n', getCategory(categories.incorrectly_formatted, 'italic_title')},		{'italic_title=y', getCategory(categories.incorrectly_formatted, 'italic_title')},	}, {nowiki=1}) end

function p:test_21_all_errors self:preprocess_equals_sandbox_many('{{#invoke:Infobox television', 'validate_values', {		{'page_title_test=Test|name=Test|page_test=Module:Infobox television/italic test6|image_size=1|series=Lost|director=' .. expandTemplate("USA", {}) .. 'test|first_aired=4/3/1999|italic_title=y',			categories.unnecessary_title_parameter ..			categories.manual_display_title ..			categories.image_values_without_an_image ..			categories.flag_icon ..			categories.dates_incorrectly_formatted ..			getCategory(categories.incorrectly_formatted, 'italic_title')			},	}, {nowiki=1}) end

local function handle_title(text) return "''".. text .. "''" end

function p:test_20_above_title self:preprocess_equals_sandbox_many('{{#invoke:Infobox television', 'above_title', {		{'name=title', handle_title('title')},		{'name=title (dab)', handle_title('title (dab)')},		{'name=#title', handle_title('#title')},		{'page_test=Lost (2004 TV series)', handle_title('Lost')},		{'page_test=I (Almost) Got Away With It|name=I (Almost) Got Away With It', handle_title('I (Almost) Got Away With It')},		{'page_test=I (Almost) Got Away With It', handle_title('I (Almost) Got Away With It')},		{'page_test=How to Live with Your Parents (For the Rest of Your Life)|name=How to Live with Your Parents (For the Rest of Your Life)', handle_title('How to Live with Your Parents (For the Rest of Your Life)')},		{'page_test=How to Live with Your Parents (For the Rest of Your Life)', handle_title('How to Live with Your Parents')},		{'page_test=Hashtag Like|italic_title=no', handle_title('#Like')}, --Correct title {'page_test=Hashtag Like|name=#Like', handle_title('#Like')}, --Correct title {'page_test=Das aktuelle sportstudio|italic_title=no', handle_title('das aktuelle sportstudio')}, --Lowercase title {'page_test=Das aktuelle sportstudio|name=das aktuelle sportstudio', handle_title('das aktuelle sportstudio')}, --Lowercase title {'page_test=News2day|italic_title=no', handle_title('news2day')}, --Displaytitle {'page_test=News2day|name=news2day', handle_title('news2day')}, --Displaytitle {'page_test=H2O (miniseries)|italic_title=no', handle_title('H{{sub|2}}O')}, --Displaytitle with special style {'page_test=H2O (miniseries)|name=H{{sub|2}}O', handle_title('H{{sub|2}}O')}, --Displaytitle with special style {'page_test=Wednesday 9:30 (8:30 Central)|italic_title=no', handle_title('Wednesday 9:30 (8:30 Central)')}, --Itatlic title|all=yes }, {nowiki=1}) end

return p