1 description("Test URL segmentation");
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:","example.org","","/foo/foo.com","",""]],
7 ["\\t :foo.com \\n", ["http:","example.org","","/foo/:foo.com","",""]],
8 [" foo.com ", ["http:","example.org","","/foo/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 ["", ["http:","example.org","","/foo/bar","",""]],
22 [" \\t", ["http:","example.org","","/foo/bar","",""]],
23 [":foo.com/", ["http:","example.org","","/foo/:foo.com/","",""]],
24 [":foo.com\\\\", ["http:","example.org","","/foo/:foo.com/","",""]],
25 [":", ["http:","example.org","","/foo/:","",""]],
26 [":a", ["http:","example.org","","/foo/:a","",""]],
27 [":/", ["http:","example.org","","/foo/:/","",""]],
28 [":\\\\", ["http:","example.org","","/foo/:/","",""]],
29 [":#", ["http:","example.org","","/foo/:","",""]],
30 ["#", ["http:","example.org","","/foo/bar","",""]],
31 ["#/", ["http:","example.org","","/foo/bar","","#/"]],
32 ["#\\\\", ["http:","example.org","","/foo/bar","","#\\\\"]],
33 ["#;?", ["http:","example.org","","/foo/bar","","#;?"]],
34 ["?", ["http:","example.org","","/foo/bar","",""]],
35 ["/", ["http:","example.org","","/","",""]],
36 [":23", ["http:","example.org","","/foo/:23","",""]],
37 ["/:23", ["http:","example.org","","/:23","",""]],
38 ["//", [":","","","","",""]],
39 ["::", ["http:","example.org","","/foo/::","",""]],
40 ["::23", ["http:","example.org","","/foo/::23","",""]],
41 ["foo://", ["foo:","","","//","",""]],
42 ["http://a:b@c:29/d", ["http:","c","29","/d","",""]],
43 ["http::@c:29", ["http:","example.org","","/foo/:@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", ["http:","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", ["http:","example.org","","/foo/[61:24:74]:98","",""]],
61 ["http://[61:27]:98", [":","","0","","",""]],
62 ["http:[61:27]/:foo", ["http:","example.org","","/foo/[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://[[::]]", [":","","","","",""]],
71 ["http:/example.com/", ["http:","example.org","","/example.com/","",""]],
72 ["ftp:/example.com/", ["ftp:","example.com","","/","",""]],
73 ["https:/example.com/", ["https:","example.com","","/","",""]],
74 ["madeupscheme:/example.com/", ["madeupscheme:","","","/example.com/","",""]],
75 ["file:/example.com/", ["file:","","","/example.com/","",""]],
76 ["ftps:/example.com/", ["ftps:","","","/example.com/","",""]],
77 ["gopher:/example.com/", ["gopher:","example.com","","/","",""]],
78 ["ws:/example.com/", ["ws:","example.com","","/","",""]],
79 ["wss:/example.com/", ["wss:","example.com","","/","",""]],
80 ["data:/example.com/", ["data:","","","/example.com/","",""]],
81 ["javascript:/example.com/", ["javascript:","","","/example.com/","",""]],
82 ["mailto:/example.com/", ["mailto:","","","/example.com/","",""]],
83 ["http:example.com/", ["http:","example.org","","/foo/example.com/","",""]],
84 ["ftp:example.com/", ["ftp:","example.com","","/","",""]],
85 ["https:example.com/", ["https:","example.com","","/","",""]],
86 ["madeupscheme:example.com/", ["madeupscheme:","","","example.com/","",""]],
87 ["file:example.com/", ["file:","","","/example.com/","",""]],
88 ["ftps:example.com/", ["ftps:","","","example.com/","",""]],
89 ["gopher:example.com/", ["gopher:","example.com","","/","",""]],
90 ["ws:example.com/", ["ws:","example.com","","/","",""]],
91 ["wss:example.com/", ["wss:","example.com","","/","",""]],
92 ["data:example.com/", ["data:","","","example.com/","",""]],
93 ["javascript:example.com/", ["javascript:","","","example.com/","",""]],
94 ["mailto:example.com/", ["mailto:","","","example.com/","",""]],
96 ["/a/b/c", ["http:","example.org","","/a/b/c","",""]],
97 ["/a/ /c", ["http:","example.org","","/a/%20/c","",""]],
98 ["/a%2fc", ["http:","example.org","","/a%2fc","",""]],
99 ["/a/%2f/c", ["http:","example.org","","/a/%2f/c","",""]],
101 ["#\u03B2", ["http:","example.org","","/foo/bar","","#\u03B2"]],
104 var originalBaseURL = canonicalize(".");
105 setBaseURL("http://example.org/foo/bar");
107 for (var i = 0; i < cases.length; ++i) {
108 shouldBe("segments('" + cases[i][0] + "')",
109 "'" + JSON.stringify(cases[i][1]) + "'");
112 setBaseURL(originalBaseURL);