Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / fast / url / script-tests / segments-from-data-url.js
blob96503d47c57bbb5164e6bd0422c970fd38e5f6e9
1 description("Test URL segmentation");
3 cases = [ 
4   // [URL, [SCHEME, HOST, PORT, PATH, QUERY, REF]]
5   ["http://user:pass@foo:21/bar;par?b#c",    ["http:","foo","21","/bar;par","?b","#c"]],
6   ["http:foo.com",                           ["http:","foo.com","","/","",""]],
7   ["\\t   :foo.com   \\n",                   [":","","","","",""]],
8   [" foo.com  ",                             [":","","","","",""]],
9   ["a:\\t foo.com",                          ["a:","",""," foo.com","",""]],
10   ["http://f:21/ b ? d # e ",                ["http:","f","21","/%20b%20","?%20d%20","# e"]],
11   ["http://f:/c",                            ["http:","f","","/c","",""]],
12   ["http://f:0/c",                           ["http:","f","0","/c","",""]],
13   ["http://f:00000000000000/c",              ["http:","f","0","/c","",""]],
14   ["http://f:00000000000000000000080/c",     ["http:","f","0","/c","",""]],
15   ["http://f:b/c",                           [":","","","","",""]],
16   ["http://f: /c",                           [":","","","","",""]],
17   ["http://f:\\n/c",                         [":","","","","",""]],
18   ["http://f:fifty-two/c",                   [":","","","","",""]],
19   ["http://f:999999/c",                      [":","","0","","",""]],
20   ["http://f: 21 / b ? d # e ",              [":","","","","",""]],
21   ["",                                       ["data:","","","text/plain,baseURL","",""]],
22   ["  \\t",                                  ["data:","","","text/plain,baseURL","",""]],
23   [":foo.com/",                              [":","","","","",""]],
24   [":foo.com\\\\",                           [":","","","","",""]],
25   [":",                                      [":","","","","",""]],
26   [":a",                                     [":","","","","",""]],
27   [":/",                                     [":","","","","",""]],
28   [":\\\\",                                  [":","","","","",""]],
29   [":#",                                     [":","","","","",""]],
30   ["#",                                      ["data:","","","text/plain,baseURL","",""]],
31   ["#/",                                     ["data:","","","text/plain,baseURL","","#/"]],
32   ["#\\\\",                                  ["data:","","","text/plain,baseURL","","#\\\\"]],
33   ["#;?",                                    ["data:","","","text/plain,baseURL","","#;?"]],
34   ["?",                                      [":","","","","",""]],
35   ["/",                                      [":","","","","",""]],
36   [":23",                                    [":","","","","",""]],
37   ["/:23",                                   [":","","","","",""]],
38   ["//",                                     [":","","","","",""]],
39   ["::",                                     [":","","","","",""]],
40   ["::23",                                   [":","","","","",""]],
41   ["foo://",                                 ["foo:","","","//","",""]],
42   ["http://a:b@c:29/d",                      ["http:","c","29","/d","",""]],
43   ["http::@c:29",                            ["http:","c","29","/","",""]],
44   ["http://&a:foo(b]c@d:2/",                 ["http:","d","2","/","",""]],
45   ["http://::@c@d:2",                        ["http:","d","2","/","",""]],
46   ["http://foo.com:b@d/",                    ["http:","d","","/","",""]],
47   ["http://foo.com/\\\\@",                   ["http:","foo.com","","//@","",""]],
48   ["http:\\\\\\\\foo.com\\\\",               ["http:","foo.com","","/","",""]],
49   ["http:\\\\\\\\a\\\\b:c\\\\d@foo.com\\\\", ["http:","a","","/b:c/d@foo.com/","",""]],
50   ["foo:/",                                  ["foo:","","","/","",""]],
51   ["foo:/bar.com/",                          ["foo:","","","/bar.com/","",""]],
52   ["foo://///////",                          ["foo:","","","/////////","",""]],
53   ["foo://///////bar.com/",                  ["foo:","","","/////////bar.com/","",""]],
54   ["foo:////://///",                         ["foo:","","","////://///","",""]],
55   ["c:/foo",                                 ["c:","","","/foo","",""]],
56   ["//foo/bar",                              [":","","","","",""]],
57   ["http://foo/path;a??e#f#g",               ["http:","foo","","/path;a","??e","#f#g"]],
58   ["http://foo/abcd?efgh?ijkl",              ["http:","foo","","/abcd","?efgh?ijkl",""]],
59   ["http://foo/abcd#foo?bar",                ["http:","foo","","/abcd","","#foo?bar"]],
60   ["[61:24:74]:98",                          [":","","","","",""]],
61   ["http://[61:27]:98",                      [":","","0","","",""]],
62   ["http:[61:27]/:foo",                      [":","","","","",""]],
63   ["http://[1::2]:3:4",                      [":","","","","",""]],
64   ["http://2001::1",                         [":","","","","",""]],
65   ["http://[2001::1",                        [":","","","","",""]],
66   ["http://2001::1]",                        [":","","","","",""]],
67   ["http://2001::1]:80",                     [":","","","","",""]],
68   ["http://[2001::1]",                       ["http:","[2001::1]","","/","",""]],
69   ["http://[2001::1]:80",                    ["http:","[2001::1]","","/","",""]],
70   ["http://[[::]]",                          [":","","","","",""]],
73 var originalBaseURL = canonicalize(".");
74 setBaseURL("data:text/plain,baseURL");
76 for (var i = 0; i < cases.length; ++i) {
77   shouldBe("segments('" + cases[i][0] + "')",
78            "'" + JSON.stringify(cases[i][1]) + "'");
81 setBaseURL(originalBaseURL);