Canonicalization of IPv6 addresses.
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
FAIL canonicalize('http:///') should be http:. Was http:/.
PASS canonicalize('http://[/') is 'http://[/'
PASS canonicalize('http://[:/') is 'http://[:/'
PASS canonicalize('http://]/') is 'http://]/'
PASS canonicalize('http://:]/') is 'http://:]/'
PASS canonicalize('http://[]/') is 'http://[]/'
PASS canonicalize('http://[:]/') is 'http://[:]/'
PASS canonicalize('http://2001:db8::1/') is 'http://2001:db8::1/'
PASS canonicalize('http://[2001:db8::1/') is 'http://[2001:db8::1/'
PASS canonicalize('http://2001:db8::1]/') is 'http://2001:db8::1]/'
PASS canonicalize('http://[::]/') is 'http://[::]/'
PASS canonicalize('http://[::1]/') is 'http://[::1]/'
PASS canonicalize('http://[1::]/') is 'http://[1::]/'
FAIL canonicalize('http://[::192.168.0.1]/') should be http://[::c0a8:1]/. Was http://[::192.168.0.1]/.
FAIL canonicalize('http://[::ffff:192.168.0.1]/') should be http://[::ffff:c0a8:1]/. Was http://[::ffff:192.168.0.1]/.
FAIL canonicalize('http://[000:01:02:003:004:5:6:007]/') should be http://[0:1:2:3:4:5:6:7]/. Was http://[000:01:02:003:004:5:6:007]/.
FAIL canonicalize('http://[A:b:c:DE:fF:0:1:aC]/') should be http://[a:b:c:de:ff:0:1:ac]/. Was http://[A:b:c:DE:fF:0:1:aC]/.
FAIL canonicalize('http://[1:0:0:2::3:0]/') should be http://[1::2:0:0:3:0]/. Was http://[1:0:0:2::3:0]/.
PASS canonicalize('http://[1::2:0:0:3:0]/') is 'http://[1::2:0:0:3:0]/'
PASS canonicalize('http://[::eeee:192.168.0.1]/') is 'http://[::eeee:192.168.0.1]/'
PASS canonicalize('http://[2001::192.168.0.1]/') is 'http://[2001::192.168.0.1]/'
PASS canonicalize('http://[1:2:192.168.0.1:5:6]/') is 'http://[1:2:192.168.0.1:5:6]/'
FAIL canonicalize('http://[::ffff:192.1.2]/') should be http://[::ffff:c001:2]/. Was http://[::ffff:192.1.2]/.
FAIL canonicalize('http://[::ffff:0xC0.0Xa8.0x0.0x1]/') should be http://[::ffff:c0a8:1]/. Was http://[::ffff:0xC0.0Xa8.0x0.0x1]/.
FAIL canonicalize('http://[0:0::0:0:8]/') should be http://[::8]/. Was http://[0:0::0:0:8]/.
PASS canonicalize('http://[2001:db8::1]/') is 'http://[2001:db8::1]/'
PASS canonicalize('http://[2001::db8::1]/') is 'http://[2001::db8::1]/'
PASS canonicalize('http://[2001:db8:::1]/') is 'http://[2001:db8:::1]/'
PASS canonicalize('http://[:::]/') is 'http://[:::]/'
PASS canonicalize('http://[2001::.com]/') is 'http://[2001::.com]/'
PASS canonicalize('http://[::192.168.0.0.1]/') is 'http://[::192.168.0.0.1]/'
PASS canonicalize('http://[::ffff:192.168.0.0.1]/') is 'http://[::ffff:192.168.0.0.1]/'
PASS canonicalize('http://[1:2:3:4:5:6:7:8:9]/') is 'http://[1:2:3:4:5:6:7:8:9]/'
PASS canonicalize('http://[0:0:0:0:0:0:0:192.168.0.1]/') is 'http://[0:0:0:0:0:0:0:192.168.0.1]/'
PASS canonicalize('http://[1:2:3:4:5:6::192.168.0.1]/') is 'http://[1:2:3:4:5:6::192.168.0.1]/'
FAIL canonicalize('http://[1:2:3:4:5:6::8]/') should be http://[1:2:3:4:5:6:0:8]/. Was http://[1:2:3:4:5:6::8]/.
PASS canonicalize('http://[1:2:3:4:5:6:7:8:]/') is 'http://[1:2:3:4:5:6:7:8:]/'
PASS canonicalize('http://[1:2:3:4:5:6:192.168.0.1:]/') is 'http://[1:2:3:4:5:6:192.168.0.1:]/'
PASS canonicalize('http://[-1:2:3:4:5:6:7:8]/') is 'http://[-1:2:3:4:5:6:7:8]/'
FAIL canonicalize('http://[1::%1]/') should be http://[1::%251]/. Was http://[1::%1]/.
FAIL canonicalize('http://[1::%eth0]/') should be http://[1::%25eth0]/. Was http://[1::%eth0]/.
FAIL canonicalize('http://[1::%]/') should be http://[1::%25]/. Was http://[1::%]/.
FAIL canonicalize('http://[%]/') should be http://[%25]/. Was http://[%]/.
FAIL canonicalize('http://[::%:]/') should be http://[::%25:]/. Was http://[::%:]/.
PASS canonicalize('http://[:0:0::0:0:8]/') is 'http://[:0:0::0:0:8]/'
PASS canonicalize('http://[0:0::0:0:8:]/') is 'http://[0:0::0:0:8:]/'
PASS canonicalize('http://[:0:0::0:0:8:]/') is 'http://[:0:0::0:0:8:]/'
PASS canonicalize('http://[::192.168..1]/') is 'http://[::192.168..1]/'
FAIL canonicalize('http://[::1 hello]/') should be http://[::1%20hello]/. Was http://[::1 hello]/.
PASS successfullyParsed is true
TEST COMPLETE