1cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath/*
2cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  Licensed to the Apache Software Foundation (ASF) under one or more
3cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  contributor license agreements.  See the NOTICE file distributed with
4cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  this work for additional information regarding copyright ownership.
5cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  The ASF licenses this file to You under the Apache License, Version 2.0
6cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  (the "License"); you may not use this file except in compliance with
7cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  the License.  You may obtain a copy of the License at
8cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *
9cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *     http://www.apache.org/licenses/LICENSE-2.0
10cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *
11cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  Unless required by applicable law or agreed to in writing, software
12cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  distributed under the License is distributed on an "AS IS" BASIS,
13cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  See the License for the specific language governing permissions and
15cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  limitations under the License.
16cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */
17cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
18ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamathpackage org.apache.harmony.tests.java.net;
19cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
20cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport junit.framework.TestCase;
21cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport tests.support.resource.Support_Resources;
22cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.File;
23cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.IOException;
24cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.InputStream;
25cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.net.MalformedURLException;
26cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.net.Proxy;
27cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.net.ProxySelector;
28cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.net.SocketAddress;
29cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.net.URI;
30cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.net.URL;
31cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.net.URLConnection;
32cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.net.URLStreamHandler;
33cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.ArrayList;
34cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.List;
35cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
36cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathpublic class URLTest extends TestCase {
37cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
38cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public static class MyHandler extends URLStreamHandler {
39cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        protected URLConnection openConnection(URL u)
40cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                throws IOException {
41cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            return null;
42cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
43cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
44cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
45cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    URL u;
46cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
47cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    URL u1;
48cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
49cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    URL u2;
50cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
51cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    URL u3;
52cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
53cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    URL u4;
54cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
55cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    URL u5;
56cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
57cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    URL u6;
58cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
59cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    boolean caught = false;
60cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
61cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    static boolean isSelectCalled;
62cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
63cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
64cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.net.URL#URL(java.lang.String)
65cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
66cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_lang_String() throws IOException {
67cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Tests for multiple URL instantiation basic parsing test
68cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL(
69cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "http://www.yahoo1.com:8080/dir1/dir2/test.cgi?point1.html#anchor1");
70cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u returns a wrong protocol", "http", u.getProtocol());
71cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u returns a wrong host", "www.yahoo1.com", u.getHost());
72cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u returns a wrong port", 8080, u.getPort());
73cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u returns a wrong file",
74cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "/dir1/dir2/test.cgi?point1.html", u.getFile());
75cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u returns a wrong anchor", "anchor1", u.getRef());
76cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
77cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // test for no file
78cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1 = new URL("http://www.yahoo2.com:9999");
79cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u1 returns a wrong protocol", "http", u1.getProtocol());
80cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u1 returns a wrong host", "www.yahoo2.com", u1.getHost());
81cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u1 returns a wrong port", 9999, u1.getPort());
82cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("u1 returns a wrong file", u1.getFile().equals(""));
83cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("u1 returns a wrong anchor", u1.getRef());
84cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
85cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // test for no port
86cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u2 = new URL(
87cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "http://www.yahoo3.com/dir1/dir2/test.cgi?point1.html#anchor1");
88cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u2 returns a wrong protocol", "http", u2.getProtocol());
89cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u2 returns a wrong host", "www.yahoo3.com", u2.getHost());
90cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u2 returns a wrong port", -1, u2.getPort());
91cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u2 returns a wrong file",
92cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "/dir1/dir2/test.cgi?point1.html", u2.getFile());
93cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u2 returns a wrong anchor", "anchor1", u2.getRef());
94cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
95cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // test for no port
96cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URL u2a = new URL("file://www.yahoo3.com/dir1/dir2/test.cgi#anchor1");
97cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u2a returns a wrong protocol", "file", u2a.getProtocol());
98cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u2a returns a wrong host", "www.yahoo3.com", u2a
99cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getHost());
100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u2a returns a wrong port", -1, u2a.getPort());
101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u2a returns a wrong file", "/dir1/dir2/test.cgi", u2a
102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getFile());
103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u2a returns a wrong anchor", "anchor1", u2a.getRef());
104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // test for no file, no port
106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u3 = new URL("http://www.yahoo4.com/");
107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u3 returns a wrong protocol", "http", u3.getProtocol());
108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u3 returns a wrong host", "www.yahoo4.com", u3.getHost());
109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u3 returns a wrong port", -1, u3.getPort());
110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u3 returns a wrong file", "/", u3.getFile());
111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("u3 returns a wrong anchor", u3.getRef());
112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // test for no file, no port
114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URL u3a = new URL("file://www.yahoo4.com/");
115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u3a returns a wrong protocol", "file", u3a.getProtocol());
116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u3a returns a wrong host", "www.yahoo4.com", u3a
117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getHost());
118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u3a returns a wrong port", -1, u3a.getPort());
119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u3a returns a wrong file", "/", u3a.getFile());
120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("u3a returns a wrong anchor", u3a.getRef());
121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // test for no file, no port
123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URL u3b = new URL("file://www.yahoo4.com");
124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u3b returns a wrong protocol", "file", u3b.getProtocol());
125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u3b returns a wrong host", "www.yahoo4.com", u3b
126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getHost());
127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u3b returns a wrong port", -1, u3b.getPort());
128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("u3b returns a wrong file", u3b.getFile().equals(""));
129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("u3b returns a wrong anchor", u3b.getRef());
130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // test for non-port ":" and wierd characters occurrences
132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u4 = new URL(
133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "http://www.yahoo5.com/di!@$%^&*()_+r1/di:::r2/test.cgi?point1.html#anchor1");
134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u4 returns a wrong protocol", "http", u4.getProtocol());
135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u4 returns a wrong host", "www.yahoo5.com", u4.getHost());
136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u4 returns a wrong port", -1, u4.getPort());
137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u4 returns a wrong file",
138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "/di!@$%^&*()_+r1/di:::r2/test.cgi?point1.html", u4.getFile());
139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u4 returns a wrong anchor", "anchor1", u4.getRef());
140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u5 = new URL("file:/testing.tst");
142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u5 returns a wrong protocol", "file", u5.getProtocol());
143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("u5 returns a wrong host", u5.getHost().equals(""));
144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u5 returns a wrong port", -1, u5.getPort());
145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u5 returns a wrong file", "/testing.tst", u5.getFile());
146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("u5 returns a wrong anchor", u5.getRef());
147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URL u5a = new URL("file:testing.tst");
149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u5a returns a wrong protocol", "file", u5a.getProtocol());
150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("u5a returns a wrong host", u5a.getHost().equals(""));
151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u5a returns a wrong port", -1, u5a.getPort());
152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u5a returns a wrong file", "testing.tst", u5a.getFile());
153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("u5a returns a wrong anchor", u5a.getRef());
154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URL u6 = new URL("http://host:/file");
156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("u6 return a wrong port", -1, u6.getPort());
157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URL u7 = new URL("file:../../file.txt");
159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("u7 returns a wrong file: " + u7.getFile(), u7.getFile()
160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .equals("../../file.txt"));
161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URL u8 = new URL("http://[fec0::1:20d:60ff:fe24:7410]:35/file.txt");
163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("u8 returns a wrong protocol " + u8.getProtocol(), u8
164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getProtocol().equals("http"));
165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("u8 returns a wrong host " + u8.getHost(), u8.getHost()
166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .equals("[fec0::1:20d:60ff:fe24:7410]"));
167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("u8 returns a wrong port " + u8.getPort(),
168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                u8.getPort() == 35);
169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("u8 returns a wrong file " + u8.getFile(), u8.getFile()
170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .equals("/file.txt"));
171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("u8 returns a wrong anchor " + u8.getRef(), u8.getRef());
172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URL u9 = new URL("file://[fec0::1:20d:60ff:fe24:7410]/file.txt#sogood");
174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("u9 returns a wrong protocol " + u9.getProtocol(), u9
175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getProtocol().equals("file"));
176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("u9 returns a wrong host " + u9.getHost(), u9.getHost()
177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .equals("[fec0::1:20d:60ff:fe24:7410]"));
178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("u9 returns a wrong port " + u9.getPort(),
179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                u9.getPort() == -1);
180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("u9 returns a wrong file " + u9.getFile(), u9.getFile()
181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .equals("/file.txt"));
182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("u9 returns a wrong anchor " + u9.getRef(), u9.getRef()
183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .equals("sogood"));
184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URL u10 = new URL("file://[fec0::1:20d:60ff:fe24:7410]");
186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("u10 returns a wrong protocol " + u10.getProtocol(), u10
187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getProtocol().equals("file"));
188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("u10 returns a wrong host " + u10.getHost(), u10.getHost()
189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .equals("[fec0::1:20d:60ff:fe24:7410]"));
190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("u10 returns a wrong port " + u10.getPort(),
191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                u10.getPort() == -1);
192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URL u11 = new URL("file:////file.txt");
194ab676d4d63fcc480c6f13e61fc0750591b48db45Narayan Kamath        // Harmony returned null here
195ab676d4d63fcc480c6f13e61fc0750591b48db45Narayan Kamath        assertEquals("u11 returns a wrong authority", "", u11.getAuthority());
196ab676d4d63fcc480c6f13e61fc0750591b48db45Narayan Kamath        assertEquals("u11 returns a wrong file " + u11.getFile(), "//file.txt",
197ab676d4d63fcc480c6f13e61fc0750591b48db45Narayan Kamath                u11.getFile());
198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URL u12 = new URL("file:///file.txt");
200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("u12 returns a wrong authority", u12.getAuthority().equals(
201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                ""));
202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("u12 returns a wrong file " + u12.getFile(), u12.getFile()
203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .equals("/file.txt"));
204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // test for error catching
207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Bad HTTP format - no "//"
209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL(
210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "http:www.yahoo5.com::22/dir1/di:::r2/test.cgi?point1.html#anchor1");
211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        caught = false;
213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u = new URL(
215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    "http://www.yahoo5.com::22/dir1/di:::r2/test.cgi?point1.html#anchor1");
216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (MalformedURLException e) {
217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            caught = true;
218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Should have throw MalformedURLException", caught);
220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // unknown protocol
222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u = new URL("myProtocol://www.yahoo.com:22");
224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (MalformedURLException e) {
225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            caught = true;
226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("3 Failed to throw MalformedURLException", caught);
228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        caught = false;
230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // no protocol
231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u = new URL("www.yahoo.com");
233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (MalformedURLException e) {
234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            caught = true;
235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("4 Failed to throw MalformedURLException", caught);
237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        caught = false;
239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URL u1 = null;
241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // No leading or trailing spaces.
243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u1 = new URL("file:/some/path");
244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("5 got wrong file length1", 10, u1.getFile().length());
245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Leading spaces.
247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u1 = new URL("  file:/some/path");
248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("5 got wrong file length2", 10, u1.getFile().length());
249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Trailing spaces.
251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u1 = new URL("file:/some/path  ");
252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("5 got wrong file length3", 10, u1.getFile().length());
253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Leading and trailing.
255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u1 = new URL("  file:/some/path ");
256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("5 got wrong file length4", 10, u1.getFile().length());
257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // in-place spaces.
259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u1 = new URL("  file:  /some/path ");
260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("5 got wrong file length5", 12, u1.getFile().length());
261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (MalformedURLException e) {
263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("5 Did not expect the exception " + e);
264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // testing jar protocol with relative path
267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // to make sure it's not canonicalized
268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            String file = "file:/a!/b/../d";
270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u = new URL("jar:" + file);
272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Wrong file (jar protocol, relative path)", file, u
273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .getFile());
274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (MalformedURLException e) {
275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("Unexpected exception (jar protocol, relative path)" + e);
276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.net.URL#URL(java.net.URL, java.lang.String)
281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_net_URLLjava_lang_String()
283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            throws Exception {
284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.net.URL(java.net.URL, java.lang.String)
285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("http://www.yahoo.com");
286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URL uf = new URL("file://www.yahoo.com");
287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // basic ones
288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1 = new URL(u, "file.java");
289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("1 returns a wrong protocol", "http", u1.getProtocol());
290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("1 returns a wrong host", "www.yahoo.com", u1.getHost());
291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("1 returns a wrong port", -1, u1.getPort());
292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("1 returns a wrong file", "/file.java", u1.getFile());
293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("1 returns a wrong anchor", u1.getRef());
294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URL u1f = new URL(uf, "file.java");
296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("1f returns a wrong protocol", "file", u1f.getProtocol());
297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("1f returns a wrong host", "www.yahoo.com", u1f.getHost());
298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("1f returns a wrong port", -1, u1f.getPort());
299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("1f returns a wrong file", "/file.java", u1f.getFile());
300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("1f returns a wrong anchor", u1f.getRef());
301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1 = new URL(u, "dir1/dir2/../file.java");
303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("3 returns a wrong protocol", "http", u1.getProtocol());
304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("3 returns a wrong host: " + u1.getHost(), u1.getHost()
305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .equals("www.yahoo.com"));
306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("3 returns a wrong port", -1, u1.getPort());
307ab676d4d63fcc480c6f13e61fc0750591b48db45Narayan Kamath        assertEquals("3 returns a wrong file", "/dir1/file.java", u1
308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getFile());
309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("3 returns a wrong anchor", u1.getRef());
310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1 = new URL(u, "http:dir1/dir2/../file.java");
312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("3a returns a wrong protocol", "http", u1.getProtocol());
313ab676d4d63fcc480c6f13e61fc0750591b48db45Narayan Kamath        assertEquals("3a returns a wrong host: " + u1.getHost(), "www.yahoo.com", u1.getHost());
314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("3a returns a wrong port", -1, u1.getPort());
315ab676d4d63fcc480c6f13e61fc0750591b48db45Narayan Kamath        assertEquals("3a returns a wrong file", "/dir1/file.java", u1
316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getFile());
317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("3a returns a wrong anchor", u1.getRef());
318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("http://www.apache.org/testing/");
320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1 = new URL(u, "file.java");
321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("4 returns a wrong protocol", "http", u1.getProtocol());
322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("4 returns a wrong host", "www.apache.org", u1.getHost());
323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("4 returns a wrong port", -1, u1.getPort());
324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("4 returns a wrong file", "/testing/file.java", u1
325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getFile());
326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("4 returns a wrong anchor", u1.getRef());
327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        uf = new URL("file://www.apache.org/testing/");
329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1f = new URL(uf, "file.java");
330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("4f returns a wrong protocol", "file", u1f.getProtocol());
331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("4f returns a wrong host", "www.apache.org", u1f.getHost());
332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("4f returns a wrong port", -1, u1f.getPort());
333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("4f returns a wrong file", "/testing/file.java", u1f
334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getFile());
335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("4f returns a wrong anchor", u1f.getRef());
336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        uf = new URL("file:/testing/");
338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1f = new URL(uf, "file.java");
339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("4fa returns a wrong protocol", "file", u1f.getProtocol());
340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("4fa returns a wrong host", u1f.getHost().equals(""));
341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("4fa returns a wrong port", -1, u1f.getPort());
342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("4fa returns a wrong file", "/testing/file.java", u1f
343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getFile());
344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("4fa returns a wrong anchor", u1f.getRef());
345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        uf = new URL("file:testing/");
347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1f = new URL(uf, "file.java");
348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("4fb returns a wrong protocol", "file", u1f.getProtocol());
349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("4fb returns a wrong host", u1f.getHost().equals(""));
350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("4fb returns a wrong port", -1, u1f.getPort());
351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("4fb returns a wrong file", "testing/file.java", u1f
352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getFile());
353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("4fb returns a wrong anchor", u1f.getRef());
354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1f = new URL(uf, "file:file.java");
356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("4fc returns a wrong protocol", "file", u1f.getProtocol());
357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("4fc returns a wrong host", u1f.getHost().equals(""));
358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("4fc returns a wrong port", -1, u1f.getPort());
359ab676d4d63fcc480c6f13e61fc0750591b48db45Narayan Kamath        assertEquals("4fc returns a wrong file", "testing/file.java", u1f.getFile());
360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("4fc returns a wrong anchor", u1f.getRef());
361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1f = new URL(uf, "file:");
363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("4fd returns a wrong protocol", "file", u1f.getProtocol());
364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("4fd returns a wrong host", u1f.getHost().equals(""));
365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("4fd returns a wrong port", -1, u1f.getPort());
366ab676d4d63fcc480c6f13e61fc0750591b48db45Narayan Kamath        assertEquals("4fd returns a wrong file", "testing/", u1f.getFile());
367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("4fd returns a wrong anchor", u1f.getRef());
368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("http://www.apache.org/testing");
370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1 = new URL(u, "file.java");
371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("5 returns a wrong protocol", "http", u1.getProtocol());
372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("5 returns a wrong host", "www.apache.org", u1.getHost());
373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("5 returns a wrong port", -1, u1.getPort());
374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("5 returns a wrong file", "/file.java", u1.getFile());
375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("5 returns a wrong anchor", u1.getRef());
376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        uf = new URL("file://www.apache.org/testing");
378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1f = new URL(uf, "file.java");
379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("5f returns a wrong protocol", "file", u1f.getProtocol());
380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("5f returns a wrong host", "www.apache.org", u1f.getHost());
381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("5f returns a wrong port", -1, u1f.getPort());
382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("5f returns a wrong file", "/file.java", u1f.getFile());
383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("5f returns a wrong anchor", u1f.getRef());
384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        uf = new URL("file:/testing");
386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1f = new URL(uf, "file.java");
387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("5fa returns a wrong protocol", "file", u1f.getProtocol());
388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("5fa returns a wrong host", u1f.getHost().equals(""));
389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("5fa returns a wrong port", -1, u1f.getPort());
390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("5fa returns a wrong file", "/file.java", u1f.getFile());
391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("5fa returns a wrong anchor", u1f.getRef());
392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        uf = new URL("file:testing");
394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1f = new URL(uf, "file.java");
395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("5fb returns a wrong protocol", "file", u1f.getProtocol());
396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("5fb returns a wrong host", u1f.getHost().equals(""));
397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("5fb returns a wrong port", -1, u1f.getPort());
398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("5fb returns a wrong file", "file.java", u1f.getFile());
399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("5fb returns a wrong anchor", u1f.getRef());
400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("http://www.apache.org/testing/foobaz");
402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1 = new URL(u, "/file.java");
403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("6 returns a wrong protocol", "http", u1.getProtocol());
404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("6 returns a wrong host", "www.apache.org", u1.getHost());
405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("6 returns a wrong port", -1, u1.getPort());
406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("6 returns a wrong file", "/file.java", u1.getFile());
407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("6 returns a wrong anchor", u1.getRef());
408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        uf = new URL("file://www.apache.org/testing/foobaz");
410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1f = new URL(uf, "/file.java");
411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("6f returns a wrong protocol", "file", u1f.getProtocol());
412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("6f returns a wrong host", "www.apache.org", u1f.getHost());
413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("6f returns a wrong port", -1, u1f.getPort());
414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("6f returns a wrong file", "/file.java", u1f.getFile());
415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("6f returns a wrong anchor", u1f.getRef());
416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("http://www.apache.org:8000/testing/foobaz");
418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1 = new URL(u, "/file.java");
419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("7 returns a wrong protocol", "http", u1.getProtocol());
420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("7 returns a wrong host", "www.apache.org", u1.getHost());
421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("7 returns a wrong port", 8000, u1.getPort());
422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("7 returns a wrong file", "/file.java", u1.getFile());
423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("7 returns a wrong anchor", u1.getRef());
424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("http://www.apache.org/index.html");
426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1 = new URL(u, "#bar");
427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("8 returns a wrong host", "www.apache.org", u1.getHost());
428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("8 returns a wrong file", "/index.html", u1.getFile());
429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("8 returns a wrong anchor", "bar", u1.getRef());
430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("http://www.apache.org/index.html#foo");
432cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1 = new URL(u, "http:#bar");
433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("9 returns a wrong host", "www.apache.org", u1.getHost());
434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("9 returns a wrong file", "/index.html", u1.getFile());
435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("9 returns a wrong anchor", "bar", u1.getRef());
436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("http://www.apache.org/index.html");
438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1 = new URL(u, "");
439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("10 returns a wrong host", "www.apache.org", u1.getHost());
440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("10 returns a wrong file", "/index.html", u1.getFile());
441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("10 returns a wrong anchor", u1.getRef());
442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
443cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        uf = new URL("file://www.apache.org/index.html");
444cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1f = new URL(uf, "");
445cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("10f returns a wrong host", "www.apache.org", u1.getHost());
446cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("10f returns a wrong file", "/index.html", u1.getFile());
447cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("10f returns a wrong anchor", u1.getRef());
448cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
449cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("http://www.apache.org/index.html");
450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1 = new URL(u, "http://www.apache.org");
451cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("11 returns a wrong host", "www.apache.org", u1.getHost());
452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("11 returns a wrong file", u1.getFile().equals(""));
453cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("11 returns a wrong anchor", u1.getRef());
454cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
455cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // test for question mark processing
456cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("http://www.foo.com/d0/d1/d2/cgi-bin?foo=bar/baz");
457cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
458cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // test for relative file and out of bound "/../" processing
459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1 = new URL(u, "../dir1/./dir2/../file.java");
460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("A) returns a wrong file: " + u1.getFile(), u1.getFile()
461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .equals("/d0/d1/dir1/file.java"));
462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // test for absolute and relative file processing
464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1 = new URL(u, "/../dir1/./dir2/../file.java");
465ab676d4d63fcc480c6f13e61fc0750591b48db45Narayan Kamath        assertEquals("B) returns a wrong file", "/dir1/file.java",
466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                u1.getFile());
467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
468cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
469cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // u should raise a MalFormedURLException because u, the context is
470cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // null
471cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u = null;
472cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u1 = new URL(u, "file.java");
473cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("didn't throw the expected MalFormedURLException");
474cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (MalformedURLException e) {
475cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // valid
476cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
477cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
478cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression test for HARMONY-3258
479cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // testing jar context url with relative file
480cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
481cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // check that relative path with null context is not canonicalized
482cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            String spec = "jar:file:/a!/b/../d";
483cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            URL ctx = null;
484cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u = new URL(ctx, spec);
485cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("1 Wrong file (jar protocol, relative path)", spec, u
486cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toString());
487cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
488cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            spec = "../d";
489cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ctx = new URL("jar:file:/a!/b");
490cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u = new URL(ctx, spec);
491cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("2 Wrong file (jar protocol, relative path)",
492cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    "file:/a!/d", u.getFile());
493cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
494cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            spec = "../d";
495cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ctx = new URL("jar:file:/a!/b/c");
496cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u = new URL(ctx, spec);
497cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("3 Wrong file (jar protocol, relative path)",
498cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    "file:/a!/d", u.getFile());
499cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
500cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            spec = "../d";
501cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ctx = new URL("jar:file:/a!/b/c/d");
502cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u = new URL(ctx, spec);
503cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("4 Wrong file (jar protocol, relative path)",
504cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    "file:/a!/b/d", u.getFile());
505cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
506cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // added the real example
507cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            spec = "../pdf/PDF.settings";
508cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ctx = new URL(
509cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    "jar:file:/C:/Program%20Files/Netbeans-5.5/ide7/modules/org-netbeans-modules-utilities.jar!/org/netbeans/modules/utilities/Layer.xml");
510cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u = new URL(ctx, spec);
511cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(
512cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    "5 Wrong file (jar protocol, relative path)",
513cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    "file:/C:/Program%20Files/Netbeans-5.5/ide7/modules/org-netbeans-modules-utilities.jar!/org/netbeans/modules/pdf/PDF.settings",
514cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    u.getFile());
515cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (MalformedURLException e) {
516cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("Testing jar protocol, relative path failed: " + e);
517cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
518cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
519cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
520cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
521cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.net.URL#URL(java.net.URL, java.lang.String,
522cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     *java.net.URLStreamHandler)
523cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
524cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_net_URLLjava_lang_StringLjava_net_URLStreamHandler()
525cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            throws Exception {
526cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.net.URL(java.net.URL, java.lang.String,
527cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // java.net.URLStreamHandler)
528cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("http://www.yahoo.com");
529cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // basic ones
530cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1 = new URL(u, "file.java", new MyHandler());
531cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("1 returns a wrong protocol", "http", u1.getProtocol());
532cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("1 returns a wrong host", "www.yahoo.com", u1.getHost());
533cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("1 returns a wrong port", -1, u1.getPort());
534cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("1 returns a wrong file", "/file.java", u1.getFile());
535cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("1 returns a wrong anchor", u1.getRef());
536cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
537cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1 = new URL(u, "systemresource:/+/FILE0/test.java", new MyHandler());
538cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("2 returns a wrong protocol", "systemresource", u1
539cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getProtocol());
540cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("2 returns a wrong host", u1.getHost().equals(""));
541cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("2 returns a wrong port", -1, u1.getPort());
542cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("2 returns a wrong file", "/+/FILE0/test.java", u1
543cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getFile());
544cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("2 returns a wrong anchor", u1.getRef());
545cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
546cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1 = new URL(u, "dir1/dir2/../file.java", null);
547cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("3 returns a wrong protocol", "http", u1.getProtocol());
548cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("3 returns a wrong host", "www.yahoo.com", u1.getHost());
549cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("3 returns a wrong port", -1, u1.getPort());
550ab676d4d63fcc480c6f13e61fc0750591b48db45Narayan Kamath        assertEquals("3 returns a wrong file", "/dir1/file.java", u1
551cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getFile());
552cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("3 returns a wrong anchor", u1.getRef());
553cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
554cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // test for question mark processing
555cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("http://www.foo.com/d0/d1/d2/cgi-bin?foo=bar/baz");
556cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
557cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // test for relative file and out of bound "/../" processing
558cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1 = new URL(u, "../dir1/dir2/../file.java", new MyHandler());
559cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("A) returns a wrong file: " + u1.getFile(), u1.getFile()
560cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .equals("/d0/d1/dir1/file.java"));
561cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
562cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // test for absolute and relative file processing
563cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1 = new URL(u, "/../dir1/dir2/../file.java", null);
564ab676d4d63fcc480c6f13e61fc0750591b48db45Narayan Kamath        assertEquals("B) returns a wrong file", "/dir1/file.java",
565cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                u1.getFile());
566cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
567cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URL one;
568cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
569cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            one = new URL("http://www.ibm.com");
570cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (MalformedURLException ex) {
571cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Should not happen.
572cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            throw new RuntimeException(ex.getMessage());
573cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
574cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
575cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            new URL(one, (String) null);
576cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("Specifying null spec on URL constructor should throw MalformedURLException");
577cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (MalformedURLException e) {
578cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
579cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
580cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
581cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
582cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // u should raise a MalFormedURLException because u, the context is
583cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // null
584cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u = null;
585cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u1 = new URL(u, "file.java", new MyHandler());
586cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (MalformedURLException e) {
587cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            return;
588cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
589cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        fail("didn't throw expected MalFormedURLException");
590cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
591cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
592cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
593cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.net.URL#URL(java.lang.String, java.lang.String,
594cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     *java.lang.String)
595cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
596cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_lang_StringLjava_lang_StringLjava_lang_String()
597cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            throws MalformedURLException {
598cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
599cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("http", "www.yahoo.com", "test.html#foo");
600cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("http", u.getProtocol());
601cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("www.yahoo.com", u.getHost());
602cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(-1, u.getPort());
603ab676d4d63fcc480c6f13e61fc0750591b48db45Narayan Kamath        assertEquals("/test.html", u.getFile());
604cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("foo", u.getRef());
605cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
606cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Strange behavior in reference, the hostname contains a ':' so it gets
607cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // wrapped in '[', ']'
608cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URL testURL = new URL("http", "www.apache.org:8080", "test.html#anch");
609cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("wrong protocol", "http", testURL.getProtocol());
610cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("wrong host", "[www.apache.org:8080]", testURL.getHost());
611cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("wrong port", -1, testURL.getPort());
612ab676d4d63fcc480c6f13e61fc0750591b48db45Narayan Kamath        assertEquals("wrong file", "/test.html", testURL.getFile());
613cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("wrong anchor", "anch", testURL.getRef());
614cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
615cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
616cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
617cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.net.URL#URL(java.lang.String, java.lang.String, int,
618cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     *java.lang.String)
619cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
620cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_lang_StringLjava_lang_StringILjava_lang_String()
621cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            throws MalformedURLException {
622cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("http", "www.yahoo.com", 8080, "test.html#foo");
623cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("SSIS returns a wrong protocol", "http", u.getProtocol());
624cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("SSIS returns a wrong host", "www.yahoo.com", u.getHost());
625cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("SSIS returns a wrong port", 8080, u.getPort());
626ab676d4d63fcc480c6f13e61fc0750591b48db45Narayan Kamath        // Libcore adds a leading "/"
627ab676d4d63fcc480c6f13e61fc0750591b48db45Narayan Kamath        assertEquals("SSIS returns a wrong file", "/test.html", u.getFile());
628cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("SSIS returns a wrong anchor: " + u.getRef(), u.getRef()
629cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .equals("foo"));
630cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
631cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression for HARMONY-83
632cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        new URL("http", "apache.org", 123456789, "file");
633cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
634cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            new URL("http", "apache.org", -123, "file");
635cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("Assert 0: Negative port should throw exception");
636cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (MalformedURLException e) {
637cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
638cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
639cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
640cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
641cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
642cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
643cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.net.URL#URL(java.lang.String, java.lang.String, int,
644cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     *java.lang.String, java.net.URLStreamHandler)
645cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
646cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_lang_StringLjava_lang_StringILjava_lang_StringLjava_net_URLStreamHandler()
647cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            throws Exception {
648cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.net.URL(java.lang.String, java.lang.String, int,
649cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // java.lang.String, java.net.URLStreamHandler)
650cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("http", "www.yahoo.com", 8080, "test.html#foo", null);
651cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("SSISH1 returns a wrong protocol", "http", u.getProtocol());
652cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("SSISH1 returns a wrong host", "www.yahoo.com", u
653cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getHost());
654cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("SSISH1 returns a wrong port", 8080, u.getPort());
655ab676d4d63fcc480c6f13e61fc0750591b48db45Narayan Kamath        assertEquals("SSISH1 returns a wrong file", "/test.html", u.getFile());
656cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("SSISH1 returns a wrong anchor: " + u.getRef(), u.getRef()
657cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .equals("foo"));
658cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
659cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("http", "www.yahoo.com", 8080, "test.html#foo",
660cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new MyHandler());
661cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("SSISH2 returns a wrong protocol", "http", u.getProtocol());
662cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("SSISH2 returns a wrong host", "www.yahoo.com", u
663cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getHost());
664cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("SSISH2 returns a wrong port", 8080, u.getPort());
665ab676d4d63fcc480c6f13e61fc0750591b48db45Narayan Kamath        assertEquals("SSISH2 returns a wrong file", "/test.html", u.getFile());
666cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("SSISH2 returns a wrong anchor: " + u.getRef(), u.getRef()
667cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .equals("foo"));
668cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
669cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
670cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
671cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.net.URL#equals(java.lang.Object)
672cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
673cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_equalsLjava_lang_Object() throws MalformedURLException {
674cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("http://www.apache.org:8080/dir::23??????????test.html");
675cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1 = new URL("http://www.apache.org:8080/dir::23??????????test.html");
676cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("A) equals returns false for two identical URLs", u
677cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .equals(u1));
678cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("return true for null comparison", !u1.equals(null));
679cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("ftp://www.apache.org:8080/dir::23??????????test.html");
680cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Returned true for non-equal URLs", !u.equals(u1));
681cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
682cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression for HARMONY-6556
683cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("file", null, 0, "/test.txt");
684cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1 = new URL("file", null, 0, "/test.txt");
685cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(u, u1);
686cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
687cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("file", "first.invalid", 0, "/test.txt");
688cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1 = new URL("file", "second.invalid", 0, "/test.txt");
689cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(u.equals(u1));
690cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
691cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("file", "harmony.apache.org", 0, "/test.txt");
692cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1 = new URL("file", "www.apache.org", 0, "/test.txt");
693ab676d4d63fcc480c6f13e61fc0750591b48db45Narayan Kamath        assertFalse(u.equals(u1));
694cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
695cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
696cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
697cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.net.URL#sameFile(java.net.URL)
698cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
699cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_sameFileLjava_net_URL() throws Exception {
700cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method boolean java.net.URL.sameFile(java.net.URL)
701cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("http://www.yahoo.com");
702cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1 = new URL("http", "www.yahoo.com", "");
703cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Should be the same1", u.sameFile(u1));
704cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("http://www.yahoo.com/dir1/dir2/test.html#anchor1");
705cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1 = new URL("http://www.yahoo.com/dir1/dir2/test.html#anchor2");
706cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Should be the same ", u.sameFile(u1));
707cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
708cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // regression test for Harmony-1040
709cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("file", null, -1, "/d:/somedir/");
710cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u1 = new URL("file:/d:/somedir/");
711cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(u.sameFile(u1));
712cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
713cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // regression test for Harmony-2136
714cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URL url1 = new URL("file:///anyfile");
715cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URL url2 = new URL("file://localhost/anyfile");
716cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(url1.sameFile(url2));
717cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
718cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        url1 = new URL("http:///anyfile");
719cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        url2 = new URL("http://localhost/anyfile");
720cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(url1.sameFile(url2));
721cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
722cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        url1 = new URL("ftp:///anyfile");
723cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        url2 = new URL("ftp://localhost/anyfile");
724cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(url1.sameFile(url2));
725cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
726cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        url1 = new URL("jar:file:///anyfile.jar!/");
727cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        url2 = new URL("jar:file://localhost/anyfile.jar!/");
728cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(url1.sameFile(url2));
729cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
730cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
731cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
732cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.net.URL#getContent()
733cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
734cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getContent() {
735cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.lang.Object java.net.URL.getContent()
736cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byte[] ba;
737cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        InputStream is;
738cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String s;
739cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File resources = Support_Resources.createTempFolder();
740cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
741cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Support_Resources.copyFile(resources, null, "hyts_htmltest.html");
742cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u = new URL("file", "", resources.getAbsolutePath()
743cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + "/hyts_htmltest.html");
744cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u.openConnection();
745cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            is = (InputStream) u.getContent();
746cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            is.read(ba = new byte[4096]);
747cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            s = new String(ba);
748cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(
749cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    "Incorrect content "
750cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            + u
751cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            + " does not contain: \" A Seemingly Non Important String \"",
752cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    s.indexOf("A Seemingly Non Important String") >= 0);
753cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IOException e) {
754cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("IOException thrown : " + e.getMessage());
755cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } finally {
756cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Support_Resources.deleteTempFolder(resources);
757cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
758cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
759cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
760cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
761cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.net.URL#getContent(class[])
762cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
763cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getContent_LJavaLangClass() throws Exception {
764cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byte[] ba;
765cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        InputStream is;
766cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String s;
767cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
768cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File resources = Support_Resources.createTempFolder();
769cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
770cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Support_Resources.copyFile(resources, null, "hyts_htmltest.html");
771cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("file", "", resources.getAbsolutePath()
772cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                + "/hyts_htmltest.html");
773cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u.openConnection();
774cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
775cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        is = (InputStream) u.getContent(new Class[] { Object.class });
776cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        is.read(ba = new byte[4096]);
777cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        s = new String(ba);
778cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Incorrect content " + u
779cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                + " does not contain: \" A Seemingly Non Important String \"",
780cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                s.indexOf("A Seemingly Non Important String") >= 0);
781cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
782cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
783cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
784cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
785cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.net.URL#openConnection()
786cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
787cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_openConnection() {
788cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.net.URLConnection java.net.URL.openConnection()
789cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
790cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u = new URL("systemresource:/FILE4/+/types.properties");
791cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            URLConnection uConn = u.openConnection();
792cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNotNull("u.openConnection() returns null", uConn);
793cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (Exception e) {
794cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
795cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
796cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
797cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
798cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.net.URL#toString()
799cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
800cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_toString() {
801cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.lang.String java.net.URL.toString()
802cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
803cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u1 = new URL("http://www.yahoo2.com:9999");
804cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u = new URL(
805cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    "http://www.yahoo1.com:8080/dir1/dir2/test.cgi?point1.html#anchor1");
806cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(
807cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    "a) Does not return the right url string",
808cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
809cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    "http://www.yahoo1.com:8080/dir1/dir2/test.cgi?point1.html#anchor1",
810cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    u.toString());
811cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("b) Does not return the right url string",
812cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    "http://www.yahoo2.com:9999", u1.toString());
813cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("c) Does not return the right url string", u
814cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .equals(new URL(u.toString())));
815cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (Exception e) {
816cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
817cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
818cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
819cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
820cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.net.URL#toExternalForm()
821cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
822cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_toExternalForm() {
823cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.lang.String java.net.URL.toExternalForm()
824cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
825cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u1 = new URL("http://www.yahoo2.com:9999");
826cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u = new URL(
827cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    "http://www.yahoo1.com:8080/dir1/dir2/test.cgi?point1.html#anchor1");
828cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(
829cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    "a) Does not return the right url string",
830cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
831cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    "http://www.yahoo1.com:8080/dir1/dir2/test.cgi?point1.html#anchor1",
832cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    u.toString());
833cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("b) Does not return the right url string",
834cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    "http://www.yahoo2.com:9999", u1.toString());
835cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("c) Does not return the right url string", u
836cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .equals(new URL(u.toString())));
837cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
838cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u = new URL("http:index");
839cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("2 wrong external form", "http:index", u
840cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toExternalForm());
841cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
842cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u = new URL("http", null, "index");
843cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("2 wrong external form", "http:index", u
844cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .toExternalForm());
845cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (Exception e) {
846cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
847cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
848cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
849cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
850cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.net.URL#getFile()
851cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
852cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getFile() throws Exception {
853cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.lang.String java.net.URL.getFile()
854cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("http", "www.yahoo.com:8080", 1233,
855cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "test/!@$%^&*/test.html#foo");
856ab676d4d63fcc480c6f13e61fc0750591b48db45Narayan Kamath        assertEquals("returns a wrong file", "/test/!@$%^&*/test.html", u
857cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getFile());
858cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("http", "www.yahoo.com:8080", 1233, "");
859cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("returns a wrong file", u.getFile().equals(""));
860cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
861cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
862cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
863cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.net.URL#getHost()
864cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
865cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getHost() throws MalformedURLException {
866cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression for HARMONY-60
867cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String ipv6Host = "FEDC:BA98:7654:3210:FEDC:BA98:7654:3210";
868cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URL url = new URL("http", ipv6Host, -1, "myfile");
869cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(("[" + ipv6Host + "]"), url.getHost());
870cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
871cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
872cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
873cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.net.URL#getPort()
874cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
875cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getPort() throws Exception {
876cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method int java.net.URL.getPort()
877cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("http://member12.c++.com:9999");
878cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("return wrong port number " + u.getPort(),
879cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                u.getPort() == 9999);
880cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("http://member12.c++.com:9999/");
881cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("return wrong port number", 9999, u.getPort());
882cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
883cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
884cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
885cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * @throws MalformedURLException
886cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.net.URL#getDefaultPort()
887cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
888cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getDefaultPort() throws MalformedURLException {
889cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("http://member12.c++.com:9999");
890cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(80, u.getDefaultPort());
891cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("ftp://member12.c++.com:9999/");
892cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(21, u.getDefaultPort());
893cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
894cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
895cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
896cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.net.URL#getProtocol()
897cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
898cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getProtocol() throws Exception {
899cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.lang.String java.net.URL.getProtocol()
900cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("http://www.yahoo2.com:9999");
901cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("u returns a wrong protocol: " + u.getProtocol(), u
902cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getProtocol().equals("http"));
903cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
904cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
905cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
906cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.net.URL#getRef()
907cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
908cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getRef() {
909cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.lang.String java.net.URL.getRef()
910cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
911cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u1 = new URL("http://www.yahoo2.com:9999");
912cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u = new URL(
913cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    "http://www.yahoo1.com:8080/dir1/dir2/test.cgi?point1.html#anchor1");
914cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("returns a wrong anchor1", "anchor1", u.getRef());
915cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull("returns a wrong anchor2", u1.getRef());
916cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u1 = new URL("http://www.yahoo2.com#ref");
917cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("returns a wrong anchor3", "ref", u1.getRef());
918cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            u1 = new URL("http://www.yahoo2.com/file#ref1#ref2");
919cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("returns a wrong anchor4", "ref1#ref2", u1.getRef());
920cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (MalformedURLException e) {
921cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("Incorrect URL format : " + e.getMessage());
922cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
923cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
924cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
925cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
926cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.net.URL#getAuthority()
927cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
928cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getAuthority() throws MalformedURLException {
929cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URL testURL = new URL("http", "hostname", 80, "/java?q1#ref");
930cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("hostname:80", testURL.getAuthority());
931cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("hostname", testURL.getHost());
932cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(testURL.getUserInfo());
933cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("/java?q1", testURL.getFile());
934cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("/java", testURL.getPath());
935cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("q1", testURL.getQuery());
936cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("ref", testURL.getRef());
937cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
938cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        testURL = new URL("http", "u:p@home", 80, "/java?q1#ref");
939cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("[u:p@home]:80", testURL.getAuthority());
940cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("[u:p@home]", testURL.getHost());
941cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull(testURL.getUserInfo());
942cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("/java?q1", testURL.getFile());
943cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("/java", testURL.getPath());
944cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("q1", testURL.getQuery());
945cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("ref", testURL.getRef());
946cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
947cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        testURL = new URL("http", "home", -1, "/java");
948cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("wrong authority2", "home", testURL.getAuthority());
949cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("wrong userInfo2", testURL.getUserInfo());
950cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("wrong host2", "home", testURL.getHost());
951cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("wrong file2", "/java", testURL.getFile());
952cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("wrong path2", "/java", testURL.getPath());
953cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("wrong query2", testURL.getQuery());
954cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("wrong ref2", testURL.getRef());
955cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
956cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
957cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
958cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.net.URL#toURL()
959cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
960cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_toURI() throws Exception {
961cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        u = new URL("http://www.apache.org");
962cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URI uri = u.toURI();
963cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(u.equals(uri.toURL()));
964cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
965cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
966cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
967cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.net.URL#openConnection()
968cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
969cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_openConnection_FileProtocal() throws Exception {
970cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression test for Harmony-5779
971cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String basedir = new File("temp.java").getAbsolutePath();
972cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String fileUrlString = "file://localhost/" + basedir;
973cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URLConnection conn = new URL(fileUrlString).openConnection();
974cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("file", conn.getURL().getProtocol());
975cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new File(basedir), new File(conn.getURL().getFile()));
976cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
977cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String nonLocalUrlString = "file://anything/" + basedir;
978cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        conn = new URL(nonLocalUrlString).openConnection();
979cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("ftp", conn.getURL().getProtocol());
980cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(new File(basedir), new File(conn.getURL().getFile()));
981cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
982cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
983cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
984cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * URLStreamHandler implementation class necessary for tests.
985cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
986cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    private class TestURLStreamHandler extends URLStreamHandler {
987cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        public URLConnection openConnection(URL arg0) throws IOException {
988cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
989cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                return arg0.openConnection();
990cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (Throwable e) {
991cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                return null;
992cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
993cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
994cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
995cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        public URLConnection openConnection(URL arg0, Proxy proxy)
996cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                throws IOException {
997cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            return super.openConnection(u, proxy);
998cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
999cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1000cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1001cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1002cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * Check NPE throwing in constructor when protocol argument is null and
1003cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * URLStreamHandler argument is initialized.
1004cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1005cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLnullLjava_lang_StringILjava_lang_StringLjava_net_URLStreamHandler()
1006cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            throws Exception {
1007cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression for HARMONY-1131
1008cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        TestURLStreamHandler lh = new TestURLStreamHandler();
1009cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1010cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1011cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            new URL(null, "1", 0, "file", lh);
1012cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("NullPointerException expected, but nothing was thrown!");
1013cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
1014cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected NullPointerException
1015cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1016cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1017cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1018cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1019cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1020cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * Check NPE throwing in constructor when protocol argument is null and
1021cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * URLStreamHandler argument is null.
1022cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1023cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLnullLjava_lang_StringILjava_lang_StringLnull()
1024cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            throws Exception {
1025cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression for HARMONY-1131
1026cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1027cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            new URL(null, "1", 0, "file", null);
1028cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("NullPointerException expected, but nothing was thrown!");
1029cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
1030cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected NullPointerException
1031cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1032cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1033cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1034cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1035cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * Check NPE throwing in constructor with 4 params when protocol argument is
1036cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * null.
1037cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1038cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLnullLjava_lang_StringILjava_lang_String()
1039cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            throws Exception {
1040cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression for HARMONY-1131
1041cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1042cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            new URL(null, "1", 0, "file");
1043cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("NullPointerException expected, but nothing was thrown!");
1044cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
1045cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected NullPointerException
1046cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1047cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1048cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1049cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1050cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * Check NPE throwing in constructor with 3 params when protocol argument is
1051cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * null.
1052cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1053cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLnullLjava_lang_StringLjava_lang_String()
1054cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            throws Exception {
1055cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression for HARMONY-1131
1056cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1057cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            new URL(null, "1", "file");
1058cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("NullPointerException expected, but nothing was thrown!");
1059cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
1060cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected NullPointerException
1061cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1062cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1063cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1064cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_toExternalForm_Absolute() throws MalformedURLException {
1065cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String strURL = "http://localhost?name=value";
1066cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URL url = new URL(strURL);
1067cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(strURL, url.toExternalForm());
1068cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1069cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        strURL = "http://localhost?name=value/age=12";
1070cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        url = new URL(strURL);
1071cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(strURL, url.toExternalForm());
1072cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1073cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1074cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_toExternalForm_Relative() throws MalformedURLException {
1075cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String strURL = "http://a/b/c/d;p?q";
1076cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String ref = "?y";
1077cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URL url = new URL(new URL(strURL), ref);
1078ab676d4d63fcc480c6f13e61fc0750591b48db45Narayan Kamath        assertEquals("http://a/b/c/d;p?y", url.toExternalForm());
1079cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1080cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1081cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // Regression test for HARMONY-6254
1082cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1083cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // Bogus handler forces file part of URL to be null
1084cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    static class MyHandler2 extends URLStreamHandler {
1085cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1086cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        @Override
1087cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        protected URLConnection openConnection(URL arg0) throws IOException {
1088cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            return null;
1089cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1090cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1091cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        @Override
1092cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        protected void setURL(URL u, String protocol, String host, int port,
1093cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                String authority, String userInfo, String file, String query,
1094cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                String ref) {
1095cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            super.setURL(u, protocol, host, port, authority, userInfo,
1096cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    (String) null, query, ref);
1097cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1098cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1099cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // Test special case of external form with null file part (HARMONY-6254)
1101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_toExternalForm_Null() throws IOException {
1102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URLStreamHandler myHandler = new MyHandler2();
1103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URL url = new URL(null, "foobar://example.com/foobar", myHandler);
1104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String s = url.toExternalForm();
1105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Got wrong URL external form", "foobar://example.com", s);
1106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    static class MockProxySelector extends ProxySelector {
1109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {
1111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            System.out.println("connection failed");
1112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        public List<Proxy> select(URI uri) {
1115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            isSelectCalled = true;
1116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ArrayList<Proxy> proxyList = new ArrayList<Proxy>(1);
1117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            proxyList.add(Proxy.NO_PROXY);
1118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            return proxyList;
1119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    static class MyURLStreamHandler extends URLStreamHandler {
1123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        @Override
1125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        protected URLConnection openConnection(URL arg0) throws IOException {
1126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            return null;
1127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        public void parse(URL url, String spec, int start, int end) {
1130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            parseURL(url, spec, start, end);
1131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.net.URL#URL(String, String, String)
1136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_java_protocol_handler_pkgs_prop()
1138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            throws MalformedURLException {
1139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression test for Harmony-3094
1140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        final String HANDLER_PKGS = "java.protocol.handler.pkgs";
1141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String pkgs = System.getProperty(HANDLER_PKGS);
1142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        System.setProperty(HANDLER_PKGS,
1143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "fake|org.apache.harmony.luni.tests.java.net");
1144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            new URL("test_protocol", "", "fake.jar");
1147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } finally {
1148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (pkgs == null) {
1149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                System.clearProperty(HANDLER_PKGS);
1150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
1151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                System.setProperty(HANDLER_PKGS, pkgs);
1152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath}
1156