# Module:URL/testcases

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

function p:test_url  
local cases = {  
'',  
'',  
'',  
}  
text = self.:expandTemplate{ title = 'tlx', args = { 'URL', "*example.com*", "*optional display text*" } }  
for _, case in ipairs(cases) do  
self:preprocess_equals(case, text)  
end  

cases = {  
{'http://www.example.com/foo/bar?a=b&c=d', 'www<wbr/>.example<wbr/>.com<wbr/>/foo<wbr/>/bar?a=b&c=d'},  
{'EXAMPLE.com', 'example<wbr/>.com'},  
{'example.com', 'example<wbr/>.com'},  
{'www.example.com', 'www<wbr/>.example<wbr/>.com'},  
{'http://www.example.com', 'www<wbr/>.example<wbr/>.com'},  
{'https://www.example.com', 'www<wbr/>.example<wbr/>.com'},  
{'ftp://www.example.com', 'www<wbr/>.example<wbr/>.com'},  
{'//www.example.com', '[//www.example.com www<wbr/>.example<wbr/>.com]'},  
{'ftp://ftp.example.com', 'ftp<wbr/>.example<wbr/>.com'},  
{'http://www.example.com/', 'www<wbr/>.example<wbr/>.com'},  
{'http://www.example.com/path', 'www<wbr/>.example<wbr/>.com<wbr/>/path'},  
{'www.example.com/foo', 'www<wbr/>.example<wbr/>.com<wbr/>/foo'},  
{'http://www.example.com/foo | link', 'link'},  
{'www.example.com/foo | link', 'link'},  
{'http://www.example.com/path/', 'www<wbr/>.example<wbr/>.com<wbr/>/path<wbr/>/'},  
{'www.example.com/foo/', 'www<wbr/>.example<wbr/>.com<wbr/>/foo<wbr/>/'},  
{'1=http://www.example.com/path?section=17', 'www<wbr/>.example<wbr/>.com<wbr/>/path?section=17'},  
{'1=www.example.com/foo?page=42 ', 'www<wbr/>.example<wbr/>.com<wbr/>/foo?page=42'},  
{'http://www.example.com/foo/ | link', 'link'},  
{'www.example.com/foo/ | link', 'link'},  

-- From Template:URL/testcases (and not already listed above)  
{'http://', '[http:// ]'},  
{'WWW.EXAMPLE.COM', 'www<wbr/>.example<wbr/>.com'},  
{'https://www.EXAMPLE.cOm', 'www<wbr/>.example<wbr/>.com'},  
{'HTTPS://www.EXAMPLE.cOm/', '[HTTPS://www.EXAMPLE.cOm/ www<wbr/>.example<wbr/>.com]'},  
{'https://www.example.com/', 'www<wbr/>.example<wbr/>.com'},  
{'http://example.com', 'example<wbr/>.com'},  
{'https://example.com', 'example<wbr/>.com'},  
{'ftp://example.com', 'example<wbr/>.com'},  
{'http://www.example.com/foo/bar', 'www<wbr/>.example<wbr/>.com<wbr/>/foo<wbr/>/bar'},  
{'http://www.example.com/foo/bar/', 'www<wbr/>.example<wbr/>.com<wbr/>/foo<wbr/>/bar<wbr/>/'},  
{'http://www.example.com/foO/BaR', 'www<wbr/>.example<wbr/>.com<wbr/>/foO<wbr/>/BaR'},  
{'https://www.example.com/foo/bar', 'www<wbr/>.example<wbr/>.com<wbr/>/foo<wbr/>/bar'},  
{'http://example.com/foo/bar', 'example<wbr/>.com<wbr/>/foo<wbr/>/bar'},  
{'https://example.com/foo/bar', 'example<wbr/>.com<wbr/>/foo<wbr/>/bar'},  
{'example.com/foo/bar', 'example<wbr/>.com<wbr/>/foo<wbr/>/bar'},  
{'www.example.com/foo/bar', 'www<wbr/>.example<wbr/>.com<wbr/>/foo<wbr/>/bar'},  
{'http://example.com/foo/bar | ', 'example<wbr/>.com<wbr/>/foo<wbr/>/bar'},  
{'1=http://www.example.com?foo=BaR', 'www<wbr/>.example<wbr/>.com?foo=BaR'},  
{'http://www.example.com#fooBaR', 'www<wbr/>.example<wbr/>.com<wbr/>#fooBaR'},  
{'http://www.example.com:8080', 'www<wbr/>.example<wbr/>.com:8080'},  
{'http://www.example.com:8080/foo/bar', 'www<wbr/>.example<wbr/>.com:8080<wbr/>/foo<wbr/>/bar'},  
{'www.example.com:8080', 'www<wbr/>.example<wbr/>.com:8080'},  
{'www.example.com:8080/foo/bar', 'www<wbr/>.example<wbr/>.com:8080<wbr/>/foo<wbr/>/bar'},  
{'http://www.example.com/foo bar', 'www<wbr/>.example<wbr/>.com<wbr/>/foo%20bar'},  
{'www.example.com/foo bar', 'www<wbr/>.example<wbr/>.com<wbr/>/foo%20bar'},  
{'http://example.com/foo/bar | link', 'link'},  
{'https://example.com/foo/bar | link', 'link'},  
{'example.com/foo/bar | link', 'link'},  
{'www.example.com/foo/bar | link', 'link'},  
{'www.example.com/foo/bar | 捦挺挎', '捦挺挎'},  
{'www.example.com/foo/捦挺挎/bar | link', 'link'},  
{'عمان.icom.museum', 'عمان<wbr/>.icom<wbr/>.museum'},  
{'http://عمان.icom.museum', 'عمان<wbr/>.icom<wbr/>.museum'},  
{'1964thetribute.com', '1964thetribute<wbr/>.com'},  
{'1964thetribute.com | 1964thetribute.com', '1964thetribute<wbr/>.com'},  
{'1= http://www.example.com/foo/bar?a=b&c=d', 'www<wbr/>.example<wbr/>.com<wbr/>/foo<wbr/>/bar?a=b&c=d'},  
{'1=www.hti.umich.edu/cgi/t/text/pageviewer-idx?c=umhistmath;cc=umhistmath;rgn=full%20text;idno=ABS3153.0001.001;didno=ABS3153.0001.001;view=image;seq=00000140',  
'www<wbr/>.hti<wbr/>.umich<wbr/>.edu<wbr/>/cgi<wbr/>/t<wbr/>/text<wbr/>/pageviewer-idx?c=umhistmath%3Bcc%3Dumhistmath%3Brgn%3Dfull+text%3Bidno%3DABS3153<wbr/>.0001<wbr/>.001%3Bdidno%3DABS3153<wbr/>.0001<wbr/>.001%3Bview%3Dimage%3Bseq%3D00000140'},  
{'http://www.sho.com/site/dexter/home.sho | \'\'Dexter\'\'s official website',  
'\'\'Dexter\'\'<span>&#39;</span>s official website' },  
}  

for _, case in ipairs(cases) do  
self:preprocess_equals('', '<span>' .. case[2] .. '</span>', {nowiki=true})  
end  

self:preprocess_equals('', 'example.com', {nowiki=true})  
self:preprocess_equals('', 'http://example.com/foo', {nowiki=true})  
end  

return p