<!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>
