Canonicalization of standard URLs

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS canonicalize('http://www.google.com/foo?bar=baz#') is 'http://www.google.com/foo?bar=baz#'
PASS canonicalize('http://[www.google.com]/') is 'http://[www.google.com]/'
FAIL canonicalize('http:////////user:@google.com:99?foo') should be http://user@google.com:99/?foo. Was http://////user:@google.com:99?foo.
FAIL canonicalize('http://192.0x00A80001') should be http://192.168.0.1/. Was http://192.0x00A80001/.
FAIL canonicalize('http://www/foo%2Ehtml') should be http://www/foo.html. Was http://www/foo%2Ehtml.
PASS canonicalize('http://user:pass@/') is 'http://user:pass@/'
PASS canonicalize('http://%25DOMAIN:foobar@foodomain.com/') is 'http://%25DOMAIN:foobar@foodomain.com/'
PASS canonicalize('http:\\\\www.google.com\\foo') is 'http://www.google.com/foo'
FAIL canonicalize('http://www.google.com/asdf#\ud800') should be http://www.google.com/asdf#�. Was http://www.google.com/asdf#%26%2355296%3B.
PASS canonicalize('http://foo:80/') is 'http://foo/'
PASS canonicalize('http://foo:81/') is 'http://foo:81/'
PASS canonicalize('httpa://foo:80/') is 'httpa://foo:80/'
PASS canonicalize('http://foo:-80/') is 'http://foo:-80/'
PASS canonicalize('https://foo:443/') is 'https://foo/'
PASS canonicalize('https://foo:80/') is 'https://foo:80/'
PASS canonicalize('ftp://foo:21/') is 'ftp://foo/'
PASS canonicalize('ftp://foo:80/') is 'ftp://foo:80/'
PASS canonicalize('gopher://foo:70/') is 'gopher://foo/'
PASS canonicalize('gopher://foo:443/') is 'gopher://foo:443/'
PASS canonicalize('ws://foo:80/') is 'ws://foo/'
PASS canonicalize('ws://foo:81/') is 'ws://foo:81/'
PASS canonicalize('ws://foo:443/') is 'ws://foo:443/'
PASS canonicalize('ws://foo:815/') is 'ws://foo:815/'
PASS canonicalize('wss://foo:80/') is 'wss://foo:80/'
PASS canonicalize('wss://foo:81/') is 'wss://foo:81/'
PASS canonicalize('wss://foo:443/') is 'wss://foo/'
PASS canonicalize('wss://foo:815/') is 'wss://foo:815/'
PASS successfullyParsed is true

TEST COMPLETE

