|  | <!doctype html> | 
|  | <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 bURL(url, base) { | 
|  | return new URL(url, base || "about:blank"); | 
|  | } | 
|  |  | 
|  | function runURLTests(raw) { | 
|  | var urltests = URLTestParser(raw) | 
|  | for(var i = 0, l = urltests.length; i < l; i++) { | 
|  | var expected = urltests[i] | 
|  | test(function() { | 
|  | if (expected.protocol === ':') { | 
|  | assert_throws(new TypeError(), function() { | 
|  | bURL(expected.input, expected.base) | 
|  | }); | 
|  | return; | 
|  | } | 
|  |  | 
|  | var url = bURL(expected.input, expected.base) | 
|  | 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> |