Difference between revisions of "Module:Category handler/testcases"

From blackwiki
Jump to navigation Jump to search
blackwiki>Mr. Stradivarius
(add a couple more)
m (10 revisions imported)
 
(6 intermediate revisions by one other user not shown)
Line 1: Line 1:
 
-- Unit tests for [[Module:Category handler]]. Click talk page to run tests.
 
-- Unit tests for [[Module:Category handler]]. Click talk page to run tests.
local p = require('Module:UnitTests')
+
local m_category_handler = require('Module:Category handler/sandbox')
 +
local chmain = m_category_handler._main
 +
local ScribuntoUnit = require('Module:ScribuntoUnit')
 +
local suite = ScribuntoUnit:new()
  
function p:test_template_testcases_page()
+
-- Define table of defaults
    self:preprocess_equals_preprocess_many('{{#invoke:Category handler|main', '}}', '{{category handler', '}}', {
+
local d = {}
        {[[]]},
+
 
        {[[
+
-- Values
| Somecat]]},
+
d.absent = nil
        {[[
+
d.blank = ''
| Somecat
+
d.negation = '¬'
| page = Somearticle]]},
+
d.yes = 'yes'
        {[[
+
d.no = 'no'
| Somecat
+
d.subpageOnly = 'only'
| page = File:Example/test]]},
+
d.subpageNo = 'no'
        {[[
+
 
| Somecat
+
-- Categories
| page = File:Example/test
+
d.category = 'Category:Somecat'
| nocat = ]]},
+
d.category1 = 'Category:Somecat1'
        {[[
+
d.category2 = 'Category:Somecat2'
| Somecat
+
 
| page = File:Example/test
+
-- Pages
| nocat = true]]},
+
d.article = 'Somearticle'
        {[[
+
d.file = 'File:Example.png'
| main = Category:Somecat1 Category:Somecat2
+
d.talk = 'Talk:Foo'
| 1 = Category:Somecat3  <!--For help, user and template space-->
+
d.archive = 'User talk:Example/Archive 5'
| help = 1
+
d.subpage = 'User:Example/test'
| user = 1
+
d.basepage = 'User:Example'
| template = 1
+
 
| talk =    <!--No categories on talk pages-->
+
-- Params
| other = Category:Somecat4  <!--For all other namespaces-->
+
d.archiveParam = 'talk'
| nocat = {{{nocat|}}}  <!--So "nocat=true/false" works-->]]},
+
 
        {[[
+
--------------------------------------------------------------------------------
| main = Category:Somecat1 Category:Somecat2
+
-- Test nil
| 3 = Category:Somecat3  <!--For help, user and template space-->
+
--------------------------------------------------------------------------------
| help = 3
+
 
| user = 3
+
function suite:test_nil()
| template = 3
+
    self:assertEquals(d.absent, chmain{nil})
| talk =    <!--No categories on talk pages-->
+
end
| other = Category:Somecat4  <!--For all other namespaces-->
+
 
| nocat = {{{nocat|}}}  <!--So "nocat=true/false" works-->]]},
+
--------------------------------------------------------------------------------
        {[[
+
-- Test defaults
| main = Category:Somecat1 Category:Somecat2
+
--------------------------------------------------------------------------------
| 3 = Category:Somecat3  <!--For help, user and template space-->
+
 
| help = 3
+
function suite:test_default_current_page()
| user = 3
+
-- Will test either module or module talk space, neither of which are categorised by default.
| template = 3
+
    self:assertEquals(d.absent, chmain{d.category})
| talk =    <!--No categories on talk pages-->
+
end
| other = Category:Somecat4  <!--For all other namespaces-->
+
 
| nocat = {{{nocat|}}}  <!--So "nocat=true/false" works-->
+
function suite:test_default_main()
| page = Somearticle]]},
+
    self:assertEquals(d.category, chmain{d.category, page = d.article})
        {[[
+
end
| other = Somecat]]},
+
 
        {[[
+
function suite:test_default_file()
| other = Somecat
+
    self:assertEquals(d.category, chmain{d.category, page = d.file})
| page = User talk:Example/Archive 5]]},
+
end
        {[[
+
 
| other = Somecat
+
--------------------------------------------------------------------------------
| page = User talk:Example/Archive 5
+
-- Test numbered parameters
| nocat = false]]},
+
--------------------------------------------------------------------------------
        {[[
+
 
| other = Somecat
+
function suite:test_numbered_main()
| categories = no]]},
+
    self:assertEquals(d.category, chmain{
        {[[
+
[1] = d.category,
| other = Somecat
+
main = 1,
| page = User talk:Example/Archive 5
+
page = d.article
| categories = yes]]},
+
})
        {[[
+
end
| other = Somecat
+
 
| category2 = no]]},
+
function suite:test_numbered_two_params()
        {[[
+
    self:assertEquals(d.category2, chmain{
| other = Somecat
+
[1] = d.category1,
| category2 = ]]},
+
[2] = d.category2,
        {[[
+
main = 1,
| other = Somecat
+
file = 2,
| category2 = ¬]]},
+
page = d.file
        {[[
+
})
| other = Somecat
+
end
| category2 = {{{category|¬}}}]]},
+
 
        {[[
+
--------------------------------------------------------------------------------
| other = Somecat
+
-- Test overriding defaults
| page = User talk:Example/Archive 5
+
--------------------------------------------------------------------------------
| category2 = yes]]},
+
 
        {[[
+
function suite:test_numbered_main()
| main = Category:Somecat1
+
    self:assertEquals(d.absent, chmain{
| other = Category:Somecat2
+
main = d.category,
| subpage = no]]},
+
page = d.file
        {[[
+
})
| main = Category:Somecat1
+
end
| other = Category:Somecat2
+
 
| subpage = no
+
--------------------------------------------------------------------------------
| page = User:Example]]},
+
-- Test blank namespace parameters
        {[[
+
--------------------------------------------------------------------------------
| main = Category:Somecat1
+
 
| other = Category:Somecat2
+
function suite:test_blank_namespace_talk()
| subpage = no
+
    self:assertEquals(d.blank, chmain{
| page = User:Example/test]]},
+
talk = d.blank,
        {[[
+
other = d.category,
| main = Category:Somecat1
+
page = d.talk
| other = Category:Somecat2
+
})
| subpage = only]]},
+
end
        {[[
+
 
| main = Category:Somecat1
+
--------------------------------------------------------------------------------
| other = Category:Somecat2
+
-- Test other parameter
| subpage = only
+
--------------------------------------------------------------------------------
| page = User:Example]]},
+
 
        {[[
+
function suite:test_other_only()
| main = Category:Somecat1
+
    self:assertEquals(d.category, chmain{
| other = Category:Somecat2
+
other = d.category,
| subpage = only
+
})
| page = User:Example/test]]},
+
end
        {[[
+
 
| main = Category:Somecat1
+
--------------------------------------------------------------------------------
| other = Category:Somecat2
+
-- Test nocat parameter
| subpage = no
+
--------------------------------------------------------------------------------
| page = User:Example]]},
+
 
        {[[
+
function suite:test_nocat_true()
| main = Category:Somecat1
+
    self:assertEquals(d.absent, chmain{d.category, page = d.file, nocat = true})
| other = Category:Somecat2
+
end
| subpage = no
+
 
| page = User:Example/test]]},
+
function suite:test_nocat_blank()
        {[[
+
    self:assertEquals(d.category, chmain{d.category, page = d.file, nocat = ''})
| main = Category:Somecat1
+
end
| other = Category:Somecat2
+
 
| subpage = only
+
function suite:test_nocat_yes()
| page = User:Example/test]]},
+
    self:assertEquals(d.absent, chmain{d.category, page = d.file, nocat = d.yes})
    })
