1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.luni.tests.java.net; 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.MalformedURLException; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.URI; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.URISyntaxException; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.testframework.serialization.SerializationTest; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class URITest extends TestCase { 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private URI[] uris; 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private URI[] getUris() throws URISyntaxException { 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (uris != null) { 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return uris; 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uris = new URI[] { 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // single arg constructor 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI( 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://user%60%20info@host/a%20path?qu%60%20ery#fr%5E%20ag"), 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // escaped octets for illegal chars 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI( 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://user%C3%9F%C2%A3info@host:80/a%E2%82%ACpath?qu%C2%A9%C2%AEery#fr%C3%A4%C3%A8g"), 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // escaped octets for unicode chars 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI( 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "ascheme://user\u00DF\u00A3info@host:0/a\u20ACpath?qu\u00A9\u00AEery#fr\u00E4\u00E8g"), 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // unicode chars equivalent to = new 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // URI("ascheme://user\u00df\u00a3info@host:0/a\u0080path?qu\u00a9\u00aeery#fr\u00e4\u00e8g"), 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // multiple arg constructors 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("http", "user%60%20info", "host", 80, "/a%20path", //$NON-NLS-4$ 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "qu%60%20ery", "fr%5E%20ag"), 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // escaped octets for illegal 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("http", "user%C3%9F%C2%A3info", "host", -1, 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "/a%E2%82%ACpath", "qu%C2%A9%C2%AEery", 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "fr%C3%A4%C3%A8g"), 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // escaped octets for unicode 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("ascheme", "user\u00DF\u00A3info", "host", 80, 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "/a\u20ACpath", "qu\u00A9\u00AEery", "fr\u00E4\u00E8g"), 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // unicode chars equivalent to = new 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // URI("ascheme", "user\u00df\u00a3info", "host", 80, 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // "/a\u0080path", "qu\u00a9\u00aeery", "fr\u00e4\u00e8g"), 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("http", "user` info", "host", 81, "/a path", "qu` ery", 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "fr^ ag"), // illegal chars 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("http", "user%info", "host", 0, "/a%path", "que%ry", 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "f%rag"), 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // % as illegal char, not escaped octet 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // urls with undefined components 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("mailto", "user@domain.com", null), 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // no host, path, query or fragment 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("../adirectory/file.html#"), 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // relative path with empty fragment; 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("news", "comp.infosystems.www.servers.unix", null), // 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI(null, null, null, "fragment"), // only fragment 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("telnet://server.org"), // only host 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("http://reg:istry?query"), 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // malformed hostname, therefore registry-based, 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // with query 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("file:///c:/temp/calculate.pl?"), 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // empty authority, non empty path, empty query 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return uris; 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#URI(java.lang.String) 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_ConstructorLjava_lang_String() throws URISyntaxException { 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // tests for public URI(String uri) throws URISyntaxException 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] constructorTests = new String[] { 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://user@www.google.com:45/search?q=helpinfo#somefragment", 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // http with authority, query and fragment 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "ftp://ftp.is.co.za/rfc/rfc1808.txt", // ftp 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles", // gopher 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "mailto:mduerst@ifi.unizh.ch", // mailto 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "news:comp.infosystems.www.servers.unix", // news 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "telnet://melvyl.ucop.edu/", // telnet 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://123.24.17.98/test", // IPv4 authority 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://www.google.com:80/test",// domain name authority 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://joe@[3ffe:2a00:100:7031::1]:80/test", 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // IPv6 authority, with userinfo and port 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "/relative", // relative starting with / 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "//relative", // relative starting with // 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "relative", // relative with no / 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "#fragment",// relative just with fragment 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://user@host:80", // UI, host,port 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://user@host", // ui, host 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://host", // host 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://host:80", // host,port 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://joe@:80", // ui, port (becomes registry-based) 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "file:///foo/bar", // empty authority, non empty path 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "ht?tp://hoe@host:80", // miscellaneous tests 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "mai/lto:hey?joe#man", "http://host/a%20path#frag", 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // path with an escaped octet for space char 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://host/a%E2%82%ACpath#frag", 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // path with escaped octet for unicode char, not USASCII 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://host/a\u20ACpath#frag", 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // path with unicode char, not USASCII equivalent to 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // = "http://host/a\u0080path#frag", 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://host%20name/", // escaped octets in host (becomes 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // registry based) 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://host\u00DFname/", // unicodechar in host (becomes 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // registry based) 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // equivalent to = "http://host\u00dfname/", 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "ht123-+tp://www.google.com:80/test", // legal chars in scheme 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < constructorTests.length; i++) { 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI(constructorTests[i]); 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e) { 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Failed to construct URI for: " + constructorTests[i] 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + " : " + e); 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] constructorTestsInvalid = new String[] { 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http:///a path#frag", // space char in path, not in escaped 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // octet form, with no host 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://host/a[path#frag", // an illegal char, not in escaped 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // octet form, should throw an 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // exception 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://host/a%path#frag", // invalid escape sequence in path 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://host/a%#frag", // incomplete escape sequence in path 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://host#a frag", // space char in fragment, not in 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // escaped octet form, no path 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://host/a#fr#ag", // illegal char in fragment 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http:///path#fr%ag", // invalid escape sequence in fragment, 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // with no host 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://host/path#frag%", // incomplete escape sequence in 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // fragment 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://host/path?a query#frag", // space char in query, not 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // in escaped octet form 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://host?query%ag", // invalid escape sequence in query, no 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // path 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http:///path?query%", // incomplete escape sequence in query, 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // with no host 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "mailto:user^name@fklkf.com" // invalid char in scheme 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // specific part 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int[] constructorTestsInvalidIndices = new int[] { 9, 13, 13, 13, 13, 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 16, 15, 21, 18, 17, 18, 11 }; 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < constructorTestsInvalid.length; i++) { 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI(constructorTestsInvalid[i]); 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Failed to throw URISyntaxException for: " 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + constructorTestsInvalid[i]); 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e) { 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Wrong index in URISytaxException for: " 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + constructorTestsInvalid[i] + " expected: " 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + constructorTestsInvalidIndices[i] + ", received: " 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getIndex(), 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.getIndex() == constructorTestsInvalidIndices[i]); 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String invalid2[] = { 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // authority validation 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://user@[3ffe:2x00:100:7031::1]:80/test", // malformed 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // IPv6 authority 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://[ipv6address]/apath#frag", // malformed ipv6 address 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://[ipv6address/apath#frag", // malformed ipv6 address 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://ipv6address]/apath#frag", // illegal char in host name 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://ipv6[address/apath#frag", 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://ipv6addr]ess/apath#frag", 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://ipv6address[]/apath#frag", 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // illegal char in username... 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://us[]er@host/path?query#frag", "http://host name/path", // illegal 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // char 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // in 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // authority 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://host^name#fragment", // illegal char in authority 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "telnet://us er@hostname/", // illegal char in authority 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // missing components 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "//", // Authority expected 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "ascheme://", // Authority expected 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "ascheme:", // Scheme-specific part expected 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // scheme validation 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "a scheme://reg/", // illegal char 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "1scheme://reg/", // non alpha char as 1st char 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "asche\u00dfme:ssp", // unicode char , not USASCII 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "asc%20heme:ssp" // escape octets 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < invalid2.length; i++) { 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI(invalid2[i]); 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Failed to throw URISyntaxException for: " + invalid2[i]); 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e) { 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Regression test for HARMONY-23 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("%3"); 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Assert 0: URI constructor failed to throw exception on invalid input."); 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e) { 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Assert 1: Wrong index in URISyntaxException.", 0, e 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getIndex()); 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Regression test for HARMONY-25 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // if port value is negative, the authority should be considered 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // registry-based. 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI uri = new URI("http://host:-8096/path/index.html"); 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Assert 2: returned wrong port value,", -1, uri.getPort()); 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Assert 3: returned wrong host value,", uri.getHost()); 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri.parseServerAuthority(); 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Assert 4: Expected URISyntaxException"); 237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e) { 238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri = new URI("http", "//myhost:-8096", null); 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Assert 5: returned wrong port value,", -1, uri.getPort()); 243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Assert 6: returned wrong host value,", uri.getHost()); 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri.parseServerAuthority(); 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Assert 7: Expected URISyntaxException"); 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e) { 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#URI(java.lang.String) 254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_URI_String() { 256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI myUri = new URI(":abc@mymail.com"); 258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("TestA, URISyntaxException expected, but not received."); 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e) { 260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("TestA, Wrong URISyntaxException index, ", 0, e 261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getIndex()); 262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI uri = new URI("path[one"); 266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("TestB, URISyntaxException expected, but not received."); 267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e1) { 268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("TestB, Wrong URISyntaxException index, ", 4, e1 269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getIndex()); 270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI uri = new URI(" "); 274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("TestC, URISyntaxException expected, but not received."); 275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e2) { 276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("TestC, Wrong URISyntaxException index, ", 0, e2 277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getIndex()); 278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#URI(java.lang.String, java.lang.String, 283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * java.lang.String) 284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_ConstructorLjava_lang_StringLjava_lang_StringLjava_lang_String() 286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws URISyntaxException { 287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI uri = new URI("mailto", "mduerst@ifi.unizh.ch", null); 288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("wrong userinfo", uri.getUserInfo()); 289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("wrong hostname", uri.getHost()); 290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("wrong authority", uri.getAuthority()); 291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("wrong port number", -1, uri.getPort()); 292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("wrong path", uri.getPath()); 293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("wrong query", uri.getQuery()); 294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("wrong fragment", uri.getFragment()); 295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("wrong SchemeSpecificPart", "mduerst@ifi.unizh.ch", uri 296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getSchemeSpecificPart()); 297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // scheme specific part can not be null 299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri = new URI("mailto", null, null); 301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Expected URISyntaxException"); 302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e) { 303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // scheme needs to start with an alpha char 307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri = new URI("3scheme", "//authority/path", "fragment"); 309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Expected URISyntaxException"); 310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e) { 311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // scheme can not be empty string 315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri = new URI("", "//authority/path", "fragment"); 317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Expected URISyntaxException"); 318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e) { 319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#URI(java.lang.String, java.lang.String, 325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * java.lang.String, int, java.lang.String, java.lang.String, 326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * java.lang.String) 327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_ConstructorLjava_lang_StringLjava_lang_StringLjava_lang_StringILjava_lang_StringLjava_lang_StringLjava_lang_String() { 329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // check for URISyntaxException for invalid Server Authority 330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes construct1("http", "user", "host\u00DFname", -1, "/file", "query", 331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "fragment"); // unicode chars in host name 332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // equivalent to construct1("http", "user", "host\u00dfname", -1, 333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // "/file", "query", "fragment"); 334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes construct1("http", "user", "host%20name", -1, "/file", "query", 335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "fragment"); // escaped octets in host name 336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes construct1("http", "user", "host name", -1, "/file", "query", 337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "fragment"); // illegal char in host name 338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes construct1("http", "user", "host]name", -1, "/file", "query", 339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "fragment"); // illegal char in host name 340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // missing host name 342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes construct1("http", "user", "", 80, "/file", "query", "fragment"); 343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // missing host name 345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes construct1("http", "user", "", -1, "/file", "query", "fragment"); 346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // malformed ipv4 address 348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes construct1("telnet", null, "256.197.221.200", -1, null, null, null); 349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // malformed ipv4 address 351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes construct1("ftp", null, "198.256.221.200", -1, null, null, null); 352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // These tests fail on other implementations... 354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // construct1("http", "user", null, 80, "/file", "query", "fragment"); 355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // //missing host name 356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // construct1("http", "user", null, -1, "/file", "query", "fragment"); 357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // //missing host name 358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // check for URISyntaxException for invalid scheme 360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes construct1("ht\u00DFtp", "user", "hostname", -1, "/file", "query", 361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "fragment"); // unicode chars in scheme 362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // equivalent to construct1("ht\u00dftp", "user", "hostname", -1, 363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // "/file", 364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // "query", "fragment"); 365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes construct1("ht%20tp", "user", "hostname", -1, "/file", "query", 367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "fragment"); // escaped octets in scheme 368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes construct1("ht tp", "user", "hostname", -1, "/file", "query", 369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "fragment"); // illegal char in scheme 370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes construct1("ht]tp", "user", "hostname", -1, "/file", "query", 371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "fragment"); // illegal char in scheme 372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // relative path with scheme 374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes construct1("http", "user", "hostname", -1, "relative", "query", 375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "fragment"); // unicode chars in scheme 376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // functional test 378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI uri; 379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri = new URI("http", "us:e@r", "hostname", 85, "/file/dir#/qu?e/", 381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "qu?er#y", "frag#me?nt"); 382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("wrong userinfo", "us:e@r", uri.getUserInfo()); 383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("wrong hostname", "hostname", uri.getHost()); 384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("wrong port number", 85, uri.getPort()); 385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("wrong path", "/file/dir#/qu?e/", uri.getPath()); 386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("wrong query", "qu?er#y", uri.getQuery()); 387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("wrong fragment", "frag#me?nt", uri.getFragment()); 388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("wrong SchemeSpecificPart", 389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "//us:e@r@hostname:85/file/dir#/qu?e/?qu?er#y", uri 390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getSchemeSpecificPart()); 391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e) { 392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Unexpected Exception: " + e); 393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * helper method checking if the 7 arg constructor throws URISyntaxException 398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * for a given set of parameters 399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private void construct1(String scheme, String userinfo, String host, 401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int port, String path, String query, String fragment) { 402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI uri = new URI(scheme, userinfo, host, port, path, query, 404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fragment); 405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Expected URISyntaxException not thrown for URI: " 406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + uri.toString()); 407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e) { 408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // this constructor throws URISyntaxException for malformed server 409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // based authorities 410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws URISyntaxException 415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#URI(java.lang.String, java.lang.String, 416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * java.lang.String, java.lang.String) 417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_ConstructorLjava_lang_StringLjava_lang_StringLjava_lang_StringLjava_lang_String() 419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws URISyntaxException { 420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // relative path 421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI myUri = new URI("http", "www.joe.com", "relative", "jimmy"); 423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("URISyntaxException expected but not received."); 424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e) { 425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // valid parameters for this constructor 429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI uri; 430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri = new URI("http", "www.joe.com", "/path", "jimmy"); 432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // illegal char in path 434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri = new URI("http", "www.host.com", "/path?q", "somefragment"); 435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // empty fragment 437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri = new URI("ftp", "ftp.is.co.za", "/rfc/rfc1808.txt", ""); 438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // path with escaped octet for unicode char, not USASCII 440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri = new URI("http", "host", "/a%E2%82%ACpath", "frag"); 441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // frag with unicode char, not USASCII 443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // equivalent to = uri = new URI("http", "host", "/apath", 444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // "\u0080frag"); 445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri = new URI("http", "host", "/apath", "\u20ACfrag"); 446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Regression test for Harmony-1693 448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI(null, null, null, null); 449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // regression for Harmony-1346 451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri = new URI("http", ":2:3:4:5:6:7:8", "/apath", "\u20ACfrag"); 453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw URISyntaxException"); 454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e) { 455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws URISyntaxException 461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#URI(java.lang.String, java.lang.String, 462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * java.lang.String, java.lang.String, java.lang.String) 463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_ConstructorLjava_lang_StringLjava_lang_StringLjava_lang_StringLjava_lang_StringLjava_lang_String() 465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws URISyntaxException { 466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // URISyntaxException on relative path 467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI myUri = new URI("http", "www.joe.com", "relative", "query", 469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "jimmy"); 470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("URISyntaxException expected but not received."); 471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e) { 472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test if empty authority is parsed into undefined host, userinfo and 476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // port and if unicode chars and escaped octets in components are 477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // preserved, illegal chars are quoted 478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI uri = new URI("ht12-3+tp", "", "/p#a%E2%82%ACth", "q^u%25ery", 479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "f/r\u00DFag"); 480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("wrong scheme", "ht12-3+tp", uri.getScheme()); 482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("wrong authority", uri.getUserInfo()); 483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("wrong userinfo", uri.getUserInfo()); 484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("wrong hostname", uri.getHost()); 485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("wrong port number", -1, uri.getPort()); 486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("wrong path", "/p#a%E2%82%ACth", uri.getPath()); 487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("wrong query", "q^u%25ery", uri.getQuery()); 488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("wrong fragment", "f/r\u00DFag", uri.getFragment()); 489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // equivalent to = assertTrue("wrong fragment", 490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // uri.getFragment().equals("f/r\u00dfag")); 491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("wrong SchemeSpecificPart", "///p#a%E2%82%ACth?q^u%25ery", 492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri.getSchemeSpecificPart()); 493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("wrong RawSchemeSpecificPart", 494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "///p%23a%25E2%2582%25ACth?q%5Eu%2525ery", uri 495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getRawSchemeSpecificPart()); 496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "incorrect toString()", 498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "ht12-3+tp:///p%23a%25E2%2582%25ACth?q%5Eu%2525ery#f/r\u00dfag", 499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri.toString()); 500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("incorrect toASCIIString()", 501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "ht12-3+tp:///p%23a%25E2%2582%25ACth?q%5Eu%2525ery#f/r%C3%9Fag", uri 503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .toASCIIString()); 504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws URISyntaxException 508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#URI(java.lang.String, java.lang.String, 509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * java.lang.String, java.lang.String, java.lang.String) 510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_fiveArgConstructor() throws URISyntaxException { 512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // accept [] as part of valid ipv6 host name 513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI uri = new URI("ftp", "[0001:1234::0001]", "/dir1/dir2", "query", 514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "frag"); 515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Returned incorrect host", "[0001:1234::0001]", uri 516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getHost()); 517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // do not accept [] as part of invalid ipv6 address 519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri = new URI("ftp", "[www.abc.com]", "/dir1/dir2", "query", "frag"); 521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Expected URISyntaxException for invalid ipv6 address"); 522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e) { 523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // do not accept [] as part of user info 527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri = new URI("ftp", "[user]@host", "/dir1/dir2", "query", "frag"); 529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Expected URISyntaxException invalid user info"); 530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e) { 531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#compareTo(java.lang.Object) 537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_compareToLjava_lang_Object() throws Exception { 539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // compareTo tests 540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[][] compareToData = new String[][] { 542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // scheme tests 543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "http:test", "" }, // scheme null, scheme not null 544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "", "http:test" }, // reverse 545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "http:test", "ftp:test" }, // schemes different 546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "/test", "/test" }, // schemes null 547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "http://joe", "http://joe" }, // schemes same 548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "http://joe", "hTTp://joe" }, // schemes same ignoring case 549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // opacity : one opaque, the other not 551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "http:opaque", "http://nonopaque" }, 552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "http://nonopaque", "http:opaque" }, 553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "mailto:abc", "mailto:abc" }, // same ssp 554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "mailto:abC", "mailto:Abc" }, // different, by case 555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "mailto:abc", "mailto:def" }, // different by letter 556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "mailto:abc#ABC", "mailto:abc#DEF" }, 557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "mailto:abc#ABC", "mailto:abc#ABC" }, 558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "mailto:abc#DEF", "mailto:abc#ABC" }, 559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // hierarchical tests.. 561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // different authorities 563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "//www.test.com/test", "//www.test2.com/test" }, 564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "/nullauth", "//nonnullauth/test" }, // one null authority 566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "//nonnull", "/null" }, 567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "/hello", "/hello" }, // both authorities null 568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // different userinfo 569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "http://joe@test.com:80", "http://test.com" }, 570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "http://jim@test.com", "http://james@test.com" }, 571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // different hostnames 572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "http://test.com", "http://toast.com" }, 573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "http://test.com:80", "test.com:87" }, // different ports 574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "http://test.com", "http://test.com:80" }, 575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // different paths 576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "http://test.com:91/dir1", "http://test.com:91/dir2" }, 577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // one null host 578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "http:/hostless", "http://hostfilled.com/hostless" }, 579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // queries 581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "http://test.com/dir?query", "http://test.com/dir?koory" }, 582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "/test?query", "/test" }, 583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "/test", "/test?query" }, 584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "/test", "/test" }, 585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // fragments 587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "ftp://test.com/path?query#frag", "ftp://test.com/path?query" }, 588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "ftp://test.com/path?query", "ftp://test.com/path?query#frag" }, 589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "#frag", "#frag" }, { "p", "" }, 590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "http://www.google.com", "#test" } // miscellaneous 592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int[] compareToResults = { 1, -1, 2, 0, 0, 0, 1, -1, 0, 32, -3, -3, 0, 595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3, -4, -1, 1, 0, 1, 8, -10, -12, -81, -1, -1, 6, 1, -1, 0, 1, 596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes -1, 0, 1, 1, }; 597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test compareTo functionality 599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < compareToResults.length; i++) { 600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI b = new URI(compareToData[i][0]); 601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI r = new URI(compareToData[i][1]); 602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (b.compareTo(r) != compareToResults[i]) { 603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Test " + i + ": " + compareToData[i][0] + " compared to " 604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + compareToData[i][1] + " -> " + b.compareTo(r) 605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + " rather than " + compareToResults[i]); 606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws URISyntaxException 612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#compareTo(java.lang.Object) 613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_compareTo2() throws URISyntaxException { 615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI uri, uri2; 616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test URIs with host names with different casing 618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri = new URI("http://AbC.cOm/root/news"); 619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri2 = new URI("http://aBc.CoM/root/news"); 620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("TestA", 0, uri.compareTo(uri2)); 621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("TestB", 0, uri.compareTo(uri2)); 622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test URIs with one undefined component 624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri = new URI("http://abc.com:80/root/news"); 625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri2 = new URI("http://abc.com/root/news"); 626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("TestC", uri.compareTo(uri2) > 0); 627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("TestD", uri2.compareTo(uri) < 0); 628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test URIs with one undefined component 630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri = new URI("http://user@abc.com/root/news"); 631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri2 = new URI("http://abc.com/root/news"); 632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("TestE", uri.compareTo(uri2) > 0); 633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("TestF", uri2.compareTo(uri) < 0); 634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#create(java.lang.String) 638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_createLjava_lang_String() { 640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI myUri = URI.create("a scheme://reg/"); 642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IllegalArgumentException expected but not received."); 643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#equals(java.lang.Object) 650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_equalsLjava_lang_Object() throws Exception { 652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[][] equalsData = new String[][] { 653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "", "" }, // null frags 654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "/path", "/path#frag" }, 655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "#frag", "#frag2" }, 656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "#frag", "#FRag" }, 657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // case insensitive on hex escapes 659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "#fr%4F", "#fr%4f" }, 660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "scheme:test", "scheme2:test" }, // scheme stuff 662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "test", "http:test" }, 663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "http:test", "test" }, 664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "SCheme:test", "schEMe:test" }, 665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // hierarchical/opaque mismatch 667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "mailto:jim", "mailto://jim" }, 668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "mailto://test", "mailto:test" }, 669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // opaque 671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "mailto:name", "mailto:name" }, 672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "mailtO:john", "mailto:jim" }, 673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test hex case insensitivity on ssp 675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "mailto:te%4Fst", "mailto:te%4fst" }, 676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "mailto:john#frag", "mailto:john#frag2" }, 678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // hierarchical 680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "/test", "/test" }, // paths 681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "/te%F4st", "/te%f4st" }, 682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "/TEst", "/teSt" }, 683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "", "/test" }, 684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // registry based because they don't resolve properly to 686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // server-based add more tests here 687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "//host.com:80err", "//host.com:80e" }, 688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "//host.com:81e%Abrr", "//host.com:81e%abrr" }, 689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "/test", "//auth.com/test" }, 691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "//test.com", "/test" }, 692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "//test.com", "//test.com" }, // hosts 694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // case insensitivity for hosts 696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "//HoSt.coM/", "//hOsT.cOm/" }, 697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "//te%ae.com", "//te%aE.com" }, 698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "//test.com:80", "//test.com:81" }, 699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "//joe@test.com:80", "//test.com:80" }, 700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "//jo%3E@test.com:82", "//jo%3E@test.com:82" }, 701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "//test@test.com:85", "//test@test.com" }, }; 702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean[] equalsResults = new boolean[] { true, false, false, false, 704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true, false, false, false, true, false, false, true, false, 705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true, false, true, true, false, false, false, true, false, 706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes false, true, true, true, false, false, true, false, }; 707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test equals functionality 709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < equalsResults.length; i++) { 710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI b = new URI(equalsData[i][0]); 711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI r = new URI(equalsData[i][1]); 712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (b.equals(r) != equalsResults[i]) { 713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Error: " + equalsData[i][0] + " == " + equalsData[i][1] 714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "? -> " + b.equals(r) + " expected " 715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + equalsResults[i]); 716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws URISyntaxException 723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#equals(java.lang.Object) 724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_equals2() throws URISyntaxException { 726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test URIs with empty string authority 727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI uri = new URI("http:///~/dictionary"); 728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI uri2 = new URI(uri.getScheme(), uri.getAuthority(), uri.getPath(), 729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri.getQuery(), uri.getFragment()); 730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(uri2.equals(uri)); 731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test URIs with port number 733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri = new URI("http://abc.com%E2%82%AC:88/root/news"); 734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri2 = new URI("http://abc.com%E2%82%AC/root/news"); 735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(uri.equals(uri2)); 736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(uri2.equals(uri)); 737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test URIs with host names with different casing 739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri = new URI("http://AbC.cOm/root/news"); 740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri2 = new URI("http://aBc.CoM/root/news"); 741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(uri.equals(uri2)); 742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(uri2.equals(uri)); 743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#getAuthority() 747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getAuthority() throws Exception { 749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI[] uris = getUris(); 750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] getAuthorityResults = { 752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user` info@host", 753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user\u00DF\u00A3info@host:80", // = 754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // "user\u00df\u00a3info@host:80", 755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user\u00DF\u00A3info@host:0", // = 756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // "user\u00df\u00a3info@host:0", 757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user%60%20info@host:80", 758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user%C3%9F%C2%A3info@host", 759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user\u00DF\u00A3info@host:80", // = 760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // "user\u00df\u00a3info@host:80", 761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user` info@host:81", "user%info@host:0", null, null, null, 762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null, "server.org", "reg:istry", null, }; 763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < uris.length; i++) { 765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String result = uris[i].getAuthority(); 766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (getAuthorityResults[i] != result 767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && !getAuthorityResults[i].equals(result)) { 768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Error: For URI \"" + uris[i].toString() 769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "\", getAuthority() returned: " + result 770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ", expected: " + getAuthorityResults[i]); 771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // regression test for HARMONY-1119 774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(new URI(null, null, null, 127, null, null, null) 775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getAuthority()); 776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#getAuthority() 780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getAuthority2() throws Exception { 782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // tests for URIs with empty string authority component 783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI uri = new URI("file:///tmp/"); 785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Authority not null for URI: " + uri, uri.getAuthority()); 786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Host not null for URI " + uri, uri.getHost()); 787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("testA, toString() returned incorrect value", 788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "file:///tmp/", uri.toString()); 789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri = new URI("file", "", "/tmp", "frag"); 791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Authority not null for URI: " + uri, uri.getAuthority()); 792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Host not null for URI " + uri, uri.getHost()); 793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("testB, toString() returned incorrect value", 794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "file:///tmp#frag", uri.toString()); 795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri = new URI("file", "", "/tmp", "query", "frag"); 797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Authority not null for URI: " + uri, uri.getAuthority()); 798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Host not null for URI " + uri, uri.getHost()); 799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("test C, toString() returned incorrect value", 800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "file:///tmp?query#frag", uri.toString()); 801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // after normalization the host string info may be lost since the 803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // uri string is reconstructed 804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri = new URI("file", "", "/tmp/a/../b/c", "query", "frag"); 805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI uri2 = uri.normalize(); 806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Authority not null for URI: " + uri2, uri.getAuthority()); 807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Host not null for URI " + uri2, uri.getHost()); 808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("test D, toString() returned incorrect value", 809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "file:///tmp/a/../b/c?query#frag", uri.toString()); 810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("test E, toString() returned incorrect value", 811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "file:/tmp/b/c?query#frag", uri2.toString()); 812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // the empty string host will give URISyntaxException 814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // for the 7 arg constructor 815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri = new URI("file", "user", "", 80, "/path", "query", "frag"); 817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Expected URISyntaxException"); 818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e) { 819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#getFragment() 825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getFragment() throws Exception { 827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI[] uris = getUris(); 828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] getFragmentResults = { "fr^ ag", "fr\u00E4\u00E8g", // = 830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // "fr\u00e4\u00e8g", 831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "fr\u00E4\u00E8g", // = "fr\u00e4\u00e8g", 832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "fr%5E%20ag", "fr%C3%A4%C3%A8g", "fr\u00E4\u00E8g", // = 833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // "fr\u00e4\u00e8g", 834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "fr^ ag", "f%rag", null, "", null, "fragment", null, null, null }; 835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < uris.length; i++) { 837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String result = uris[i].getFragment(); 838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (getFragmentResults[i] != result 839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && !getFragmentResults[i].equals(result)) { 840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Error: For URI \"" + uris[i].toString() 841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "\", getFragment() returned: " + result 842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ", expected: " + getFragmentResults[i]); 843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#getHost() 849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getHost() throws Exception { 851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI[] uris = getUris(); 852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] getHostResults = { "host", "host", "host", "host", "host", 854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "host", "host", "host", null, null, null, null, "server.org", 855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null, null }; 856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < uris.length; i++) { 858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String result = uris[i].getHost(); 859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (getHostResults[i] != result 860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && !getHostResults[i].equals(result)) { 861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Error: For URI \"" + uris[i].toString() 862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "\", getHost() returned: " + result + ", expected: " 863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + getHostResults[i]); 864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#getPath() 870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getPath() throws Exception { 872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI[] uris = getUris(); 873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] getPathResults = { "/a path", 875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "/a\u20ACpath", // = "/a\u0080path", 876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "/a\u20ACpath", // = "/a\u0080path", 877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "/a%20path", "/a%E2%82%ACpath", 878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "/a\u20ACpath", // = "/a\u0080path", 879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "/a path", "/a%path", null, "../adirectory/file.html", null, 880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "", "", "", "/c:/temp/calculate.pl" }; 881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < uris.length; i++) { 883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String result = uris[i].getPath(); 884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (getPathResults[i] != result 885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && !getPathResults[i].equals(result)) { 886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Error: For URI \"" + uris[i].toString() 887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "\", getPath() returned: " + result + ", expected: " 888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + getPathResults[i]); 889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#getPort() 895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getPort() throws Exception { 897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI[] uris = getUris(); 898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int[] getPortResults = { -1, 80, 0, 80, -1, 80, 81, 0, -1, -1, -1, -1, 900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes -1, -1, -1 }; 901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < uris.length; i++) { 903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int result = uris[i].getPort(); 904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Error: For URI \"" + uris[i].toString() 905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "\", getPort() returned: " + result + ", expected: " 906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + getPortResults[i], result == getPortResults[i]); 907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#getPort() 912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getPort2() throws Exception { 914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // if port value is negative, the authority should be 915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // consider registry based. 916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI uri = new URI("http://myhost:-8096/site/index.html"); 918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("TestA, returned wrong port value,", -1, uri.getPort()); 919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("TestA, returned wrong host value,", uri.getHost()); 920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri.parseServerAuthority(); 922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("TestA, Expected URISyntaxException"); 923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e) { 924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri = new URI("http", "//myhost:-8096", null); 928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("TestB returned wrong port value,", -1, uri.getPort()); 929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("TestB returned wrong host value,", uri.getHost()); 930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri.parseServerAuthority(); 932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("TestB, Expected URISyntaxException"); 933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e) { 934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#getQuery() 940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getQuery() throws Exception { 942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI[] uris = getUris(); 943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] getQueryResults = { "qu` ery", "qu\u00A9\u00AEery", // = 945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // "qu\u00a9\u00aeery", 946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "qu\u00A9\u00AEery", // = "qu\u00a9\u00aeery", 947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "qu%60%20ery", "qu%C2%A9%C2%AEery", "qu\u00A9\u00AEery", // = 948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // "qu\u00a9\u00aeery", 949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "qu` ery", "que%ry", null, null, null, null, null, "query", "" }; 950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < uris.length; i++) { 952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String result = uris[i].getQuery(); 953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (getQueryResults[i] != result 954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && !getQueryResults[i].equals(result)) { 955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Error: For URI \"" + uris[i].toString() 956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "\", getQuery() returned: " + result + ", expected: " 957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + getQueryResults[i]); 958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#getRawAuthority() 964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getRawAuthority() throws Exception { 966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI[] uris = getUris(); 967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] getRawAuthorityResults = { 969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user%60%20info@host", 970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user%C3%9F%C2%A3info@host:80", 971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user\u00DF\u00A3info@host:0", // = 972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // "user\u00df\u00a3info@host:0", 973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user%2560%2520info@host:80", 974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user%25C3%259F%25C2%25A3info@host", 975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user\u00DF\u00A3info@host:80", // = 976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // "user\u00df\u00a3info@host:80", 977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user%60%20info@host:81", "user%25info@host:0", null, null, 978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null, null, "server.org", "reg:istry", null }; 979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < uris.length; i++) { 981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String result = uris[i].getRawAuthority(); 982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (getRawAuthorityResults[i] != result 983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && !getRawAuthorityResults[i].equals(result)) { 984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Error: For URI \"" + uris[i].toString() 985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "\", getRawAuthority() returned: " + result 986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ", expected: " + getRawAuthorityResults[i]); 987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#getRawFragment() 993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getRawFragment() throws Exception { 995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI[] uris = getUris(); 996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] getRawFragmentResults = { "fr%5E%20ag", 998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "fr%C3%A4%C3%A8g", 999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "fr\u00E4\u00E8g", // = "fr\u00e4\u00e8g", 1000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "fr%255E%2520ag", "fr%25C3%25A4%25C3%25A8g", 1001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "fr\u00E4\u00E8g", // = 1002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // "fr\u00e4\u00e8g", 1003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "fr%5E%20ag", "f%25rag", null, "", null, "fragment", null, 1004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null, null }; 1005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < uris.length; i++) { 1007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String result = uris[i].getRawFragment(); 1008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (getRawFragmentResults[i] != result 1009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && !getRawFragmentResults[i].equals(result)) { 1010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Error: For URI \"" + uris[i].toString() 1011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "\", getRawFragment() returned: " + result 1012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ", expected: " + getRawFragmentResults[i]); 1013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#getRawPath() 1019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getRawPath() throws Exception { 1021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI[] uris = getUris(); 1022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] getRawPathResults = { "/a%20path", 1024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "/a%E2%82%ACpath", 1025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "/a\u20ACpath", // = "/a\u0080path", 1026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "/a%2520path", "/a%25E2%2582%25ACpath", 1027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "/a\u20ACpath", // = 1028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // "/a\u0080path", 1029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "/a%20path", "/a%25path", null, "../adirectory/file.html", 1030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null, "", "", "", "/c:/temp/calculate.pl" }; 1031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < uris.length; i++) { 1033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String result = uris[i].getRawPath(); 1034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (getRawPathResults[i] != result 1035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && !getRawPathResults[i].equals(result)) { 1036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Error: For URI \"" + uris[i].toString() 1037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "\", getRawPath() returned: " + result 1038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ", expected: " + getRawPathResults[i]); 1039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#getRawQuery() 1045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getRawQuery() throws Exception { 1047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI[] uris = getUris(); 1048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] getRawQueryResults = { 1050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "qu%60%20ery", 1051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "qu%C2%A9%C2%AEery", 1052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "qu\u00A9\u00AEery", // = "qu\u00a9\u00aeery", 1053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "qu%2560%2520ery", 1054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "qu%25C2%25A9%25C2%25AEery", 1055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "qu\u00A9\u00AEery", // = "qu\u00a9\u00aeery", 1056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "qu%60%20ery", "que%25ry", null, null, null, null, null, 1057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "query", "" }; 1058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < uris.length; i++) { 1060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String result = uris[i].getRawQuery(); 1061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (getRawQueryResults[i] != result 1062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && !getRawQueryResults[i].equals(result)) { 1063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Error: For URI \"" + uris[i].toString() 1064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "\", getRawQuery() returned: " + result 1065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ", expected: " + getRawQueryResults[i]); 1066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#getRawSchemeSpecificPart() 1073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getRawSchemeSpecificPart() throws Exception { 1075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI[] uris = getUris(); 1076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] getRawSspResults = { 1078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "//user%60%20info@host/a%20path?qu%60%20ery", 1079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "//user%C3%9F%C2%A3info@host:80/a%E2%82%ACpath?qu%C2%A9%C2%AEery", 1080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "//user\u00DF\u00A3info@host:0/a\u20ACpath?qu\u00A9\u00AEery", // = 1081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // "//user\u00df\u00a3info@host:0/a\u0080path?qu\u00a9\u00aeery" 1082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "//user%2560%2520info@host:80/a%2520path?qu%2560%2520ery", 1083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "//user%25C3%259F%25C2%25A3info@host/a%25E2%2582%25ACpath?qu%25C2%25A9%25C2%25AEery", 1084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "//user\u00DF\u00A3info@host:80/a\u20ACpath?qu\u00A9\u00AEery", // = 1085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // "//user\u00df\u00a3info@host:80/a\u0080path?qu\u00a9\u00aeery" 1086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "//user%60%20info@host:81/a%20path?qu%60%20ery", 1087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "//user%25info@host:0/a%25path?que%25ry", "user@domain.com", 1088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "../adirectory/file.html", "comp.infosystems.www.servers.unix", 1089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "", "//server.org", "//reg:istry?query", 1090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "///c:/temp/calculate.pl?" }; 1091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < uris.length; i++) { 1093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String result = uris[i].getRawSchemeSpecificPart(); 1094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!getRawSspResults[i].equals(result)) { 1095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Error: For URI \"" + uris[i].toString() 1096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "\", getRawSchemeSpecificPart() returned: " + result 1097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ", expected: " + getRawSspResults[i]); 1098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#getRawUserInfo() 1104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getRawUserInfo() throws URISyntaxException { 1106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI[] uris = getUris(); 1107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] getRawUserInfoResults = { 1109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user%60%20info", 1110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user%C3%9F%C2%A3info", 1111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user\u00DF\u00A3info", // = "user\u00df\u00a3info", 1112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user%2560%2520info", 1113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user%25C3%259F%25C2%25A3info", 1114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user\u00DF\u00A3info", // = "user\u00df\u00a3info", 1115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user%60%20info", "user%25info", null, null, null, null, null, 1116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null, null }; 1117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < uris.length; i++) { 1119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String result = uris[i].getRawUserInfo(); 1120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (getRawUserInfoResults[i] != result 1121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && !getRawUserInfoResults[i].equals(result)) { 1122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Error: For URI \"" + uris[i].toString() 1123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "\", getRawUserInfo() returned: " + result 1124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ", expected: " + getRawUserInfoResults[i]); 1125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#getScheme() 1131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getScheme() throws Exception { 1133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI[] uris = getUris(); 1134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] getSchemeResults = { "http", "http", "ascheme", "http", 1136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http", "ascheme", "http", "http", "mailto", null, "news", 1137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null, "telnet", "http", "file" }; 1138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < uris.length; i++) { 1140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String result = uris[i].getScheme(); 1141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (getSchemeResults[i] != result 1142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && !getSchemeResults[i].equals(result)) { 1143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Error: For URI \"" + uris[i].toString() 1144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "\", getScheme() returned: " + result 1145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ", expected: " + getSchemeResults[i]); 1146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#getSchemeSpecificPart() 1152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getSchemeSpecificPart() throws Exception { 1154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI[] uris = getUris(); 1155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] getSspResults = { 1157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "//user` info@host/a path?qu` ery", 1158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "//user\u00DF\u00A3info@host:80/a\u20ACpath?qu\u00A9\u00AEery", // = 1159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // "//user\u00df\u00a3info@host:80/a\u0080path?qu\u00a9\u00aeery", 1160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "//user\u00DF\u00A3info@host:0/a\u20ACpath?qu\u00A9\u00AEery", // = 1161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // "//user\u00df\u00a3info@host:0/a\u0080path?qu\u00a9\u00aeery", 1162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "//user%60%20info@host:80/a%20path?qu%60%20ery", 1163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "//user%C3%9F%C2%A3info@host/a%E2%82%ACpath?qu%C2%A9%C2%AEery", 1164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "//user\u00DF\u00A3info@host:80/a\u20ACpath?qu\u00A9\u00AEery", // = 1165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // "//user\u00df\u00a3info@host:80/a\u0080path?qu\u00a9\u00aeery", 1166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "//user` info@host:81/a path?qu` ery", 1167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "//user%info@host:0/a%path?que%ry", "user@domain.com", 1168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "../adirectory/file.html", "comp.infosystems.www.servers.unix", 1169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "", "//server.org", "//reg:istry?query", 1170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "///c:/temp/calculate.pl?" }; 1171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < uris.length; i++) { 1173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String result = uris[i].getSchemeSpecificPart(); 1174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!getSspResults[i].equals(result)) { 1175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Error: For URI \"" + uris[i].toString() 1176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "\", getSchemeSpecificPart() returned: " + result 1177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ", expected: " + getSspResults[i]); 1178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#getUserInfo() 1185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getUserInfo() throws Exception { 1187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI[] uris = getUris(); 1188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] getUserInfoResults = { 1190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user` info", 1191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user\u00DF\u00A3info", // = 1192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // "user\u00df\u00a3info", 1193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user\u00DF\u00A3info", // = "user\u00df\u00a3info", 1194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user%60%20info", 1195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user%C3%9F%C2%A3info", 1196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user\u00DF\u00A3info", // = "user\u00df\u00a3info", 1197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "user` info", "user%info", null, null, null, null, null, null, 1198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null }; 1199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < uris.length; i++) { 1201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String result = uris[i].getUserInfo(); 1202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (getUserInfoResults[i] != result 1203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && !getUserInfoResults[i].equals(result)) { 1204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Error: For URI \"" + uris[i].toString() 1205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "\", getUserInfo() returned: " + result 1206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ", expected: " + getUserInfoResults[i]); 1207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#hashCode() 1213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hashCode() throws Exception { 1215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[][] hashCodeData = new String[][] { 1216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "", "" }, // null frags 1217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "/path", "/path#frag" }, 1218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "#frag", "#frag2" }, 1219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "#frag", "#FRag" }, 1220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "#fr%4F", "#fr%4F" }, // case insensitive on hex escapes 1222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "scheme:test", "scheme2:test" }, // scheme 1224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "test", "http:test" }, 1225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "http:test", "test" }, 1226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // case insensitivity for scheme 1228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "SCheme:test", "schEMe:test" }, 1229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // hierarchical/opaque mismatch 1231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "mailto:jim", "mailto://jim" }, 1232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "mailto://test", "mailto:test" }, 1233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // opaque 1235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "mailto:name", "mailto:name" }, 1236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "mailtO:john", "mailto:jim" }, 1237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "mailto:te%4Fst", "mailto:te%4Fst" }, 1238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "mailto:john#frag", "mailto:john#frag2" }, 1239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // hierarchical 1241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "/test/", "/test/" }, // paths 1242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "/te%F4st", "/te%F4st" }, 1243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "/TEst", "/teSt" }, 1244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "", "/test" }, 1245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // registry based because they don't resolve properly to 1247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // server-based 1248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // add more tests here 1249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "//host.com:80err", "//host.com:80e" }, 1250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "//host.com:81e%Abrr", "//host.com:81e%Abrr" }, 1251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "//Host.com:80e", "//hoSt.com:80e" }, 1252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "/test", "//auth.com/test" }, 1254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "//test.com", "/test" }, 1255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "//test.com", "//test.com" }, // server based 1257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // case insensitivity for host 1259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "//HoSt.coM/", "//hOsT.cOm/" }, 1260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "//te%aE.com", "//te%aE.com" }, 1261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "//test.com:80", "//test.com:81" }, 1262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "//joe@test.com:80", "//test.com:80" }, 1263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "//jo%3E@test.com:82", "//jo%3E@test.com:82" }, 1264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "//test@test.com:85", "//test@test.com" }, }; 1265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean[] hashCodeResults = new boolean[] { true, false, false, false, 1267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true, false, false, false, true, false, false, true, false, 1268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true, false, true, true, false, false, false, true, false, 1269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes false, false, true, true, true, false, false, true, false, }; 1270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < hashCodeResults.length; i++) { 1272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI b = new URI(hashCodeData[i][0]); 1273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI r = new URI(hashCodeData[i][1]); 1274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Error in hashcode equals results for" + b.toString() 1275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + " " + r.toString(), hashCodeResults[i], b.hashCode() == r 1276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .hashCode()); 1277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#isAbsolute() 1283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_isAbsolute() throws URISyntaxException { 1285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] isAbsoluteData = new String[] { "mailto:user@ca.ibm.com", 1286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "urn:isbn:123498989h", "news:software.ibm.com", 1287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://www.amazon.ca", "file:///d:/temp/results.txt", 1288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "scheme:ssp", "calculate.pl?isbn=123498989h", 1289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "?isbn=123498989h", "//www.amazon.ca", "a.html", "#top", 1290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "//pc1/", "//user@host/path/file" }; 1291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean results[] = new boolean[] { true, true, true, true, true, true, 1293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes false, false, false, false, false, false, false }; 1294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < isAbsoluteData.length; i++) { 1296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean result = new URI(isAbsoluteData[i]).isAbsolute(); 1297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("new URI(" + isAbsoluteData[i] + ").isAbsolute()", 1298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes results[i], result); 1299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#isOpaque() 1304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_isOpaque() throws URISyntaxException { 1306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] isOpaqueData = new String[] { "mailto:user@ca.ibm.com", 1307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "urn:isbn:123498989h", "news:software.ibm.com", 1308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://www.amazon.ca", "file:///d:/temp/results.txt", 1309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "scheme:ssp", "calculate.pl?isbn=123498989h", 1310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "?isbn=123498989h", "//www.amazon.ca", "a.html", "#top", 1311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "//pc1/", "//user@host/path/file" }; 1312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean results[] = new boolean[] { true, true, true, false, false, 1314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true, false, false, false, false, false, false, false }; 1315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < isOpaqueData.length; i++) { 1317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean result = new URI(isOpaqueData[i]).isOpaque(); 1318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("new URI(" + isOpaqueData[i] + ").isOpaque()", 1319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes results[i], result); 1320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#normalize() 1325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_normalize() throws Exception { 13270eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson // normal 13280eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/", "/"); 13290eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a", "/a"); 13300eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a/b", "/a/b"); 13310eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a/b/c", "/a/b/c"); 13320eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson // single, '.' 13330eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/.", "/"); 13340eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/./", "/"); 13350eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/./.", "/"); 13360eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/././", "/"); 13370eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/./a", "/a"); 13380eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/./a/", "/a/"); 13390eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/././a", "/a"); 13400eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/././a/", "/a/"); 13410eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a/.", "/a/"); 13420eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a/./", "/a/"); 13430eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a/./.", "/a/"); 13440eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a/./b", "/a/b"); 13450eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson // double, '..' 13460eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a/..", "/"); 13470eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a/../", "/"); 13480eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a/../b", "/b"); 13490eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a/../b/..", "/"); 13500eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a/../b/../", "/"); 13510eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a/../b/../c", "/c"); 13520eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/..", "/.."); 13530eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/../", "/../"); 13540eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/../..", "/../.."); 13550eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/../../", "/../../"); 13560eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/../a", "/../a"); 13570eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/../a/", "/../a/"); 13580eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/../../a", "/../../a"); 13590eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/../../a/", "/../../a/"); 13600eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a/b/../../c", "/c"); 13610eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a/b/../..", "/"); 13620eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a/b/../../", "/"); 13630eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a/b/../../c", "/c"); 13640eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a/b/c/../../../d", "/d"); 13650eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a/b/..", "/a/"); 13660eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a/b/../", "/a/"); 13670eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a/b/../c", "/a/c"); 13680eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson // miscellaneous 13690eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a/b/.././../../c/./d/../e", "/../c/e"); 13700eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a/../../.c././../././c/d/../g/..", "/../c/"); 13710eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson // '.' in the middle of segments 13720eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a./b", "/a./b"); 13730eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/.a/b", "/.a/b"); 13740eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a.b/c", "/a.b/c"); 13750eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a/b../c", "/a/b../c"); 13760eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a/..b/c", "/a/..b/c"); 13770eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("/a/b..c/d", "/a/b..c/d"); 13780eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson // no leading slash, miscellaneous 13790eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("", ""); 13800eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("a", "a"); 13810eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("a/b", "a/b"); 13820eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("a/b/c", "a/b/c"); 13830eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("../", "../"); 13840eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize(".", ""); 13850eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("..", ".."); 13860eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("../g", "../g"); 13870eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("g/a/../../b/c/./g", "b/c/g"); 13880eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("a/b/.././../../c/./d/../e", "../c/e"); 13890eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson testNormalize("a/../../.c././../././c/d/../g/..", "../c/"); 13900eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson } 1391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 13920eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson private void testNormalize(String original, String expected) throws URISyntaxException { 13930eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson assertEquals(expected, new URI(original).normalize().toString()); 1394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#normalize() 1398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_normalize2() throws URISyntaxException { 1400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI uri1 = null, uri2 = null; 1401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri1 = new URI("file:/D:/one/two/../../three"); 1402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri2 = uri1.normalize(); 1403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Normalized to incorrect URI", "file:/D:/three", uri2 1405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .toString()); 1406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Resolved URI is not absolute", uri2.isAbsolute()); 1407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Resolved URI is opaque", uri2.isOpaque()); 1408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Resolved URI has incorrect scheme specific part", 1409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "/D:/three", uri2.getRawSchemeSpecificPart()); 1410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#normalize() 1414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_normalize3() throws URISyntaxException { 1416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // return same URI if it has a normalized path already 1417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI uri1 = null, uri2 = null; 1418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri1 = new URI("http://host/D:/one/two/three"); 1419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri2 = uri1.normalize(); 1420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame("Failed to return same URI after normalization", uri1, uri2); 1421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // try with empty path 1423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri1 = new URI("http", "host", null, "fragment"); 1424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri2 = uri1.normalize(); 1425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame("Failed to return same URI after normalization", uri1, uri2); 1426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#parseServerAuthority() 1430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_parseServerAuthority() throws URISyntaxException { 1432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // registry based uris 1433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI[] uris = null; 1434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uris = new URI[] { 1435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // port number not digits 1436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("http://foo:bar/file#fragment"), 1437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("http", "//foo:bar/file", "fragment"), 1438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // unicode char in the hostname = new 1440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // URI("http://host\u00dfname/") 1441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("http://host\u00DFname/"), 1442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("http", "//host\u00DFname/", null), 1444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // = new URI("http://host\u00dfname/", null), 1445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // escaped octets in host name 1447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("http://host%20name/"), 1448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("http", "//host%20name/", null), 1449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // missing host name, port number 1451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("http://joe@:80"), 1452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // missing host name, no port number 1454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("http://user@/file?query#fragment"), 1455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("//host.com:80err"), // malformed port number 1457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("//host.com:81e%Abrr"), 1458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // malformed ipv4 address 1460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("telnet", "//256.197.221.200", null), 1461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("telnet://198.256.221.200"), 1463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("//te%ae.com"), // misc .. 1464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("//:port"), new URI("//:80"), 1465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // last label has to start with alpha char 1467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("//fgj234fkgj.jhj.123."), 1468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("//fgj234fkgj.jhj.123"), 1470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // '-' cannot be first or last character in a label 1472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("//-domain.name"), new URI("//domain.name-"), 1473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("//domain-"), 1474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // illegal char in host name 1476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("//doma*in"), 1477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // host expected 1479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("http://:80/"), new URI("http://user@/"), 1480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // ipv6 address not enclosed in "[]" 1482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("http://3ffe:2a00:100:7031:22:1:80:89/"), 1483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected ipv6 addresses to be enclosed in "[]" 1485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("http", "34::56:78", "/path", "query", "fragment"), 1486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected host 1488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("http", "user@", "/path", "query", "fragment") }; 1489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // these URIs do not have valid server based authorities, 1490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // but single arg, 3 and 5 arg constructors 1491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // parse them as valid registry based authorities 1492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // exception should occur when parseServerAuthority is 1494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // requested on these uris 1495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < uris.length; i++) { 1496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI uri = uris[i].parseServerAuthority(); 1498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("URISyntaxException expected but not received for URI: " 1499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + uris[i].toString()); 1500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e) { 1501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // valid Server based authorities 1506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("http", "3ffe:2a00:100:7031:2e:1:80:80", "/path", "fragment") 1507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .parseServerAuthority(); 1508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("http", "host:80", "/path", "query", "fragment") 1509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .parseServerAuthority(); 1510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("http://[::3abc:4abc]:80/").parseServerAuthority(); 1511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("http", "34::56:78", "/path", "fragment") 1512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .parseServerAuthority(); 1513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("http", "[34:56::78]:80", "/path", "fragment") 1514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .parseServerAuthority(); 1515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // invalid authorities (neither server nor registry) 1517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI uri = new URI("http://us[er@host:80/"); 1519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Expected URISyntaxException for URI " + uri.toString()); 1520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e) { 1521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI uri = new URI("http://[ddd::hgghh]/"); 1526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Expected URISyntaxException for URI " + uri.toString()); 1527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e) { 1528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI uri = new URI("http", "[3ffe:2a00:100:7031:2e:1:80:80]a:80", 1533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "/path", "fragment"); 1534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Expected URISyntaxException for URI " + uri.toString()); 1535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e) { 1536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI uri = new URI("http", "host:80", "/path", "fragment"); 1541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Expected URISyntaxException for URI " + uri.toString()); 1542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e) { 1543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // regression test for HARMONY-1126 1547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(URI.create("file://C:/1.txt").parseServerAuthority()); 1548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#relativize(java.net.URI) 1552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_relativizeLjava_net_URI() throws URISyntaxException { 1554163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson // rel = opaque 1555163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson testRelativize("http://www.google.com/dir1/dir2", "mailto:test", "mailto:test"); 1556163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson // base = opaque 1557163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson testRelativize("mailto:test", "http://www.google.com", "http://www.google.com"); 1558163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson // different authority 1559163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson testRelativize("http://www.eclipse.org/dir1", "http://www.google.com/dir1/dir2", 1560163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson "http://www.google.com/dir1/dir2"); 1561163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson // different scheme 1562163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson testRelativize("http://www.google.com", "ftp://www.google.com", "ftp://www.google.com"); 1563163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson testRelativize("http://www.google.com/dir1/dir2/", 1564163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson "http://www.google.com/dir3/dir4/file.txt", 1565163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson "http://www.google.com/dir3/dir4/file.txt"); 1566163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson testRelativize("http://www.google.com/dir1/", "http://www.google.com/dir1/dir2/file.txt", 1567163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson "dir2/file.txt"); 1568163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson testRelativize("./dir1/", "./dir1/hi", "hi"); 1569163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson testRelativize("/dir1/./dir2", "/dir1/./dir2/hi", "dir2/hi"); 1570163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson testRelativize("/dir1/dir2/..", "/dir1/dir2/../hi", "hi"); 1571163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson testRelativize("/dir1/dir2/..", "/dir1/dir2/hi", "dir2/hi"); 1572163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson testRelativize("/dir1/dir2/", "/dir1/dir3/../dir2/text", "text"); 1573163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson testRelativize("//www.google.com", "//www.google.com/dir1/file", "/dir1/file"); 1574163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson testRelativize("/dir1", "/dir1/hi", "dir1/hi"); 1575163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson testRelativize("/dir1/", "/dir1/hi", "hi"); 1576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI a = new URI("http://host/dir"); 1578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI b = new URI("http://host/dir/file?query"); 1579163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson assertEquals("Assert 0: URI relativized incorrectly,", 1580163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson new URI("dir/file?query"), a.relativize(b)); 1581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // One URI with empty host 1583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes a = new URI("file:///~/first"); 1584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes b = new URI("file://tools/~/first"); 1585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Assert 1: URI relativized incorrectly,", new URI( 1586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "file://tools/~/first"), a.relativize(b)); 1587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Assert 2: URI relativized incorrectly,", new URI( 1588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "file:///~/first"), b.relativize(a)); 1589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Both URIs with empty hosts 1591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes b = new URI("file:///~/second"); 1592163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson assertEquals("Assert 3: URI relativized incorrectly,", new URI("second"), a.relativize(b)); 1593163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson assertEquals("Assert 4: URI relativized incorrectly,", new URI("first"), b.relativize(a)); 1594163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson } 1595163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson 1596163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson private void testRelativize(String base, String target, String expected) 1597163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson throws URISyntaxException { 1598163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson assertEquals(expected, new URI(base).relativize(new URI(target)).toString()); 1599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Regression test for HARMONY-6075 1602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_relativize3() throws Exception { 1603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI uri = new URI("file", null, "/test/location", null); 1604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI base = new URI("file", null, "/test", null); 1606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI relative = base.relativize(uri); 1608163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson assertEquals("test/location", relative.getSchemeSpecificPart()); 1609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(relative.getScheme()); 1610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#relativize(java.net.URI) 1614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_relativize2() throws URISyntaxException { 1616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI a = new URI("http://host/dir"); 1617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI b = new URI("http://host/dir/file?query"); 1618163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson assertEquals("relativized incorrectly,", new URI("dir/file?query"), a.relativize(b)); 1619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // one URI with empty host 1621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes a = new URI("file:///~/dictionary"); 1622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes b = new URI("file://tools/~/dictionary"); 1623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("relativized incorrectly,", new URI( 1624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "file://tools/~/dictionary"), a.relativize(b)); 1625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("relativized incorrectly,", 1626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI("file:///~/dictionary"), b.relativize(a)); 1627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // two URIs with empty hosts 1629163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson b = new URI("file:///~/thesaurus"); 1630163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson assertEquals("relativized incorrectly,", new URI("thesaurus"), a.relativize(b)); 1631163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson assertEquals("relativized incorrectly,", new URI("dictionary"), b.relativize(a)); 1632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI one = new URI("file:/C:/test/ws"); 1634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI two = new URI("file:/C:/test/ws"); 1635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI empty = new URI(""); 1637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(empty, one.relativize(two)); 1638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes one = new URI("file:/C:/test/ws"); 1640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes two = new URI("file:/C:/test/ws/p1"); 1641163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson assertEquals(new URI("ws/p1"), one.relativize(two)); 1642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes one = new URI("file:/C:/test/ws/"); 1644163222ea86e16dbb3ddaabe1d6c549037f0c1b63Jesse Wilson assertEquals(new URI("p1"), one.relativize(two)); 1645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#resolve(java.net.URI) 1649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_resolve() throws URISyntaxException { 1651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI uri1 = null, uri2 = null; 1652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri1 = new URI("file:/D:/one/two/three"); 1653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uri2 = uri1.resolve(new URI("..")); 1654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Resolved to incorrect URI", "file:/D:/one/", uri2 1656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .toString()); 1657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Resolved URI is not absolute", uri2.isAbsolute()); 1658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Resolved URI is opaque", uri2.isOpaque()); 1659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Resolved URI has incorrect scheme specific part", 1660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "/D:/one/", uri2.getRawSchemeSpecificPart()); 1661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#resolve(java.net.URI) 1665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_resolveLjava_net_URI() { 1667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // resolution tests 1668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[][] resolveData = new String[][] { 1669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // authority in given URI 1670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "http://www.test.com/dir", 1671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "//www.test.com/hello?query#fragment" }, 1672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // no authority, absolute path 1673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "http://www.test.com/dir", "/abspath/file.txt" }, 1674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // no authority, relative paths 1675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "/", "dir1/file.txt" }, { "/dir1", "dir2/file.txt" }, 1676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "/dir1/", "dir2/file.txt" }, { "", "dir1/file.txt" }, 1677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "dir1", "dir2/file.txt" }, { "dir1/", "dir2/file.txt" }, 1678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // normalization required 1679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "/dir1/dir2/../dir3/./", "dir4/./file.txt" }, 1680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // allow a standalone fragment to be resolved 1681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "http://www.google.com/hey/joe?query#fragment", "#frag2" }, 1682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // return given when base is opaque 1683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "mailto:idontexist@uk.ibm.com", "dir1/dir2" }, 1684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // return given when given is absolute 1685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "http://www.google.com/hi/joe", "http://www.oogle.com" }, }; 1686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected results 1688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] resolveResults = new String[] { 1689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://www.test.com/hello?query#fragment", 1690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://www.test.com/abspath/file.txt", "/dir1/file.txt", 1691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "/dir2/file.txt", "/dir1/dir2/file.txt", "dir1/file.txt", 1692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "dir2/file.txt", "dir1/dir2/file.txt", 1693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "/dir1/dir3/dir4/file.txt", 1694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://www.google.com/hey/joe?query#frag2", "dir1/dir2", 1695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://www.oogle.com", }; 1696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < resolveResults.length; i++) { 1698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI b = new URI(resolveData[i][0]); 1700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI r = new URI(resolveData[i][1]); 1701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI result = b.resolve(r); 1702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!result.toString().equals(resolveResults[i])) { 1703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Error: resolve, " + resolveData[i][0] + ", " 1704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + resolveData[i][1] + " returned: " + b.resolve(r) 1705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ", expected:" + resolveResults[i]); 1706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!b.isOpaque()) { 1708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(b + " and " + result 1709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + " incorrectly differ in absoluteness", b 1710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .isAbsolute(), result.isAbsolute()); 1711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (URISyntaxException e) { 1713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Exception on resolve test on data " + resolveData[i][0] 1714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ", " + resolveData[i][1] + ": " + e); 1715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#toASCIIString() 1721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_toASCIIString() throws Exception { 1723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI[] uris = getUris(); 1724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] toASCIIStringResults0 = new String[] { 1726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://user%60%20info@host/a%20path?qu%60%20ery#fr%5E%20ag", 1727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://user%C3%9F%C2%A3info@host:80/a%E2%82%ACpath?qu%C2%A9%C2%AEery#fr%C3%A4%C3%A8g", 1728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "ascheme://user%C3%9F%C2%A3info@host:0/a%E2%82%ACpath?qu%C2%A9%C2%AEery#fr%C3%A4%C3%A8g", 1729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://user%2560%2520info@host:80/a%2520path?qu%2560%2520ery#fr%255E%2520ag", 1730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://user%25C3%259F%25C2%25A3info@host/a%25E2%2582%25ACpath?qu%25C2%25A9%25C2%25AEery#fr%25C3%25A4%25C3%25A8g", 1731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "ascheme://user%C3%9F%C2%A3info@host:80/a%E2%82%ACpath?qu%C2%A9%C2%AEery#fr%C3%A4%C3%A8g", 1732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://user%60%20info@host:81/a%20path?qu%60%20ery#fr%5E%20ag", 1733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://user%25info@host:0/a%25path?que%25ry#f%25rag", 1734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "mailto:user@domain.com", "../adirectory/file.html#", 1735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "news:comp.infosystems.www.servers.unix", "#fragment", 1736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "telnet://server.org", "http://reg:istry?query", 1737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "file:///c:/temp/calculate.pl?" }; 1738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < uris.length; i++) { 1740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String result = uris[i].toASCIIString(); 1741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Error: For URI \"" + uris[i].toString() 1742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "\", toASCIIString() returned: " + result 1743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ", expected: " + toASCIIStringResults0[i], result 1744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .equals(toASCIIStringResults0[i])); 1745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] toASCIIStringData = new String[] { 1748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://www.test.com/\u00DF/dir/", 1749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://www.test.com/\u20AC/dir", "http://www.\u20AC.com/dir", 1750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://www.test.com/\u20AC/dir/file#fragment", 1751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "mailto://user@domain.com", "mailto://user\u00DF@domain.com", }; 1752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] toASCIIStringResults = new String[] { 1754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://www.test.com/%C3%9F/dir/", 1755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://www.test.com/%E2%82%AC/dir", 1756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://www.%E2%82%AC.com/dir", 1757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://www.test.com/%E2%82%AC/dir/file#fragment", 1758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "mailto://user@domain.com", "mailto://user%C3%9F@domain.com", }; 1759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < toASCIIStringData.length; i++) { 1761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI test = new URI(toASCIIStringData[i]); 1762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String result = test.toASCIIString(); 1763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Error: new URI(\"" + toASCIIStringData[i] 1764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "\").toASCIIString() returned: " + result 1765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ", expected: " + toASCIIStringResults[i], result 1766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .equals(toASCIIStringResults[i])); 1767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#toString() 1772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_toString() throws Exception { 1774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI[] uris = getUris(); 1775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] toStringResults = { 1777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://user%60%20info@host/a%20path?qu%60%20ery#fr%5E%20ag", 1778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://user%C3%9F%C2%A3info@host:80/a%E2%82%ACpath?qu%C2%A9%C2%AEery#fr%C3%A4%C3%A8g", 1779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "ascheme://user\u00DF\u00A3info@host:0/a\u20ACpath?qu\u00A9\u00AEery#fr\u00E4\u00E8g", 1780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // = 1781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // "ascheme://user\u00df\u00a3info@host:0/a\u0080path?qu\u00a9\u00aeery#fr\u00e4\u00e8g", 1782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://user%2560%2520info@host:80/a%2520path?qu%2560%2520ery#fr%255E%2520ag", 1783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://user%25C3%259F%25C2%25A3info@host/a%25E2%2582%25ACpath?qu%25C2%25A9%25C2%25AEery#fr%25C3%25A4%25C3%25A8g", 1784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "ascheme://user\u00DF\u00A3info@host:80/a\u20ACpath?qu\u00A9\u00AEery#fr\u00E4\u00E8g", 1785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // = 1786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // "ascheme://user\u00df\u00a3info@host:80/a\u0080path?qu\u00a9\u00aeery#fr\u00e4\u00e8g", 1787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://user%60%20info@host:81/a%20path?qu%60%20ery#fr%5E%20ag", 1788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://user%25info@host:0/a%25path?que%25ry#f%25rag", 1789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "mailto:user@domain.com", "../adirectory/file.html#", 1790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "news:comp.infosystems.www.servers.unix", "#fragment", 1791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "telnet://server.org", "http://reg:istry?query", 1792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "file:///c:/temp/calculate.pl?" }; 1793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < uris.length; i++) { 1795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String result = uris[i].toString(); 1796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Error: For URI \"" + uris[i].toString() 1797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "\", toString() returned: " + result + ", expected: " 1798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + toStringResults[i], result.equals(toStringResults[i])); 1799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URI#toURL() 1804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_toURL() throws Exception { 1806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String absoluteuris[] = new String[] { "mailto:noreply@apache.org", 1807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "urn:isbn:123498989h", "news:software.ibm.com", 1808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://www.apache.org", "file:///d:/temp/results.txt", 1809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "scheme:ssp", }; 1810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String relativeuris[] = new String[] { "calculate.pl?isbn=123498989h", 1812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "?isbn=123498989h", "//www.apache.org", "a.html", "#top", 1813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "//pc1/", "//user@host/path/file" }; 1814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < absoluteuris.length; i++) { 1816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI(absoluteuris[i]).toURL(); 1818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MalformedURLException e) { 1819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // not all the URIs can be translated into valid URLs 1820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < relativeuris.length; i++) { 1824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new URI(relativeuris[i]).toURL(); 1826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Expected IllegalArgumentException not thrown"); 1827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 1828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 18320eefc54c2ae7a461cb28a8f117b515071df19f1eJesse Wilson 1833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests serialization/deserialization. 1835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSerializationSelf() throws Exception { 1837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URI uri = new URI("http://harmony.apache.org/"); 1838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SerializationTest.verifySelf(uri); 1840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 1842