segments-from-data-url.js revision a94275402997c11dd2e778633dacf4b7e630a35d
1description("Test URL segmentation"); 2 3cases = [ 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","0","/","",""]], 7 ["\\t :foo.com \\n", [":","","0","","",""]], 8 [" foo.com ", [":","","0","","",""]], 9 ["a:\\t foo.com", ["a:","","0"," foo.com","",""]], 10 ["http://f:21/ b ? d # e ", ["http:","f","21","/%20b%20","?%20d%20","# e"]], 11 ["http://f:/c", ["http:","f","0","/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", [":","","0","","",""]], 16 ["http://f: /c", [":","","0","","",""]], 17 ["http://f:\\n/c", [":","","0","","",""]], 18 ["http://f:fifty-two/c", [":","","0","","",""]], 19 ["http://f:999999/c", [":","","0","","",""]], 20 ["http://f: 21 / b ? d # e ", [":","","0","","",""]], 21 ["", ["data:","","0","text/plain,baseURL","",""]], 22 [" \\t", ["data:","","0","text/plain,baseURL","",""]], 23 [":foo.com/", [":","","0","","",""]], 24 [":foo.com\\\\", [":","","0","","",""]], 25 [":", [":","","0","","",""]], 26 [":a", [":","","0","","",""]], 27 [":/", [":","","0","","",""]], 28 [":\\\\", [":","","0","","",""]], 29 [":#", [":","","0","","",""]], 30 ["#", [":","","0","","",""]], 31 ["#/", [":","","0","","",""]], 32 ["#\\\\", [":","","0","","",""]], 33 ["#;?", [":","","0","","",""]], 34 ["?", [":","","0","","",""]], 35 ["/", [":","","0","","",""]], 36 [":23", [":","","0","","",""]], 37 ["/:23", ["data:","","0","/:23","",""]], 38 ["//", [":","","0","","",""]], 39 ["::", [":","","0","","",""]], 40 ["::23", [":","","0","","",""]], 41 ["foo://", ["foo:","","0","//","",""]], 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","0","/","",""]], 47 ["http://foo.com/\\\\@", ["http:","foo.com","0","//@","",""]], 48 ["http:\\\\\\\\foo.com\\\\", ["http:","foo.com","0","/","",""]], 49 ["http:\\\\\\\\a\\\\b:c\\\\d@foo.com\\\\", ["http:","a","0","/b:c/d@foo.com/","",""]], 50 ["foo:/", ["foo:","","0","/","",""]], 51 ["foo:/bar.com/", ["foo:","","0","/bar.com/","",""]], 52 ["foo://///////", ["foo:","","0","/////////","",""]], 53 ["foo://///////bar.com/", ["foo:","","0","/////////bar.com/","",""]], 54 ["foo:////://///", ["foo:","","0","////://///","",""]], 55 ["c:/foo", ["c:","","0","/foo","",""]], 56 ["//foo/bar", [":","","0","","",""]], 57 ["http://foo/path;a??e#f#g", ["http:","foo","0","/path;a","??e","#f#g"]], 58 ["http://foo/abcd?efgh?ijkl", ["http:","foo","0","/abcd","?efgh?ijkl",""]], 59 ["http://foo/abcd#foo?bar", ["http:","foo","0","/abcd","","#foo?bar"]], 60 ["[61:24:74]:98", ["data:","","0","text/[61:24:74]:98","",""]], 61 ["http://[61:27]:98", [":","","0","","",""]], 62 ["http:[61:27]/:foo", [":","","0","","",""]], 63 ["http://[1::2]:3:4", [":","","0","","",""]], 64 ["http://2001::1", [":","","0","","",""]], 65 ["http://[2001::1", [":","","0","","",""]], 66 ["http://2001::1]", [":","","0","","",""]], 67 ["http://2001::1]:80", [":","","0","","",""]], 68 ["http://[2001::1]", ["http:","[2001::1]","0","/","",""]], 69 ["http://[2001::1]:80", ["http:","[2001::1]","0","/","",""]], 70 ["http://[[::]]", [":","","0","","",""]], 71]; 72 73var originalBaseURL = canonicalize("."); 74setBaseURL("data:text/plain,baseURL"); 75 76for (var i = 0; i < cases.length; ++i) { 77 shouldBe("segments('" + cases[i][0] + "')", 78 "'" + JSON.stringify(cases[i][1]) + "'"); 79} 80 81setBaseURL(originalBaseURL); 82 83var successfullyParsed = true; 84