+
end
 +
 
 +
function suite:test_nocat_false()
 +
    self:assertEquals(d.category, chmain{
 +
[d.archiveParam] = d.category,
 +
page = d.archive,
 +
nocat = false
 +
})
 +
end
 +
 
 +
function suite:test_nocat_no()
 +
    self:assertEquals(d.category, chmain{
 +
[d.archiveParam] = d.category,
 +
page = d.archive,
 +
nocat = d.no
 +
})
 +
end
 +
 
 +
--------------------------------------------------------------------------------
 +
-- Test categories parameter
 +
--------------------------------------------------------------------------------
 +
 
 +
function suite:test_categories_true()
 +
    self:assertEquals(d.category, chmain{
 +
[d.archiveParam] = d.category,
 +
page = d.archive,
 +
categories = true
 +
})
 +
end
 +
 
 +
function suite:test_categories_blank()
 +
    self:assertEquals(d.category, chmain{d.category, page = d.file, categories = ''})
 +
end
 +
 
 +
function suite:test_categories_yes()
 +
    self:assertEquals(d.category, chmain{
 +
[d.archiveParam] = d.category,
 +
page = d.archive,
 +
categories = d.yes
 +
})
 +
end
 +
 
 +
function suite:test_categories_false()
 +
    self:assertEquals(d.absent, chmain{
 +
file = d.category,
 +
page = d.file,
 +
categories = false
 +
})
 +
