Module:Delink/testcases

From blackwiki
< Module:Delink
Revision as of 15:02, 3 April 2013 by blackwiki>Mr. Stradivarius (add more improbable tests)
Jump to navigation Jump to search

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

local p = require('Module:UnitTests')

function p:test_basic()
    self:preprocess_equals('{{#invoke:Delink|delink|[[Apple]]}}', 'Apple')
    self:preprocess_equals('{{#invoke:Delink|delink|[[Orange]]s are dissimilar to [[Apple]]s}}', 'Oranges are dissimilar to Apples')
   self:preprocess_equals('{{#invoke:Delink|delink|[[Apple]]s and [[orange]]s and [[fruit salad|other kinds of fruit]]}}', 'Apples and oranges and other kinds of fruit')
    self:preprocess_equals('{{#invoke:Delink|delink|All [[Gone]] [[wikt:to|]] [[Bed]] [[Now]]}}', 'All Gone to Bed Now')
    self:preprocess_equals('{{#invoke:Delink|delink|[[Survey]] of [http://books.google.com Google Books] on [[UK|Britain]]}}', 'Survey of Google Books on Britain')
end

function p:test_cats_and_interwikis()
    self:preprocess_equals('{{#invoke:Delink|delink|[[Category:Foo]]}}', '')
    self:preprocess_equals('{{#invoke:Delink|delink|[[es:Foo]]}}', '')
    self:preprocess_equals('{{#invoke:Delink|delink|[[wikt:Foo]]}}', 'wikt:Foo')
    self:preprocess_equals('{{#invoke:Delink|delink|[[es:Wikipedia:Políticas]]}}', '')
    self:preprocess_equals('{{#invoke:Delink|delink|[[abcd:efgh:ijkl]]}}', 'abcd:efgh:ijkl')
    self:preprocess_equals('{{#invoke:Delink|delink|[[cbk-zam:abcd:efgh]]}}', '')
end
    
function p:test_colontrick()
    self:preprocess_equals('{{#invoke:Delink|delink|[[:Category:Foo]]}}', 'Category:Foo')
    self:preprocess_equals('{{#invoke:Delink|delink|[[:es:Foo]]}}', 'es:Foo')
    self:preprocess_equals('{{#invoke:Delink|delink|[[:wikt:Foo]]}}', 'wikt:Foo')
    self:preprocess_equals('{{#invoke:Delink|delink|[[:es:Wikipedia:Políticas]]}}', 'es:Wikipedia:Políticas')
    self:preprocess_equals('{{#invoke:Delink|delink|[[:abcd:efgh:ijkl]]}}', 'abcd:efgh:ijkl')
    self:preprocess_equals('{{#invoke:Delink|delink|[[:cbk-zam:abcd:efgh]]}}', 'cbk-zam:abcd:efgh')
end

function p:test_pipetrick()
    self:preprocess_equals('{{#invoke:Delink|delink|[[Pipe (computing)|]]}}', 'Pipe')
    self:preprocess_equals('{{#invoke:Delink|delink|[[Boston, Massachusetts|]]}}', 'Boston')
    self:preprocess_equals('{{#invoke:Delink|delink|[[Wikipedia:Verifiability|]]}}', 'Verifiability')
    self:preprocess_equals('{{#invoke:Delink|delink|[[User:Example|]]}}', 'Example')
    self:preprocess_equals('{{#invoke:Delink|delink|[[Template:Welcome|]]}}', 'Welcome')
    self:preprocess_equals('{{#invoke:Delink|delink|[[Yours, Mine and Ours (1968 film)|]]}}', 'Yours, Mine and Ours')
    self:preprocess_equals('{{#invoke:Delink|delink|[[:es:Wikipedia:Políticas|]]}}', 'Wikipedia:Políticas')
    self:preprocess_equals('{{#invoke:Delink|delink|[[Il Buono, il Brutto, il Cattivo|]]}}', 'Il Buono')
    self:preprocess_equals('{{#invoke:Delink|delink|[[Wikipedia:Manual of Style (Persian)|]]}}', 'Manual of Style')
    self:preprocess_equals('{{#invoke:Delink|delink|[[Wikipedia:Manual of Style(Persian)|]]}}', 'Manual of Style')
end

