description("Canonicalization of file URLs");

cases = [ 
    // Windows-style paths
    ["file:c:\\\\foo\\\\bar.html", "file:///C:/foo/bar.html"],
    ["  File:c|////foo\\\\bar.html", "file:///C:////foo/bar.html"],
    ["file:", "file:///"],
    ["file:UNChost/path", "file://unchost/path"],
    // CanonicalizeFileURL supports absolute Windows style paths for IE
    // compatibility. Note that the caller must decide that this is a file
    // URL itself so it can call the file canonicalizer. This is usually
    // done automatically as part of relative URL resolving.
    ["c:\\\\foo\\\\bar", "file:///C:/foo/bar"],
    ["C|/foo/bar", "file:///C:/foo/bar"],
    ["/C|\\\\foo\\\\bar", "file:///C:/foo/bar"],
    ["//C|/foo/bar", "file:///C:/foo/bar"],
    ["//server/file", "file://server/file"],
    ["\\\\\\\\server\\\\file", "file://server/file"],
    ["/\\\\server/file", "file://server/file"],
    // We should preserve the number of slashes after the colon for IE
    // compatibility, except when there is none, in which case we should
    // add one.
    ["file:c:foo/bar.html", "file:///C:/foo/bar.html"],
    ["file:/\\\\/\\\\C:\\\\\\\\//foo\\\\bar.html", "file:///C:////foo/bar.html"],
    // Three slashes should be non-UNC, even if there is no drive spec (IE
    // does this, which makes the resulting request invalid).
    ["file:///foo/bar.txt", "file:///foo/bar.txt"],
    // TODO(brettw) we should probably fail for invalid host names, which
    // would change the expected result on this test. We also currently allow
    // colon even though it's probably invalid, because its currently the
    // "natural" result of the way the canonicalizer is written. There doesn't
    // seem to be a strong argument for why allowing it here would be bad, so
    // we just tolerate it and the load will fail later.
    ["FILE:/\\\\/\\\\7:\\\\\\\\//foo\\\\bar.html", "file://7:////foo/bar.html"],
    ["file:filer/home\\\\me", "file://filer/home/me"],
    // Make sure relative paths can't go above the "C:"
    ["file:///C:/foo/../../../bar.html", "file:///C:/bar.html"],
    // Busted refs shouldn't make the whole thing fail.
    ["file:///C:/asdf#\\xc2", "file:///C:/asdf#%C3%82"],

    // Unix-style paths
    ["file:///home/me", "file:///home/me"],
    // Windowsy ones should get still treated as Unix-style.
    ["file:c:\\\\foo\\\\bar.html", "file:///c:/foo/bar.html"],
    ["file:c|//foo\\\\bar.html", "file:///c%7C//foo/bar.html"],
    // file: tests from WebKit (LayoutTests/fast/loader/url-parse-1.html)
    ["//", "file:///"],
    ["///", "file:///"],
    ["///test", "file:///test"],
    ["file://test", "file://test/"],
    ["file://localhost",  "file://localhost/"],
    ["file://localhost/", "file://localhost/"],
    ["file://localhost/test", "file://localhost/test"],
];

var originalBaseURL = canonicalize(".");
setBaseURL("file:///tmp/mock/path");

for (var i = 0; i < cases.length; ++i) {
  test_vector = cases[i][0];
  expected_result = cases[i][1];
  shouldBe("canonicalize('" + test_vector + "')",
           "'" + expected_result + "'");
}

setBaseURL(originalBaseURL);