end
 +
 
 +
function suite:test_categories_no()
 +
    self:assertEquals(d.absent, chmain{
 +
file = d.category,
 +
page = d.file,
 +
categories = d.no
 +
})
 +
end
 +
 
 +
--------------------------------------------------------------------------------
 +
-- Test category2 parameter
 +
--------------------------------------------------------------------------------
 +
 
 +
function suite:test_category2_no()
 +
    self:assertEquals(d.absent, chmain{
 +
other = d.category,
 +
category2 = d.no
 +
})
 +
end
 +
 
 +
function suite:test_category2_blank()
 +
    self:assertEquals(d.absent, chmain{
 +
other = d.category,
 +
category2 = d.blank
 +
})
 +
end
 +
 
 +
function suite:test_category2_negation()
 +
    self:assertEquals(d.category, chmain{
 +
other = d.category,
 +
category2 = d.negation
 +
})
 +
end
 +
 
 +
function suite:test_category2_blacklist()
 +
    self:assertEquals(d.category, chmain{
 +
other = d.category,
 +
page = d.archive,
 +
categories = d.yes
 +
})
 +
end
 +
 
 +
--------------------------------------------------------------------------------
 +
-- Test subpage parameter
 +
--------------------------------------------------------------------------------
 +
 
 +
function suite:test_subpage_no_basepage()
 +
    self:assertEquals(d.category, chmain{
 +
other = d.category,
 +
page = d.basepage,
 +
subpage = d.subpageNo
 +
})
 +
end
 +
 
 +
function suite:test_subpage_no_subpage()
 +
    self:assertEquals(d.absent, chmain{
 +
other = d.category,
 +
page = d.subpage,
 +
subpage = d.subpageNo
 +
})
 +
end
 +
 
 +
function suite:test_subpage_only_basepage()
 +
    self:assertEquals(d.absent, chmain{
 +
other = d.category,
 +
page = d.basepage,
 +
subpage = d.subpageOnly
 +
})
 +
end
 +
 
 +
function suite:test_subpage_only_subpage()
 +
    self:assertEquals(d.category, chmain{
 +
other = d.category,
 +
page = d.subpage,
 +
subpage = d.subpageOnly
 +
})
 +
end
 +
 
 +
--------------------------------------------------------------------------------
 +
-- Test blacklist
 +
--------------------------------------------------------------------------------
 +
 
 +
function suite:test_blacklist_archives()
 +
    self:assertEquals(d.absent, chmain{
 +
other = d.category,
 +
page = 'User talk:Example/Archive 5',
 +
})
 +
end
 +
 
 +
function suite:test_blacklist_archives_lowercase()
 +
    self:assertEquals(d.absent, chmain{
 +
other = d.category,
 +
page = 'User talk:Example/archive 5',
 +
})
 +
end
 +
 
 +
function suite:test_blacklist_archives_notarchive()
 +
    self:assertEquals(d.category, chmain{
 +
other = d.category,
 +
page = 'User talk:Example/Archove 5',
 +
})
 +
end
 +
 
 +
function suite:test_blacklist_archives_incident_archive()
 +
    self:assertEquals(d.category, chmain{
 +
other = d.category,
 +
page = "Wikipedia:Administrators' noticeboard/IncidentArchive 5",
 +
})
 +
end
 +
 
 +
function suite:test_blacklist_main_page()
 +
    self:assertEquals(d.absent, chmain{
 +
other = d.category,
 +
page = 'Main Page',
 +
})
 +
end
 +
 
 +
function suite:test_blacklist_main_page_talk()
 +
    self:assertEquals(d.category, chmain{
 +
other = d.category,
 +
page = 'Talk:Main Page',
 +
})
 +
end
 +
 
 +
function suite:test_blacklist_cascade()
 +
    self:assertEquals(d.absent, chmain{
 +
other = d.category,
 +
page = 'Wikipedia:Cascade-protected items',
 +
})
 +