function p:test_badlinks()
    self:preprocess_equals('{{#invoke:Delink|delink|[[<]]}}', '[[<]]')
    self:preprocess_equals('{{#invoke:Delink|delink|[[Category:<]]}}', '[[Category:<]]')
    self:preprocess_equals('{{#invoke:Delink|delink|[[:Category:<]]}}', '[[:Category:<]]')
    self:preprocess_equals('{{#invoke:Delink|delink|[[:Category:<|Foo]]}}', '[[:Category:<|Foo]]')
    self:preprocess_equals('{{#invoke:Delink|delink|[[:Category:<|]]}}', '[[:Category:<|]]')
    self:preprocess_equals('{{#invoke:Delink|delink|[[:Category:Foo|<]]}}', '<')
    self:preprocess_equals('{{#invoke:Delink|delink|[[Category:Foo|<]]}}', '')
    self:preprocess_equals('{{#invoke:Delink|delink|[[Foo:Bar|<]]}}', '<')
    self:preprocess_equals('{{#invoke:Delink|delink|[[Foo:Bar:>]]}}', '[[Foo:Bar:>]]')
    self:preprocess_equals('{{#invoke:Delink|delink|[[es:Wikipedia:<]]}}', '[[es:Wikipedia:<]]')
    self:preprocess_equals('{{#invoke:Delink|delink|[[es:Wikipedia:Foo|<]]}}', '')
    self:preprocess_equals('{{#invoke:Delink|delink|[[:es:Wikipedia:<]]}}', '[[:es:Wikipedia:<]]')
    self:preprocess_equals('{{#invoke:Delink|delink|[[:es:Wikipedia:Foo|<]]}}', '<')
    self:preprocess_equals('{{#invoke:Delink|delink|[[Foo:Bar:Foo#>]]}}', 'Foo:Bar:Foo#>')
    self:preprocess_equals('{{#invoke:Delink|delink|[[Foo:Bar:Foo>#Baz]]}}', '[[Foo:Bar:Foo>#Baz]]')
    self:preprocess_equals('{{#invoke:Delink|delink|[[Foo#Bar>#Baz]]}}', 'Foo#Bar>#Baz')
    self:preprocess_equals('{{#invoke:Delink|delink|[[Foo>#Bar#Baz]]}}', '[[Foo>#Bar#Baz]]')
    self:preprocess_equals('{{#invoke:Delink|delink|[[wikt:es:asdf:&#x0000;Template:title#Fragment]]}}', '[[wikt:es:asdf:&#x0000;Template:title#Fragment]]')
end

function p:test_URI()
    self:preprocess_equals('{{#invoke:Delink|delink|[/foo]}}', '[/foo]')
    self:preprocess_equals('{{#invoke:Delink|delink|[/foo bar]}}', '[/foo bar]')
    self:preprocess_equals('{{#invoke:Delink|delink|[//foo]}}', '')
    self:preprocess_equals('{{#invoke:Delink|delink|[//foo bar]}}', 'bar')
    self:preprocess_equals('{{#invoke:Delink|delink|[///foo]}}', '')
    self:preprocess_equals('{{#invoke:Delink|delink|[///foo bar]}}', 'bar')
    self:preprocess_equals('{{#invoke:Delink|delink|[////foo]}}', '')
    self:preprocess_equals('{{#invoke:Delink|delink|[////foo bar]}}', 'bar')
    self:preprocess_equals('{{#invoke:Delink|delink|[///////////////////////////////////foo]}}', '')
    self:preprocess_equals('{{#invoke:Delink|delink|[///////////////////////////////////foo bar]}}', 'bar')
    self:preprocess_equals('{{#invoke:Delink|delink|[://foo]}}', '[://foo]')
    self:preprocess_equals('{{#invoke:Delink|delink|[:://foo]}}', '[:://foo]')
    self:preprocess_equals('{{#invoke:Delink|delink|[abcd://]}}', '[abcd://]')
    self:preprocess_equals('{{#invoke:Delink|delink|[abcd://foo]}}', '[abcd://foo]')
    self:preprocess_equals('{{#invoke:Delink|delink|[http://]}}', '[http://]')
    self:preprocess_equals('{{#invoke:Delink|delink|[http://foo]}}', '')
    self:preprocess_equals('{{#invoke:Delink|delink|[https://]}}', '[https://]')
    self:preprocess_equals('{{#invoke:Delink|delink|[https://foo]}}', '')
    self:preprocess_equals('{{#invoke:Delink|delink|[ftp://]}}', '[ftp://]')
    self:preprocess_equals('{{#invoke:Delink|delink|[ftp://foo]}}', '')
    self:preprocess_equals('{{#invoke:Delink|delink|[gopher://]}}', '[gopher://]')
    self:preprocess_equals('{{#invoke:Delink|delink|[gopher://foo]}}', '')
    self:preprocess_equals('{{#invoke:Delink|delink|[mailto:]}}', '[mailto:]')
    self:preprocess_equals('{{#invoke:Delink|delink|[mailto:foo]}}', '')
    self:preprocess_equals('{{#invoke:Delink|delink|[news]}}', '[news]')
    self:preprocess_equals('{{#invoke:Delink|delink|[news at ten]}}', '[news at ten]')
    self:preprocess_equals('{{#invoke:Delink|delink|[news:]}}', '[news:]')
    self:preprocess_equals('{{#invoke:Delink|delink|[news: at ten]}}', '[news: at ten]')
    self:preprocess_equals('{{#invoke:Delink|delink|[news:/]}}', '')
    self:preprocess_equals('{{#invoke:Delink|delink|[news:/ at ten]}}', 'at ten')
    self:preprocess_equals('{{#invoke:Delink|delink|[news://]}}', '')
    self:preprocess_equals('{{#invoke:Delink|delink|[news://foo]}}', '')
    self:preprocess_equals('{{#invoke:Delink|delink|[news://foo at ten]}}', 'at ten')
    self:preprocess_equals('{{#invoke:Delink|delink|[irc://]}}', '[irc://]')
    self:preprocess_equals('{{#invoke:Delink|delink|[irc://foo]}}', '')
    self:preprocess_equals('{{#invoke:Delink|delink|[:http://foo]}}', '[:http://foo]')
    self:preprocess_equals('{{#invoke:Delink|delink|[http://<foo]}}', '<foo')
end

return p