18bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson/* 28bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * Licensed to the Apache Software Foundation (ASF) under one or more 38bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * contributor license agreements. See the NOTICE file distributed with 48bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * this work for additional information regarding copyright ownership. 58bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * The ASF licenses this file to You under the Apache License, Version 2.0 68bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * (the "License"); you may not use this file except in compliance with 78bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * the License. You may obtain a copy of the License at 88bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * 98bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 108bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * 118bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * Unless required by applicable law or agreed to in writing, software 128bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 138bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 148bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * See the License for the specific language governing permissions and 158bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * limitations under the License. 168bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson */ 178bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 188bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonpackage libcore.java.lang; 198bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 200005cba335019e1dd4e820173f9cf95e2eb74251Narayan Kamathimport java.io.File; 218bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport java.io.IOException; 220005cba335019e1dd4e820173f9cf95e2eb74251Narayan Kamathimport java.lang.reflect.Method; 238bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport java.nio.channels.Channel; 248bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport java.nio.channels.spi.SelectorProvider; 258bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport java.util.Map; 268bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport java.util.Properties; 278bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport java.util.Vector; 288bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 298bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonpublic class OldSystemTest extends junit.framework.TestCase { 308bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 318bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_arraycopyLjava_lang_ObjectILjava_lang_ObjectII() { 328bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson // Test for method void java.lang.System.arraycopy(java.lang.Object, 338bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson // int, java.lang.Object, int, int) 348bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Integer a[] = new Integer[20]; 358bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Integer b[] = new Integer[20]; 368bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 378bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 388bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson // copy from non array object into Object array 398bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.arraycopy(new Object(), 0, b, 0, 0); 408bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("ArrayStoreException is not thrown."); 418bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(ArrayStoreException ase) { 428bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 438bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 448bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 458bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 468bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson // copy from Object array into non array object 478bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.arraycopy(a, 0, new Object(), 0, 0); 488bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("ArrayStoreException is not thrown."); 498bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(ArrayStoreException ase) { 508bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 518bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 528bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 538bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 548bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson // copy from primitive array into object array 558bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.arraycopy(new char[] {'a'}, 0, new String[1], 0, 1); 568bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("ArrayStoreException is not thrown."); 578bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(ArrayStoreException ase) { 588bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 598bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 608bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 618bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 628bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson // copy from object array into primitive array 638bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.arraycopy(new String[] {"a"}, 0, new char[1], 0, 1); 648bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("ArrayStoreException is not thrown."); 658bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(ArrayStoreException ase) { 668bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 678bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 688bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 698bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 708bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson // copy from primitive array into an array of another primitive type 718bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.arraycopy(new char[] {'a'}, 0, new int[1], 0, 1); 728bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("ArrayStoreException is not thrown."); 738bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(ArrayStoreException ase) { 748bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 758bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 768bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 778bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 788bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson // copy from object array into an array of another Object type 798bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.arraycopy(new Character[] {'a'}, 0, new Integer[1], 0, 1); 808bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("ArrayStoreException is not thrown."); 818bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(ArrayStoreException ase) { 828bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 838bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 848bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 858bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 868bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson // copy from null into an array of a primitive type 878bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.arraycopy(null, 0, new int[1], 0, 1); 888bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("NullPointerException is not thrown."); 898bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(NullPointerException npe) { 908bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 918bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 928bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 938bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 948bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson // copy from a primitive array into null 958bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.arraycopy(new int[]{'1'}, 0, null, 0, 1); 968bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("NullPointerException is not thrown."); 978bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(NullPointerException npe) { 988bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 998bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1008bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1018bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 1028bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.arraycopy(a, a.length + 1, b, 0, 1); 1038bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("IndexOutOfBoundsException is not thrown."); 1048bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(IndexOutOfBoundsException ioobe) { 1058bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 1068bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1078bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1088bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 1098bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.arraycopy(a, -1, b, 0, 1); 1108bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("IndexOutOfBoundsException is not thrown."); 1118bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(IndexOutOfBoundsException ioobe) { 1128bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 1138bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1148bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1158bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 1168bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.arraycopy(a, 0, b, -1, 1); 1178bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("IndexOutOfBoundsException is not thrown."); 1188bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(IndexOutOfBoundsException ioobe) { 1198bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 1208bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1218bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1228bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 1238bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.arraycopy(a, 0, b, 0, -1); 1248bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("IndexOutOfBoundsException is not thrown."); 1258bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(IndexOutOfBoundsException ioobe) { 1268bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 1278bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1288bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1298bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 1308bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.arraycopy(a, 11, b, 0, 10); 1318bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("IndexOutOfBoundsException is not thrown."); 1328bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(IndexOutOfBoundsException ioobe) { 1338bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 1348bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1358bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1368bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 1378bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.arraycopy(a, Integer.MAX_VALUE, b, 0, 10); 1388bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("IndexOutOfBoundsException is not thrown."); 1398bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(IndexOutOfBoundsException ioobe) { 1408bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 1418bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1428bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1438bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 1448bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.arraycopy(a, 0, b, Integer.MAX_VALUE, 10); 1458bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("IndexOutOfBoundsException is not thrown."); 1468bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(IndexOutOfBoundsException ioobe) { 1478bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 1488bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1498bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1508bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 1518bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.arraycopy(a, 0, b, 10, Integer.MAX_VALUE); 1528bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("IndexOutOfBoundsException is not thrown."); 1538bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(IndexOutOfBoundsException ioobe) { 1548bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 1558bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1568bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1578bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1588bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_currentTimeMillis() { 1598bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson // Test for method long java.lang.System.currentTimeMillis() 1608bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 1618bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson long firstRead = System.currentTimeMillis(); 1628bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 1638bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Thread.sleep(150); 1648bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch (InterruptedException e) { 1658bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1668bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson long secondRead = System.currentTimeMillis(); 1678bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertTrue("Incorrect times returned: " + firstRead + ", " 1688bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson + secondRead, firstRead < secondRead); 1698bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch (Exception e) { 1708bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("Exception during test: " + e.toString()); 1718bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1728bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1738bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1748bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getProperties() { 1758bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson String [] props = {"java.vendor.url", 1768bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson "java.class.path", "user.home", 1778bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson "java.class.version", "os.version", 1788bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson "java.vendor", "user.dir", 1798bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson /*"user.timezone",*/ "path.separator", 1808bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson "os.name", "os.arch", 1818bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson "line.separator", "file.separator", 1828bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson "user.name", "java.version", "java.home" }; 1838bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1848bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Properties p = System.getProperties(); 1858bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertTrue(p.size() > 0); 1868bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1878bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson // Ensure spec'ed properties are non-null. See System.getProperties() 1888bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson // spec. 1898bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1908bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson for (String prop : props) { 1918bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNotNull("There is no property among returned properties: " 1928bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson + prop, p.getProperty(prop)); 1938bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNotNull("System property is null: " + prop, 1948bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.getProperty(prop)); 1958bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1968bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1978bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1988bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getPropertyLjava_lang_String() { 1998bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 2008bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.getProperty(null); 2018bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("NullPointerException should be thrown."); 2028bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(NullPointerException npe) { 2038bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 2048bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2058bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2068bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 2078bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.getProperty(""); 2088bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("IllegalArgumentException should be thrown."); 2098bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(IllegalArgumentException iae) { 2108bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 2118bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2128bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2138bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2148bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getPropertyLjava_lang_StringLjava_lang_String() { 2158bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 2168bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.getProperty(null, "0.0"); 2178bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("NullPointerException should be thrown."); 2188bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(NullPointerException npe) { 2198bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 2208bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2218bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2228bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 2238bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.getProperty("", "0"); 2248bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("IllegalArgumentException should be thrown."); 2258bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(IllegalArgumentException iae) { 2268bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 2278bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2288bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2298bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2308bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_inheritedChannel() throws IOException { 2318bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Channel iChannel = System.inheritedChannel(); 2328bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNull("Incorrect value of channel", iChannel); 2338bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson SelectorProvider sp = SelectorProvider.provider(); 2348bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals("Incorrect value of channel", 2358bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson sp.inheritedChannel(), iChannel); 2368bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2378bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2388bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_clearProperty() { 2398bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.setProperty("test", "value"); 2408bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.clearProperty("test"); 2418bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNull("Property was not deleted.", System.getProperty("test")); 2428bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2438bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 2448bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.clearProperty(null); 2458bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("NullPointerException is not thrown."); 2468bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(NullPointerException npe) { 2478bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 2488bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2498bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2508bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 2518bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.clearProperty(""); 2528bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("IllegalArgumentException is not thrown."); 2538bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(IllegalArgumentException iae) { 2548bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 2558bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2568bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2578bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2585be2d77fc1556b0623f9edf9e2df738871caf49fTobias Thierer // Android-changed: test_gc() was deleted. PhantomReferenceTest provides basic 2595be2d77fc1556b0623f9edf9e2df738871caf49fTobias Thierer // coverage for the fact that System.gc() executes a garbage collection if 2605be2d77fc1556b0623f9edf9e2df738871caf49fTobias Thierer // followed by System.runFinalization(). 2618bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2628bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getenv() { 2638bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson // String[] props = { "PATH", "HOME", "USER"}; 2648bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson // only PATH of these three exists on android 2658bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson String[] props = { "PATH" }; 2668bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2678bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Map<String,String> envMap = System.getenv(); 2688bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertFalse("environment map is empty.", envMap.isEmpty()); 2698bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertTrue("env map contains less than 3 keys.", 2708bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson props.length < envMap.keySet().size()); 2718bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson for (String prop : props) { 2728bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNotNull("There is no property: " + prop, 2738bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson envMap.get(prop)); 2748bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2758bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2768bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2778bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getenvLString() { 2788bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNotNull("PATH environment variable is not found", 2798bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.getenv("PATH")); 2808bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2818bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNull("Doesn't return NULL for non existent property", 2828bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.getenv("nonexistent.property")); 2838bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2848bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 2858bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.getenv(null); 2868bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("NullPointerException is not thrown."); 2878bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(NullPointerException npe) { 2888bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 2898bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2908bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2918bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2920005cba335019e1dd4e820173f9cf95e2eb74251Narayan Kamath public void test_load() throws Exception { 2938bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 2948bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Runtime.getRuntime().load("nonExistentLibrary"); 2958bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("UnsatisfiedLinkError was not thrown."); 2960005cba335019e1dd4e820173f9cf95e2eb74251Narayan Kamath } catch(UnsatisfiedLinkError expected) { 2978bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2988bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2998bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 3008bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.load("nonExistentLibrary"); 3018bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("UnsatisfiedLinkError was not thrown."); 3020005cba335019e1dd4e820173f9cf95e2eb74251Narayan Kamath } catch(UnsatisfiedLinkError expected) { 3038bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 3048bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 3058bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 3068bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.load(null); 3078bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("NullPointerException was not thrown."); 3080005cba335019e1dd4e820173f9cf95e2eb74251Narayan Kamath } catch(NullPointerException expected) { 3098bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 3100005cba335019e1dd4e820173f9cf95e2eb74251Narayan Kamath 31119b9ddd600d80e8a572b381374e981a679d6dd71Przemyslaw Szczepaniak // Trivial positive test for System.load: Attempt to load a liblog.so - it's guaranteed 31219b9ddd600d80e8a572b381374e981a679d6dd71Przemyslaw Szczepaniak // to exist and is whitelisted for use from applications. Also, it's in the library search 31319b9ddd600d80e8a572b381374e981a679d6dd71Przemyslaw Szczepaniak // path for host builds. 3140005cba335019e1dd4e820173f9cf95e2eb74251Narayan Kamath final ClassLoader cl = getClass().getClassLoader(); 3150005cba335019e1dd4e820173f9cf95e2eb74251Narayan Kamath // ClassLoader.findLibrary has protected access, so it's guaranteed to exist. 3160005cba335019e1dd4e820173f9cf95e2eb74251Narayan Kamath final Method m = ClassLoader.class.getDeclaredMethod("findLibrary", String.class); 3170005cba335019e1dd4e820173f9cf95e2eb74251Narayan Kamath assertNotNull(m); 31819b9ddd600d80e8a572b381374e981a679d6dd71Przemyslaw Szczepaniak String libPath = (String) m.invoke(cl, "log"); 3190005cba335019e1dd4e820173f9cf95e2eb74251Narayan Kamath assertNotNull(libPath); 3200005cba335019e1dd4e820173f9cf95e2eb74251Narayan Kamath System.load(new File(libPath).getAbsolutePath()); 32169496f90f9caa4fb88ce6e7a1bf1b5cbf94421b2Narayan Kamath 32269496f90f9caa4fb88ce6e7a1bf1b5cbf94421b2Narayan Kamath // A negative test for a library that exists but isn't specified as an absolute path. 32369496f90f9caa4fb88ce6e7a1bf1b5cbf94421b2Narayan Kamath // In other words, a name for which System.loadLibrary(libname) would suceed and 32469496f90f9caa4fb88ce6e7a1bf1b5cbf94421b2Narayan Kamath // System.load(libname) would fail. 32569496f90f9caa4fb88ce6e7a1bf1b5cbf94421b2Narayan Kamath String libName = new File(libPath).getName(); 32669496f90f9caa4fb88ce6e7a1bf1b5cbf94421b2Narayan Kamath try { 32769496f90f9caa4fb88ce6e7a1bf1b5cbf94421b2Narayan Kamath System.load(libName); 32869496f90f9caa4fb88ce6e7a1bf1b5cbf94421b2Narayan Kamath fail(); 32969496f90f9caa4fb88ce6e7a1bf1b5cbf94421b2Narayan Kamath } catch (UnsatisfiedLinkError expected) { 33069496f90f9caa4fb88ce6e7a1bf1b5cbf94421b2Narayan Kamath } 3318bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 3328bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 3338bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_loadLibrary() { 3348bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 3358bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.loadLibrary("nonExistentLibrary"); 3368bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("UnsatisfiedLinkError was not thrown."); 3378bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(UnsatisfiedLinkError ule) { 3388bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 3398bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 3408bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 3418bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 3428bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.loadLibrary(null); 3438bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("NullPointerException was not thrown."); 3448bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(NullPointerException npe) { 3458bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 3468bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 3478bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 3488bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 3498bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_mapLibraryName() { 3508bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals("libname.so", System.mapLibraryName("name")); 3518bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 3528bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 3538bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson System.mapLibraryName(null); 3548bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("NullPointerException is not thrown."); 3558bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(NullPointerException npe) { 3568bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 3578bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 3588bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 3598bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 3608bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_nanoTime() { 3618bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson long sleepTime = 5000; 3628bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson long beginTime = System.nanoTime(); 3638bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 3648bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Thread.sleep(sleepTime); 3658bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(Exception e) { 3668bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("Unknown exception was thrown."); 3678bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 3688bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson long endTime = System.nanoTime(); 3698bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertTrue((endTime - beginTime) > sleepTime * 1000000); 3708bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 3718bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson} 372