end
 +
 
 +
function suite:test_blacklist_cascade_slash()
 +
    self:assertEquals(d.absent, chmain{
 +
other = d.category,
 +
page = 'Wikipedia:Cascade-protected items/',
 +
})
 +
end
 +
 
 +
function suite:test_blacklist_cascade_subpage()
 +
    self:assertEquals(d.absent, chmain{
 +
other = d.category,
 +
page = 'Wikipedia:Cascade-protected items/Foo',
 +
})
 +
end
 +
 
 +
function suite:test_blacklist_cascade_not_subpage()
 +
    self:assertEquals(d.category, chmain{
 +
other = d.category,
 +
page = 'Wikipedia:Cascade-protected itemsFoo',
 +
})
 +
end
 +
 
 +
function suite:test_blacklist_cascade_talk()
 +
    self:assertEquals(d.category, chmain{
 +
other = d.category,
 +
page = 'Wikipedia talk:Cascade-protected items',
 +
})
 +
end
 +
 
 +
function suite:test_blacklist_ubx()
 +
    self:assertEquals(d.absent, chmain{
 +
other = d.category,
 +
page = 'User:UBX',
 +
})
 +
end
 +
 
 +
function suite:test_blacklist_ubx_talk()
 +
    self:assertEquals(d.absent, chmain{
 +
other = d.category,
 +
page = 'User talk:UBX',
 +
})
 +
end
 +
 
 +
function suite:test_blacklist_ubx_subpage()
 +
    self:assertEquals(d.absent, chmain{
 +
other = d.category,
 +
page = 'User:UBX/Userboxes',
 +
})
 +
end
 +
 
 +
function suite:test_blacklist_ubx_talk_subpage()
 +
    self:assertEquals(d.absent, chmain{
 +
other = d.category,
 +
page = 'User talk:UBX/Userboxes',
 +
})
 +
end
 +
 
 +
function suite:test_blacklist_template_messages_basepage()
 +
    self:assertEquals(d.category, chmain{
 +
other = d.category,
 +
page = 'Wikipedia:Template messages',
 +
})
 +
end
 +
 
 +
function suite:test_blacklist_template_messages_slash()
 +
    self:assertEquals(d.absent, chmain{
 +
other = d.category,
 +
page = 'Wikipedia:Template messages/',
 +
})
 +
end
 +
 
 +
function suite:test_blacklist_template_messages_not_subpage()
 +
    self:assertEquals(d.category, chmain{
 +
other = d.category,
 +
page = 'Wikipedia:Template messagesFoo',
 +
})
 +
end
 +
 
 +
function suite:test_blacklist_template_messages_subpage()
 +
    self:assertEquals(d.absent, chmain{
 +
other = d.category,
 +
page = 'Wikipedia:Template messages/Cleanup',
 +
})
 +
end
 +
 
 +
--------------------------------------------------------------------------------
 +
-- Test namespace params
 +
--------------------------------------------------------------------------------
 +
 
 +
function suite:test_main()
 +
    self:assertEquals(d.category, chmain{
 +
main = d.category,
 +
page = 'Some article',
 +
})
 +
end
 +
 
 +
function suite:test_talk()
 +
    self:assertEquals(d.category, chmain{
 +
talk = d.category,
 +
page = 'Talk:Some article',
 +
})
 +
end
 +
 
 +
function suite:test_user()
 +
    self:assertEquals(d.category, chmain{
 +
user = d.category,
 +
page = 'User:Example',
 +
})
 +
end
 +
 
 +
function suite:test_user_talk()
 +
    self:assertEquals(d.category, chmain{
 +
talk = d.category,
 +
page = 'User talk:Example',
 +
})
 +
    self:assertEquals(d.absent, chmain{
 +
['user talk'] = d.category,
 +
page = 'User talk:Example',
 +
})
 +
    self:assertEquals(d.absent, chmain{
 +
['user_talk'] = d.category,
 +
page = 'User talk:Example',
 +
})
 +
end
 +
 
 +
function suite:test_wikipedia()
 +
    self:assertEquals(d.category, chmain{
 +
wikipedia = d.category,
 +
page = 'Wikipedia:Example',
 +
})
 +
end
 +
 
 +
function suite:test_wikipedia()
 +
    self:assertEquals(d.category, chmain{
 +
wikipedia = d.category,
 +
page = 'Wikipedia:Example',
 +
})
 +
