1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.luni.tests.java.net; 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ByteArrayInputStream; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ByteArrayOutputStream; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.File; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.FilePermission; 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.InputStream; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.FileNameMap; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.HttpURLConnection; 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.JarURLConnection; 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.MalformedURLException; 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.SocketPermission; 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.URL; 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.URLConnection; 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.URLStreamHandler; 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Permission; 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.ArrayList; 36c729464f50e82b7fc40cc648c06f203aeb038d27Jesse Wilsonimport java.util.Arrays; 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Calendar; 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.GregorianCalendar; 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.List; 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Map; 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.TimeZone; 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport tests.support.Support_Configuration; 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport tests.support.resource.Support_Resources; 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class URLConnectionTest extends junit.framework.TestCase { 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static class MockURLConnection extends URLConnection { 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public MockURLConnection(URL url) { 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(url); 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void connect() { 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes connected = true; 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static class NewHandler extends URLStreamHandler { 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected URLConnection openConnection(URL u) throws IOException { 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return new HttpURLConnection(u) { 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void connect() throws IOException { 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes connected = true; 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void disconnect() { 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // do nothing 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean usingProxy() { 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return false; 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static String getContentType(String fileName) throws IOException { 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String resourceName = "org/apache/harmony/luni/tests/" + fileName; 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URL url = ClassLoader.getSystemClassLoader().getResource(resourceName); 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull("Cannot find test resource " + resourceName, url); 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return url.openConnection().getContentType(); 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URL url; 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URLConnection uc; 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void setUp() throws Exception { 91c729464f50e82b7fc40cc648c06f203aeb038d27Jesse Wilson url = new URL("http://localhost/"); 92c729464f50e82b7fc40cc648c06f203aeb038d27Jesse Wilson uc = url.openConnection(); 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void tearDown() { 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ((HttpURLConnection) uc).disconnect(); 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#addRequestProperty(String, String) 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_addRequestProperty() throws MalformedURLException, 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes IOException { 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockURLConnection u = new MockURLConnection(new URL( 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://www.apache.org")); 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Regression for HARMONY-604 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes u.addRequestProperty(null, "someValue"); 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Expected NullPointerException"); 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes u.addRequestProperty("key", "value"); 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes u.addRequestProperty("key", "value2"); 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("value2", u.getRequestProperty("key")); 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ArrayList list = new ArrayList(); 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes list.add("value2"); 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes list.add("value"); 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Map<String, List<String>> propertyMap = u.getRequestProperties(); 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Check this map is unmodifiable 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes propertyMap.put("test", null); 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Map returned by URLConnection.getRequestProperties() should be unmodifiable"); 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (UnsupportedOperationException e) { 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes List<String> valuesList = propertyMap.get("key"); 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Check this list is also unmodifiable 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes valuesList.add("test"); 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("List entries in the map returned by URLConnection.getRequestProperties() should be unmodifiable"); 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (UnsupportedOperationException e) { 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(list, valuesList); 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes u.connect(); 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // state of connection is checked first 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // so no NPE in case of null 'field' param 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes u.addRequestProperty(null, "someValue"); 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Expected IllegalStateException"); 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @tests java.net.URLConnection#addRequestProperty(java.lang.String, java.lang.String) 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_addRequestPropertyLjava_lang_StringLjava_lang_String() 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws IOException { 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.setRequestProperty("prop", "yo"); 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.setRequestProperty("prop", "yo2"); 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("yo2", uc.getRequestProperty("prop")); 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Map<String, List<String>> map = uc.getRequestProperties(); 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes List<String> props = uc.getRequestProperties().get("prop"); 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, props.size()); 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // the map should be unmodifiable 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes map.put("hi", Arrays.asList(new String[] { "bye" })); 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("could modify map"); 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (UnsupportedOperationException e) { 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // the list should be unmodifiable 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes props.add("hi"); 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("could modify list"); 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (UnsupportedOperationException e) { 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes File resources = Support_Resources.createTempFolder(); 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Support_Resources.copyFile(resources, null, "hyts_att.jar"); 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URL fUrl1 = new URL("jar:file:" + resources.getPath() 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "/hyts_att.jar!/"); 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes JarURLConnection con1 = (JarURLConnection) fUrl1.openConnection(); 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes map = con1.getRequestProperties(); 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(map); 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, map.size()); 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // the map should be unmodifiable 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes map.put("hi", Arrays.asList(new String[] { "bye" })); 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(); 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (UnsupportedOperationException e) { 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#getAllowUserInteraction() 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getAllowUserInteraction() { 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.setAllowUserInteraction(false); 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("getAllowUserInteraction should have returned false", uc 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getAllowUserInteraction()); 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.setAllowUserInteraction(true); 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("getAllowUserInteraction should have returned true", uc 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getAllowUserInteraction()); 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#getContentEncoding() 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getContentEncoding() { 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // should not be known for a file 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("getContentEncoding failed: " + uc.getContentEncoding(), uc 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getContentEncoding()); 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#getContentType() 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getContentType_regression() throws IOException { 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Regression for HARMONY-4699 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("application/rtf", getContentType("test.rtf")); 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("text/plain", getContentType("test.java")); 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // RI would return "content/unknown" 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("application/msword", getContentType("test.doc")); 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("text/html", getContentType("test.htx")); 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("application/xml", getContentType("test.xml")); 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("text/plain", getContentType(".")); 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#getDate() 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getDate() { 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // should be greater than 930000000000L which represents the past 237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (uc.getDate() == 0) { 238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .println("WARNING: server does not support 'Date', in test_getDate"); 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("getDate gave wrong date: " + uc.getDate(), 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.getDate() > 930000000000L); 243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#getDefaultAllowUserInteraction() 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getDefaultAllowUserInteraction() { 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean oldSetting = URLConnection.getDefaultAllowUserInteraction(); 251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URLConnection.setDefaultAllowUserInteraction(false); 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse( 254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "getDefaultAllowUserInteraction should have returned false", 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URLConnection.getDefaultAllowUserInteraction()); 256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URLConnection.setDefaultAllowUserInteraction(true); 258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("getDefaultAllowUserInteraction should have returned true", 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URLConnection.getDefaultAllowUserInteraction()); 260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URLConnection.setDefaultAllowUserInteraction(oldSetting); 262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#getDefaultRequestProperty(java.lang.String) 266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("deprecation") 268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getDefaultRequestPropertyLjava_lang_String() { 269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URLConnection.setDefaultRequestProperty("Shmoo", "Blah"); 270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("setDefaultRequestProperty should have returned: null", 271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URLConnection.getDefaultRequestProperty("Shmoo")); 272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URLConnection.setDefaultRequestProperty("Shmoo", "Boom"); 274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("setDefaultRequestProperty should have returned: null", 275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URLConnection.getDefaultRequestProperty("Shmoo")); 276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("setDefaultRequestProperty should have returned: null", 278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URLConnection.getDefaultRequestProperty("Kapow")); 279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URLConnection.setDefaultRequestProperty("Shmoo", null); 281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#getDefaultUseCaches() 285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getDefaultUseCaches() { 287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean oldSetting = uc.getDefaultUseCaches(); 288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.setDefaultUseCaches(false); 290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("getDefaultUseCaches should have returned false", uc 291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getDefaultUseCaches()); 292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.setDefaultUseCaches(true); 294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("getDefaultUseCaches should have returned true", uc 295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getDefaultUseCaches()); 296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.setDefaultUseCaches(oldSetting); 298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#getDoInput() 302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getDoInput() { 304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Should be set to true by default", uc.getDoInput()); 305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.setDoInput(true); 307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Should have been set to true", uc.getDoInput()); 308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.setDoInput(false); 310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Should have been set to false", uc.getDoInput()); 311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#getDoOutput() 315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getDoOutput() { 317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Should be set to false by default", uc.getDoOutput()); 318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.setDoOutput(true); 320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Should have been set to true", uc.getDoOutput()); 321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.setDoOutput(false); 323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Should have been set to false", uc.getDoOutput()); 324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#getExpiration() 328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getExpiration() { 330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // should be unknown 331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("getExpiration returned wrong expiration", 0, uc 332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getExpiration()); 333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#getFileNameMap() 337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getFileNameMap() { 339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Tests for the standard MIME types -- users may override these 340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // in their JRE 341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes FileNameMap map = URLConnection.getFileNameMap(); 342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // These types are defaulted 344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("text/html", map.getContentTypeFor(".htm")); 345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("text/html", map.getContentTypeFor(".html")); 346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("text/plain", map.getContentTypeFor(".text")); 347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("text/plain", map.getContentTypeFor(".txt")); 348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // These types come from the properties file 350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("application/pdf", map.getContentTypeFor(".pdf")); 351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("application/zip", map.getContentTypeFor(".zip")); 352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URLConnection.setFileNameMap(new FileNameMap() { 354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public String getContentTypeFor(String fileName) { 355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return "Spam!"; 356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }); 358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Incorrect FileNameMap returned", "Spam!", 360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URLConnection.getFileNameMap().getContentTypeFor(null)); 361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // unset the map so other tests don't fail 363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URLConnection.setFileNameMap(null); 364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // RI fails since it does not support fileName that does not begin with 366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // '.' 367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("image/gif", map.getContentTypeFor("gif")); 368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#getHeaderFieldDate(java.lang.String, long) 372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getHeaderFieldDateLjava_lang_StringJ() { 374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (uc.getHeaderFieldDate("Date", 22L) == 22L) { 376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out 377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .println("WARNING: Server does not support 'Date', test_getHeaderFieldDateLjava_lang_StringJ not run"); 378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return; 379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Wrong value returned: " 381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + uc.getHeaderFieldDate("Date", 22L), uc.getHeaderFieldDate( 382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Date", 22L) > 930000000000L); 383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes long time = uc.getHeaderFieldDate("Last-Modified", 0); 385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Wrong date: ", time, 386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Support_Configuration.URLConnectionLastModified); 387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#getHeaderField(java.lang.String) 391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getHeaderFieldLjava_lang_String() { 393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String hf; 394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hf = uc.getHeaderField("Content-Encoding"); 395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (hf != null) { 396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull( 397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Wrong value returned for header field 'Content-Encoding': " 398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + hf, hf); 399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hf = uc.getHeaderField("Content-Length"); 401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (hf != null) { 402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Wrong value returned for header field 'Content-Length': ", 404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "25", hf); 405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hf = uc.getHeaderField("Content-Type"); 407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (hf != null) { 408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Wrong value returned for header field 'Content-Type': " 409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + hf, hf.contains("text/html")); 410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hf = uc.getHeaderField("content-type"); 412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (hf != null) { 413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Wrong value returned for header field 'content-type': " 414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + hf, hf.contains("text/html")); 415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hf = uc.getHeaderField("Date"); 417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (hf != null) { 418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Wrong value returned for header field 'Date': " + hf, 419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Integer.parseInt(hf.substring(hf.length() - 17, 420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hf.length() - 13)) >= 1999); 421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hf = uc.getHeaderField("Expires"); 423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (hf != null) { 424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull( 425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Wrong value returned for header field 'Expires': " + hf, 426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hf); 427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hf = uc.getHeaderField("SERVER"); 429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (hf != null) { 430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Wrong value returned for header field 'SERVER': " + hf 431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + " (expected " + Support_Configuration.HomeAddressSoftware 432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ")", hf.equals(Support_Configuration.HomeAddressSoftware)); 433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hf = uc.getHeaderField("Last-Modified"); 435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (hf != null) { 436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue( 437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Wrong value returned for header field 'Last-Modified': " 438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + hf, 439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hf 440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .equals(Support_Configuration.URLConnectionLastModifiedString)); 441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hf = uc.getHeaderField("accept-ranges"); 443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (hf != null) { 444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue( 445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Wrong value returned for header field 'accept-ranges': " 446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + hf, hf.equals("bytes")); 447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hf = uc.getHeaderField("DoesNotExist"); 449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (hf != null) { 450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Wrong value returned for header field 'DoesNotExist': " 451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + hf, hf); 452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#getIfModifiedSince() 457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getIfModifiedSince() { 459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.setIfModifiedSince(200); 460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Returned wrong ifModifiedSince value", 200, uc 461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getIfModifiedSince()); 462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#getLastModified() 466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getLastModified() { 468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (uc.getLastModified() == 0) { 469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out 470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .println("WARNING: Server does not support 'Last-Modified', test_getLastModified() not run"); 471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return; 472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue( 474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Returned wrong getLastModified value. Wanted: " 475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + Support_Configuration.URLConnectionLastModified 476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + " got: " + uc.getLastModified(), 477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.getLastModified() == Support_Configuration.URLConnectionLastModified); 478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#getRequestProperties() 482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getRequestProperties() { 484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.setRequestProperty("whatever", "you like"); 485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Map headers = uc.getRequestProperties(); 486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // content-length should always appear 488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes List header = (List) headers.get("whatever"); 489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(header); 490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("you like", header.get(0)); 492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(headers.size() >= 1); 494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // the map should be unmodifiable 497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes headers.put("hi", "bye"); 498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(); 499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (UnsupportedOperationException e) { 500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // the list should be unmodifiable 503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes header.add("hi"); 504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(); 505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (UnsupportedOperationException e) { 506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#getRequestProperties() 512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getRequestProperties_Exception() throws IOException { 514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URL url = new URL("http", "test", 80, "index.html", new NewHandler()); 515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URLConnection urlCon = url.openConnection(); 516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes urlCon.connect(); 517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes urlCon.getRequestProperties(); 520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IllegalStateException"); 521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#getRequestProperty(java.lang.String) 528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getRequestProperty_LString_Exception() throws IOException { 530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URL url = new URL("http", "test", 80, "index.html", new NewHandler()); 531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URLConnection urlCon = url.openConnection(); 532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes urlCon.setRequestProperty("test", "testProperty"); 533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("testProperty", urlCon.getRequestProperty("test")); 534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes urlCon.connect(); 536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes urlCon.getRequestProperty("test"); 538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IllegalStateException"); 539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#getRequestProperty(java.lang.String) 546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getRequestPropertyLjava_lang_String() { 548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.setRequestProperty("Yo", "yo"); 549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Wrong property returned: " + uc.getRequestProperty("Yo"), 550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.getRequestProperty("Yo").equals("yo")); 551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Wrong property returned: " + uc.getRequestProperty("No"), 552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.getRequestProperty("No")); 553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#getURL() 557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getURL() { 559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Incorrect URL returned", uc.getURL().equals(url)); 560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#getUseCaches() 564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getUseCaches() { 566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.setUseCaches(false); 567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("getUseCaches should have returned false", !uc 568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getUseCaches()); 569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.setUseCaches(true); 570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("getUseCaches should have returned true", uc.getUseCaches()); 571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#guessContentTypeFromStream(java.io.InputStream) 575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_guessContentTypeFromStreamLjava_io_InputStream() 577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws IOException { 578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] headers = new String[] { "<html>", "<head>", " <head ", 579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "<body", "<BODY ", "<!DOCTYPE html", "<?xml " }; 580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] expected = new String[] { "text/html", "text/html", 581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "text/html", "text/html", "text/html", "text/html", 582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "application/xml" }; 583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] encodings = new String[] { "ASCII", "UTF-8", "UTF-16BE", 585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "UTF-16LE", "UTF-32BE", "UTF-32LE" }; 586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < headers.length; i++) { 587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (String enc : encodings) { 588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InputStream is = new ByteArrayInputStream(toBOMBytes( 589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes headers[i], enc)); 590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String mime = URLConnection.guessContentTypeFromStream(is); 591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("checking " + headers[i] + " with " + enc, 592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes expected[i], mime); 593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Try simple case 597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URLConnection.guessContentTypeFromStream(null); 599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NullPointerException"); 600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test magic bytes 605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[][] bytes = new byte[][] { { 'P', 'K' }, { 'G', 'I' } }; 606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes expected = new String[] { "application/zip", "image/gif" }; 607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < bytes.length; i++) { 609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InputStream is = new ByteArrayInputStream(bytes[i]); 610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(expected[i], URLConnection 611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .guessContentTypeFromStream(is)); 612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteArrayInputStream bais = new ByteArrayInputStream(new byte[0]); 615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(URLConnection.guessContentTypeFromStream(bais)); 616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bais.close(); 617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#setAllowUserInteraction(boolean) 621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_setAllowUserInteractionZ() throws MalformedURLException { 623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Regression for HARMONY-72 624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockURLConnection u = new MockURLConnection(new URL( 625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://www.apache.org")); 626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes u.connect(); 627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes u.setAllowUserInteraction(false); 629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Assert 0: expected an IllegalStateException"); 630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#setConnectTimeout(int) 638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_setConnectTimeoutI() throws Exception { 640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URLConnection uc = new URL("http://localhost").openConnection(); 641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, uc.getConnectTimeout()); 642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.setConnectTimeout(0); 643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, uc.getConnectTimeout()); 644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.setConnectTimeout(-100); 646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IllegalArgumentException"); 647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // correct 649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, uc.getConnectTimeout()); 651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.setConnectTimeout(100); 652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(100, uc.getConnectTimeout()); 653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.setConnectTimeout(-1); 655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IllegalArgumentException"); 656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // correct 658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(100, uc.getConnectTimeout()); 660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#setDefaultAllowUserInteraction(boolean) 664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_setDefaultAllowUserInteractionZ() { 666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Used to test", true); 667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#setDefaultRequestProperty(java.lang.String, 6718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath *java.lang.String) 672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_setDefaultRequestPropertyLjava_lang_StringLjava_lang_String() { 674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Used to test", true); 675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#setDefaultUseCaches(boolean) 679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_setDefaultUseCachesZ() { 681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Used to test", true); 682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#setFileNameMap(java.net.FileNameMap) 687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_setFileNameMapLjava_net_FileNameMap() throws IOException { 689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // nothing happens if set null 690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URLConnection.setFileNameMap(null); 691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // take no effect 692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(URLConnection.getFileNameMap()); 693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#setIfModifiedSince(long) 697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_setIfModifiedSinceJ() throws IOException { 699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URL url = new URL("http://localhost:8080/"); 700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URLConnection connection = url.openConnection(); 701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT")); 702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cal.clear(); 703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cal.set(2000, Calendar.MARCH, 5); 704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes long sinceTime = cal.getTime().getTime(); 706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes connection.setIfModifiedSince(sinceTime); 707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Wrong date set", sinceTime, connection 708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getIfModifiedSince()); 709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#setReadTimeout(int) 714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_setReadTimeoutI() throws Exception { 716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes URLConnection uc = new URL("http://localhost").openConnection(); 717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, uc.getReadTimeout()); 718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.setReadTimeout(0); 719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, uc.getReadTimeout()); 720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.setReadTimeout(-100); 722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IllegalArgumentException"); 723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // correct 725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, uc.getReadTimeout()); 727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.setReadTimeout(100); 728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(100, uc.getReadTimeout()); 729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes uc.setReadTimeout(-1); 731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IllegalArgumentException"); 732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // correct 734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(100, uc.getReadTimeout()); 736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#setRequestProperty(String, String) 740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_setRequestProperty() throws MalformedURLException, 742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes IOException { 743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockURLConnection u = new MockURLConnection(new URL( 745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://www.apache.org")); 746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes u.setRequestProperty(null, "someValue"); 748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Expected NullPointerException"); 749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes u.connect(); 754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // state of connection is checked first 756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // so no NPE in case of null 'field' param 757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes u.setRequestProperty(null, "someValue"); 758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Expected IllegalStateException"); 759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#setRequestProperty(java.lang.String, 7668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath *java.lang.String) 767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 768fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes public void test_setRequestPropertyLjava_lang_StringLjava_lang_String() 7698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath throws MalformedURLException { 770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockURLConnection u = new MockURLConnection(new URL( 771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://www.apache.org")); 772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes u.setRequestProperty("", ""); 774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("", u.getRequestProperty("")); 775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes u.setRequestProperty("key", "value"); 777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("value", u.getRequestProperty("key")); 778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#setUseCaches(boolean) 782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_setUseCachesZ() throws MalformedURLException { 784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Regression for HARMONY-71 785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockURLConnection u = new MockURLConnection(new URL( 786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "http://www.apache.org")); 787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes u.connect(); 788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes u.setUseCaches(true); 790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Assert 0: expected an IllegalStateException"); 791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.net.URLConnection#toString() 798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_toString() { 800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Wrong toString: " + uc.toString(), uc.toString().indexOf( 801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "URLConnection") > 0); 802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private byte[] toBOMBytes(String text, String enc) throws IOException { 805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteArrayOutputStream bos = new ByteArrayOutputStream(); 806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (enc.equals("UTF-8")) { 808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bos.write(new byte[] { (byte) 0xEF, (byte) 0xBB, (byte) 0xBF }); 809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (enc.equals("UTF-16BE")) { 811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bos.write(new byte[] { (byte) 0xFE, (byte) 0xFF }); 812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (enc.equals("UTF-16LE")) { 814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bos.write(new byte[] { (byte) 0xFF, (byte) 0xFE }); 815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (enc.equals("UTF-32BE")) { 817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bos.write(new byte[] { (byte) 0x00, (byte) 0x00, (byte) 0xFE, 818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xFF }); 819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (enc.equals("UTF-32LE")) { 821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bos.write(new byte[] { (byte) 0xFF, (byte) 0xFE, (byte) 0x00, 822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00 }); 823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bos.write(text.getBytes(enc)); 826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return bos.toByteArray(); 827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 829