Test resolution of relative URLs. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". PASS canonicalize('http://another/') is 'http://another/' PASS canonicalize('http:////another/') is 'http://another/' PASS canonicalize('') is 'http://foo/bar' PASS canonicalize('') is 'http://foo/bar' PASS canonicalize('') is 'http://foo/bar' PASS canonicalize(' another ') is 'http://foo/another' PASS canonicalize(' . ') is 'http://foo/' PASS canonicalize(' ') is 'http://foo/bar' PASS canonicalize('http:path') is 'http://host/path' PASS canonicalize('http:path') is 'http://host/a/path' FAIL canonicalize('http:/path') should be http://host/path. Was http:/path. FAIL canonicalize('HTTP:/path') should be http://host/path. Was HTTP:/path. FAIL canonicalize('https:host2') should be https://host2/. Was https:host2. PASS canonicalize('htto:/host2') is 'htto:/host2' PASS canonicalize('/b/c/d') is 'http://host/b/c/d' PASS canonicalize('\\b\\c\\d') is 'http://host/b/c/d' PASS canonicalize('/b/../c') is 'http://host/c' PASS canonicalize('/b/../c') is 'http://host/c' PASS canonicalize('\\b/../c?x#y') is 'http://host/c?x#y' PASS canonicalize('/b/../c?x#y') is 'http://host/c?x#y' PASS canonicalize('b') is 'http://host/b' PASS canonicalize('bc/de') is 'http://host/bc/de' PASS canonicalize('bc/de?query#ref') is 'http://host/a/bc/de?query#ref' PASS canonicalize('.') is 'http://host/a/' PASS canonicalize('..') is 'http://host/' PASS canonicalize('./..') is 'http://host/' PASS canonicalize('../.') is 'http://host/' PASS canonicalize('././.') is 'http://host/a/' PASS canonicalize('../../../foo') is 'http://host/foo' PASS canonicalize('?foo=bar') is 'http://host/a?foo=bar' PASS canonicalize('?') is 'http://host/a?' PASS canonicalize('?foo=bar#com') is 'http://host/a?foo=bar#com' PASS canonicalize('#ref') is 'http://host/a#ref' PASS canonicalize('#') is 'http://host/a#' PASS canonicalize('#bye') is 'http://host/a?foo=bar#bye' FAIL canonicalize('baz.html') should be . Was baz.html. PASS canonicalize('data:baz') is 'data:baz' PASS canonicalize('data:/base') is 'data:/base' PASS canonicalize('http://host/') is 'http://host/' FAIL canonicalize('http:host') should be http://host/. Was http:host. PASS canonicalize('./asd:fgh') is 'http://foo/asd:fgh' PASS canonicalize(':foo') is 'http://foo/:foo' PASS canonicalize(' hello world') is 'http://foo/hello%20world' FAIL canonicalize(':foo') should be . Was :foo. PASS canonicalize(';foo') is 'http://host/;foo' PASS canonicalize(';foo') is 'http://host/;foo' PASS canonicalize(';/../bar') is 'http://host/bar' PASS canonicalize('//another') is 'http://another/' PASS canonicalize('//another/path?query#ref') is 'http://another/path?query#ref' FAIL canonicalize('///another/path') should be http://another/path. Was http:/another/path. FAIL canonicalize('//Another\\path') should be http://another/path. Was http://Another/path. FAIL canonicalize('//') should be http:. Was http:/. PASS canonicalize('\\/another/path') is 'http://another/path' FAIL canonicalize('/\\Another\\path') should be http://another/path. Was http://Another/path. PASS successfullyParsed is true TEST COMPLETE