end
 +
 
 +
function suite:test_project()
 +
    self:assertEquals(d.category, chmain{
 +
project = d.category,
 +
page = 'Wikipedia:Example',
 +
})
 +
end
 +
 
 +
function suite:test_wp()
 +
    self:assertEquals(d.category, chmain{
 +
wp = d.category,
 +
page = 'Wikipedia:Example',
 +
})
 +
end
 +
 
 +
function suite:test_file()
 +
    self:assertEquals(d.category, chmain{
 +
file = d.category,
 +
page = 'File:Example.png',
 +
})
 +
end
 +
 
 +
function suite:test_image()
 +
    self:assertEquals(d.category, chmain{
 +
image = d.category,
 +
page = 'File:Example.png',
 +
})
 +
end
 +
 
 +
function suite:test_mediawiki()
 +
    self:assertEquals(d.category, chmain{
 +
mediawiki = d.category,
 +
page = 'MediaWiki:Protectedpagetext',
 +
})
 +
end
 +
 
 +
function suite:test_template()
 +
    self:assertEquals(d.category, chmain{
 +
template = d.category,
 +
page = 'Template:Example',
 +
})
 +
end
 +
 
 +
function suite:test_help()
 +
    self:assertEquals(d.category, chmain{
 +
help = d.category,
 +
page = 'Help:Editing',
 +
})
 +
end
 +
 
 +
function suite:test_category()
 +
    self:assertEquals(d.category, chmain{
 +
category = d.category,
 +
page = 'Category:Wikipedians',
 +
})
 +
end
 +
 
 +
function suite:test_category()
 +
    self:assertEquals(d.category, chmain{
 +
category = d.category,
 +
page = 'Category:Wikipedians',
 +
})
 +
end
 +
 
 +
function suite:test_portal()
 +
    self:assertEquals(d.category, chmain{
 +
portal = d.category,
 +
page = 'Portal:France',
 +
})
 
end
 
end
  
function p:test_blacklist()
+
function suite:test_book()
     self:preprocess_equals_preprocess_many('{{#invoke:Category handler|main', '}}', '{{category handler', '}}', {
+
     self:assertEquals(d.category, chmain{
        {[[
+
book = d.category,
| main = Category:Somecat1
+
page = 'Book:Example',
| page = Main Page]]},
+
})
        {[[
 
| talk = Category:Somecat1
 
| page = Talk:Main Page]]},
 
        {[[
 
| wikipedia = Category:Somecat1
 
| page = Wikipedia:Cascade-protected items]]},
 
        {[[
 
| wikipedia = Category:Somecat1
 
| page = Wikipedia:Cascade-protected items/]]},
 
        {[[
 
| wikipedia = Category:Somecat1
 
| page = Wikipedia:Cascade-protected items/Foo]]},
 
        {[[
 
| wikipedia = Category:Somecat1
 
| page = Wikipedia:Cascade-protected itemsFoo]]},
 
        {[[
 
| talk = Category:Somecat1
 
| page = Wikipedia talk:Cascade-protected items]]},
 
        {[[
 
| user = Category:Somecat1
 
| page = User:UBX]]},
 
        {[[
 
| user = Category:Somecat1
 
| page = User talk:UBX]]},
 
        {[[
 
| user = Category:Somecat1
 
| page = User:UBX/Sociology]]},
 
        {[[
 
| user = Category:Somecat1
 
| page = User:UBX/Userboxes]]},
 
        {[[
 
| user = Category:Somecat1
 
| page = User talk:UBX/Userboxes]]},
 
        {[[
 
| wikipedia = Category:Somecat1
 
| page = Wikipedia:Template messages]]},
 
        {[[
 
| wikipedia = Category:Somecat1
 
| page = Wikipedia:Template messages/]]},
 
        {[[
 
| wikipedia = Category:Somecat1
 
| page = Wikipedia:Template messagesFoo]]},
 
        {[[
 
| wikipedia = Category:Somecat1
 
| page = Wikipedia:Template messages/Cleanup]]},
 
        {[[
 
| talk = Category:Somecat1
 
| page = Talk:Jerusalem/Archive 2]]},
 
        {[[
 
| talk = Category:Somecat1
 
| page = Talk:Jerusalem/archive 2]]},
 
        {[[
 
| talk = Category:Somecat1
 
| page = Talk:Jerusalem]]},
 
    })
 
 
end
 
end
return p
+
 
 +
