| <!doctype html> | 
 | <base id=base> | 
 | <meta charset=utf-8> | 
 | <script src=/resources/testharness.js></script> | 
 | <script src=/resources/testharnessreport.js></script> | 
 | <script src=urltestparser.js></script> | 
 | <div id=log></div> | 
 | <script> | 
 | var setup = async_test("Loading data…") | 
 | setup.step(function() { | 
 |   var request = new XMLHttpRequest() | 
 |   request.open("GET", "urltestdata.txt") | 
 |   request.send() | 
 |   request.responseType = "text" | 
 |   request.onload = setup.step_func(function() { | 
 |     runURLTests(request.response); | 
 |     setup.done() | 
 |   }) | 
 | }) | 
 |  | 
 | function setBase(base) { | 
 |   document.getElementById("base").href = base | 
 | } | 
 |  | 
 | function bURL(url, base) { | 
 |   base = base || "about:blank" | 
 |   setBase(base) | 
 |   var a = document.createElement("a") | 
 |   a.setAttribute("href", url) | 
 |   return a | 
 | } | 
 |  | 
 | function runURLTests(raw) { | 
 |   var urltests = URLTestParser(raw) | 
 |   for(var i = 0, l = urltests.length; i < l; i++) { | 
 |     var expected = urltests[i] | 
 |     test(function() { | 
 |       var url = bURL(expected.input, expected.base) | 
 |       if(expected.protocol === ':' && url.protocol !== ':') | 
 |         assert_unreached('Expected URL to fail parsing') | 
 |       assert_equals(url.protocol, expected.protocol, "scheme") | 
 |       assert_equals(url.hostname, expected.hostname, "host") | 
 |       assert_equals(url.port, expected.port, "port") | 
 |       assert_equals(url.pathname, expected.path, "path") | 
 |       assert_equals(url.search, expected.search, "search") | 
 |       assert_equals(url.hash, expected.hash, "hash") | 
 |       assert_equals(url.href, expected.href, "href") | 
 |     }, "Parsing: <" + expected.input + "> against <" + expected.base + ">") | 
 |   } | 
 | } | 
 | </script> |