function suite:test_draft()
 +
    self:assertEquals(d.category, chmain{
 +
draft = d.category,
 +
page = 'Draft:Example',
 +
})
 +
end
 +
 
 +
function suite:test_education_program()
 +
    self:assertEquals(d.category, chmain{
 +
['education program'] = d.category,
 +
page = 'Education Program:Example',
 +
})
 +
end
 +
 
 +
function suite:test_timedtext()
 +
    self:assertEquals(d.category, chmain{
 +
timedtext = d.category,
 +
page = 'TimedText:Example',
 +
})
 +
end
 +
 
 +
function suite:test_module()
 +
    self:assertEquals(d.category, chmain{
 +
module = d.category,
 +
page = 'Module:Sandbox',
 +
})
 +
end
 +
 
 +
function suite:test_special()
 +
    self:assertEquals(d.category, chmain{
 +
special = d.category,
 +
page = 'Special:WhatLinksHere',
 +
})
 +
end
 +
 
 +
function suite:test_media()
 +
    self:assertEquals(d.category, chmain{
 +
media = d.category,
 +
page = 'Media:Example.png',
 +
})
 +
end
 +
 
 +
return suite

Latest revision as of 13:31, 26 September 2020

Documentation for this module may be created at Module:Category handler/testcases/doc

-- Unit tests for [[Module:Category handler]]. Click talk page to run tests.
local m_category_handler = require('Module:Category handler/sandbox')
local chmain = m_category_handler._main
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()

-- Define table of defaults
local d = {}

-- Values
d.absent = nil
d.blank = ''
d.negation = '¬'
d.yes = 'yes'
d.no = 'no'
d.subpageOnly = 'only'
d.subpageNo = 'no'

-- Categories
d.category = 'Category:Somecat'
d.category1 = 'Category:Somecat1'
d.category2 = 'Category:Somecat2'

-- Pages
d.article = 'Somearticle'
d.file = 'File:Example.png'
d.talk = 'Talk:Foo'
d.archive = 'User talk:Example/Archive 5'
d.subpage = 'User:Example/test'
d.basepage = 'User:Example'

-- Params
d.archiveParam = 'talk'

--------------------------------------------------------------------------------
-- Test nil
--------------------------------------------------------------------------------

function suite:test_nil()
    self:assertEquals(d.absent, chmain{nil})
end

--------------------------------------------------------------------------------
-- Test defaults
--------------------------------------------------------------------------------

function suite:test_default_current_page()
	-- Will test either module or module talk space, neither of which are categorised by default.
    self:assertEquals(d.absent, chmain{d.category})
end

function suite:test_default_main()
    self:assertEquals(d.category, chmain{d.category, page = d.article})
end

function suite:test_default_file()
    self:assertEquals(d.category, chmain{d.category, page = d.file})
end

--------------------------------------------------------------------------------
-- Test numbered parameters
--------------------------------------------------------------------------------

function suite:test_numbered_main()
    self:assertEquals(d.category, chmain{
		[1] = d.category,
		main = 1,
		page = d.article
	})
end

function suite:test_numbered_two_params()
    self:assertEquals(d.category2, chmain{
		[1] = d.category1,
		[2] = d.category2,
		main = 1,
		file = 2,
		page = d.file
	})
end

--------------------------------------------------------------------------------
-- Test overriding defaults
--------------------------------------------------------------------------------

function suite:test_numbered_main()
    self:assertEquals(d.absent, chmain{
		main = d.category,
		page = d.file
	})
end

--------------------------------------------------------------------------------
-- Test blank namespace parameters
--------------------------------------------------------------------------------

function suite:test_blank_namespace_talk()
    self:assertEquals(d.blank, chmain{
		talk = d.blank,
		other = d.category,
		page = d.talk
	})
end

--------------------------------------------------------------------------------
-- Test other parameter
--------------------------------------------------------------------------------

function suite:test_other_only()
    self:assertEquals(d.category, chmain{
		other = d.category,
	})
end

--------------------------------------------------------------------------------
-- Test nocat parameter
--------------------------------------------------------------------------------

function suite:test_nocat_true()
    self:assertEquals(d.absent, chmain{d.category, page = d.file, nocat = true})
end

function suite:test_nocat_blank()
    self:assertEquals(d.category, chmain{d.category, page = d.file, nocat = ''})
end

function suite:test_nocat_yes()
    self:assertEquals(d.absent, chmain{d.category, page = d.file, nocat = d.yes})
end

function suite:test_nocat_false()
    self:assertEquals(d.category, chmain{
		[d.archiveParam] = d.category,
		page = d.archive,
		nocat = false
	})
end

function suite:test_nocat_no()
    self:assertEquals(d.category, chmain{
		[d.archiveParam] = d.category,
		page = d.archive,
		nocat = d.no
	})
end

--------------------------------------------------------------------------------
-- Test categories parameter
--------------------------------------------------------------------------------

function suite:test_categories_true()
    self:assertEquals(d.category, chmain{
		[d.archiveParam] = d.category,
		page = d.archive,
		categories = true
	})
end

function suite:test_categories_blank()
    self:assertEquals(d.category, chmain{d.category, page = d.file, categories = ''})
end

function suite:test_categories_yes()
    self:assertEquals(d.category, chmain{
		[d.archiveParam] = d.category,
		page = d.archive,
		categories = d.yes
	})
end

function suite:test_categories_false()
    self:assertEquals(d.absent, chmain{
		file = d.category,
		page = d.file,
		categories = false
	})
end

function suite:test_categories_no()
    self:assertEquals(d.absent, chmain{
		file = d.category,
		page = d.file,
		categories = d.no
	})
end

--------------------------------------------------------------------------------
-- Test category2 parameter
--------------------------------------------------------------------------------

function suite:test_category2_no()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		category2 = d.no
	})
end

function suite:test_category2_blank()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		category2 = d.blank
	})
end

function suite:test_category2_negation()
    self:assertEquals(d.category, chmain{
		other = d.category,
		category2 = d.negation
	})
end

function suite:test_category2_blacklist()
    self:assertEquals(d.category, chmain{
		other = d.category,
		page = d.archive,
		categories = d.yes
	})
end

--------------------------------------------------------------------------------
-- Test subpage parameter
--------------------------------------------------------------------------------

function suite:test_subpage_no_basepage()
    self:assertEquals(d.category, chmain{
		other = d.category,
		page = d.basepage,
		subpage = d.subpageNo
	})
end

function suite:test_subpage_no_subpage()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = d.subpage,
		subpage = d.subpageNo
	})
end

function suite:test_subpage_only_basepage()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = d.basepage,
		subpage = d.subpageOnly
	})
end

function suite:test_subpage_only_subpage()
    self:assertEquals(d.category, chmain{
		other = d.category,
		page = d.subpage,
		subpage = d.subpageOnly
	})
end

--------------------------------------------------------------------------------
-- Test blacklist
--------------------------------------------------------------------------------

function suite:test_blacklist_archives()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = 'User talk:Example/Archive 5',
	})
end

function suite:test_blacklist_archives_lowercase()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = 'User talk:Example/archive 5',
	})
end

function suite:test_blacklist_archives_notarchive()
    self:assertEquals(d.category, chmain{
		other = d.category,
		page = 'User talk:Example/Archove 5',
	})
end

function suite:test_blacklist_archives_incident_archive()
    self:assertEquals(d.category, chmain{
		other = d.category,
		page = "Wikipedia:Administrators' noticeboard/IncidentArchive 5",
	})
end

function suite:test_blacklist_main_page()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = 'Main Page',
	})
end

function suite:test_blacklist_main_page_talk()
    self:assertEquals(d.category, chmain{
		other = d.category,
		page = 'Talk:Main Page',
	})
end

function suite:test_blacklist_cascade()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = 'Wikipedia:Cascade-protected items',
	})
end

function suite:test_blacklist_cascade_slash()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = 'Wikipedia:Cascade-protected items/',
	})
end

function suite:test_blacklist_cascade_subpage()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = 'Wikipedia:Cascade-protected items/Foo',
	})
end

function suite:test_blacklist_cascade_not_subpage()
    self:assertEquals(d.category, chmain{
		other = d.category,
		page = 'Wikipedia:Cascade-protected itemsFoo',
	})
end

function suite:test_blacklist_cascade_talk()
    self:assertEquals(d.category, chmain{
		other = d.category,
		page = 'Wikipedia talk:Cascade-protected items',
	})
end

function suite:test_blacklist_ubx()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = 'User:UBX',
	})
end

function suite:test_blacklist_ubx_talk()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = 'User talk:UBX',
	})
end

function suite:test_blacklist_ubx_subpage()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = 'User:UBX/Userboxes',
	})
end

function suite:test_blacklist_ubx_talk_subpage()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = 'User talk:UBX/Userboxes',
	})
end

function suite:test_blacklist_template_messages_basepage()
    self:assertEquals(d.category, chmain{
		other = d.category,
		page = 'Wikipedia:Template messages',
	})
end

function suite:test_blacklist_template_messages_slash()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = 'Wikipedia:Template messages/',
	})
end

function suite:test_blacklist_template_messages_not_subpage()
    self:assertEquals(d.category, chmain{
		other = d.category,
		page = 'Wikipedia:Template messagesFoo',
	})
end

function suite:test_blacklist_template_messages_subpage()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = 'Wikipedia:Template messages/Cleanup',
	})
end

--------------------------------------------------------------------------------
-- Test namespace params
--------------------------------------------------------------------------------

function suite:test_main()
    self:assertEquals(d.category, chmain{
		main = d.category,
		page = 'Some article',
	})
end

function suite:test_talk()
    self:assertEquals(d.category, chmain{
		talk = d.category,
		page = 'Talk:Some article',
	})
end

function suite:test_user()
    self:assertEquals(d.category, chmain{
		user = d.category,
		page = 'User:Example',
	})
end

function suite:test_user_talk()
    self:assertEquals(d.category, chmain{
		talk = d.category,
		page = 'User talk:Example',
	})
    self:assertEquals(d.absent, chmain{
		['user talk'] = d.category,
		page = 'User talk:Example',
	})
    self:assertEquals(d.absent, chmain{
		['user_talk'] = d.category,
		page = 'User talk:Example',
	})
end

function suite:test_wikipedia()
    self:assertEquals(d.category, chmain{
		wikipedia = d.category,
		page = 'Wikipedia:Example',
	})
end

function suite:test_wikipedia()
    self:assertEquals(d.category, chmain{
		wikipedia = d.category,
		page = 'Wikipedia:Example',
	})
end

function suite:test_project()
    self:assertEquals(d.category, chmain{
		project = d.category,
		page = 'Wikipedia:Example',
	})
end

function suite:test_wp()
    self:assertEquals(d.category, chmain{
		wp = d.category,
		page = 'Wikipedia:Example',
	})
end

function suite:test_file()
    self:assertEquals(d.category, chmain{
		file = d.category,
		page = 'File:Example.png',
	})
end

function suite:test_image()
    self:assertEquals(d.category, chmain{
		image = d.category,
		page = 'File:Example.png',
	})
end

function suite:test_mediawiki()
    self:assertEquals(d.category, chmain{
		mediawiki = d.category,
		page = 'MediaWiki:Protectedpagetext',
	})
end

function suite:test_template()
    self:assertEquals(d.category, chmain{
		template = d.category,
		page = 'Template:Example',
	})
end

function suite:test_help()
    self:assertEquals(d.category, chmain{
		help = d.category,
		page = 'Help:Editing',
	})
end

function suite:test_category()
    self:assertEquals(d.category, chmain{
		category = d.category,
		page = 'Category:Wikipedians',
	})
end

function suite:test_category()
    self:assertEquals(d.category, chmain{
		category = d.category,
		page = 'Category:Wikipedians',
	})
end

function suite:test_portal()
    self:assertEquals(d.category, chmain{
		portal = d.category,
		page = 'Portal:France',
	})
end

function suite:test_book()
    self:assertEquals(d.category, chmain{
		book = d.category,
		page = 'Book:Example',
	})
end

function suite:test_draft()
    self:assertEquals(d.category, chmain{
		draft = d.category,
		page = 'Draft:Example',
	})
end

function suite:test_education_program()
    self:assertEquals(d.category, chmain{
		['education program'] = d.category,
		page = 'Education Program:Example',
	})
end

function suite:test_timedtext()
    self:assertEquals(d.category, chmain{
		timedtext = d.category,
		page = 'TimedText:Example',
	})
end

function suite:test_module()
    self:assertEquals(d.category, chmain{
		module = d.category,
		page = 'Module:Sandbox',
	})
end

function suite:test_special()
    self:assertEquals(d.category, chmain{
		special = d.category,
		page = 'Special:WhatLinksHere',
	})
end

function suite:test_media()
    self:assertEquals(d.category, chmain{
		media = d.category,
		page = 'Media:Example.png',
	})
end

return suite