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.lang; 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ByteArrayInputStream; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ByteArrayOutputStream; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.File; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.InputStream; 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.PrintStream; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Map; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Properties; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class SystemTest extends junit.framework.TestCase { 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static boolean flag = false; 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static boolean ranFinalize = false; 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.System#setIn(java.io.InputStream) 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_setInLjava_io_InputStream() { 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InputStream orgIn = System.in; 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InputStream in = new ByteArrayInputStream(new byte[0]); 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setIn(in); 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("in not set", System.in == in); 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setIn(orgIn); 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.System#setOut(java.io.PrintStream) 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_setOutLjava_io_PrintStream() { 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PrintStream orgOut = System.out; 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PrintStream out = new PrintStream(new ByteArrayOutputStream()); 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setOut(out); 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("out not set", System.out == out); 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setOut(orgOut); 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.System#setErr(java.io.PrintStream) 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_setErrLjava_io_PrintStream() { 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PrintStream orgErr = System.err; 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PrintStream err = new PrintStream(new ByteArrayOutputStream()); 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setErr(err); 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("err not set", System.err == err); 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setErr(orgErr); 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.System#arraycopy(java.lang.Object, int, 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * java.lang.Object, int, int) 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_arraycopyLjava_lang_ObjectILjava_lang_ObjectII() { 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void java.lang.System.arraycopy(java.lang.Object, 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // int, java.lang.Object, int, int) 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Integer a[] = new Integer[20]; 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Integer b[] = new Integer[20]; 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int i = 0; 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (i < a.length) { 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes a[i] = new Integer(i); 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ++i; 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.arraycopy(a, 0, b, 0, a.length); 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (i = 0; i < a.length; i++) 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Copied elements incorrectly", a[i].equals(b[i])); 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* Non primitive array types don't need to be identical */ 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] source1 = new String[] { "element1" }; 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object[] dest1 = new Object[1]; 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.arraycopy(source1, 0, dest1, 0, dest1.length); 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Invalid copy 1", dest1[0] == source1[0]); 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes char[][] source = new char[][] { { 'H', 'e', 'l', 'l', 'o' }, 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { 'W', 'o', 'r', 'l', 'd' } }; 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes char[][] dest = new char[2][]; 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.arraycopy(source, 0, dest, 0, dest.length); 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Invalid copy 2", dest[0] == source[0] 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && dest[1] == source[1]); 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.System#currentTimeMillis() 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_currentTimeMillis() { 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method long java.lang.System.currentTimeMillis() 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes long firstRead = System.currentTimeMillis(); 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Thread.sleep(150); 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InterruptedException e) { 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes long secondRead = System.currentTimeMillis(); 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Incorrect times returned: " + firstRead + ", " 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + secondRead, firstRead < secondRead); 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.System#exit(int) 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_exitI() { 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void java.lang.System.exit(int) 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Tested in destructive test: Test_System_Exit ??? 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.System#getProperties() 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getProperties() { 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method java.util.Properties java.lang.System.getProperties() 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Properties p = System.getProperties(); 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Ensure spec'ed properties are non-null. See System.getProperties() 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // spec. 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] props = { "java.version", "java.vendor", "java.vendor.url", 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "java.home", "java.vm.specification.version", 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "java.vm.specification.vendor", "java.vm.specification.name", 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "java.vm.version", "java.vm.vendor", "java.vm.name", 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "java.specification.name", "java.specification.vendor", 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "java.specification.name", "java.class.version", 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "java.class.path", "java.ext.dirs", "os.name", "os.arch", 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "os.version", "file.separator", "path.separator", 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "line.separator", "user.name", "user.home", "user.dir", }; 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < props.length; i++) { 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(props[i], System.getProperty(props[i])); 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.System#getProperty(java.lang.String) 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getPropertyLjava_lang_String() { 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method java.lang.String 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.lang.System.getProperty(java.lang.String) 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean is8859_1 = true; 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String encoding = System.getProperty("file.encoding"); 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] bytes = new byte[128]; 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes char[] chars = new char[128]; 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < bytes.length; i++) { 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bytes[i] = (byte) (i + 128); 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes chars[i] = (char) (i + 128); 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String charResult = new String(bytes); 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] byteResult = new String(chars).getBytes(); 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (charResult.length() == 128 && byteResult.length == 128) { 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < bytes.length; i++) { 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (charResult.charAt(i) != (char) (i + 128) 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes || byteResult[i] != (byte) (i + 128)) 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes is8859_1 = false; 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes is8859_1 = false; 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] possibles = new String[] { "ISO8859_1", "8859_1", "ISO8859-1", 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "ISO-8859-1", "ISO_8859-1", "ISO_8859-1:1978", "ISO-IR-100", 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "LATIN1", "CSISOLATIN1" }; 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean found8859_1 = false; 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < possibles.length; i++) { 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (possibles[i].equals(encoding)) { 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes found8859_1 = true; 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes break; 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Wrong encoding: " + encoding, !is8859_1 || found8859_1); 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.System#getProperty(java.lang.String) 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests that there are no extra path separator in boot class path. 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Regression test for HARMONY-3298 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getProperty_bootClassPath() { 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String bootClassPath = System.getProperty("org.apache.harmony.boot.class.path"); 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (bootClassPath == null) { 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes bootClassPath = System.getProperty("sun.boot.class.path"); 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (bootClassPath != null 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && (bootClassPath.indexOf(File.pathSeparator + File.pathSeparator) >= 0)) { 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Boot class path contains extra path separator: " + bootClassPath); 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.System#getProperty(java.lang.String, java.lang.String) 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getPropertyLjava_lang_StringLjava_lang_String() { 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method java.lang.String 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.lang.System.getProperty(java.lang.String, java.lang.String) 2072a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes assertTrue(!System.getProperty("java.version", "99999").equals("99999")); 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Failed to return correct property value", "bogus", System 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getProperty("bogus.prop", "bogus")); 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.System#setProperty(java.lang.String, java.lang.String) 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_setPropertyLjava_lang_StringLjava_lang_String() { 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method java.lang.String 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.lang.System.setProperty(java.lang.String, java.lang.String) 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Failed to return null", System.setProperty("testing", 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "value1")); 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Failed to return old value", System.setProperty("testing", 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "value2") == "value1"); 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Failed to find value", 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.getProperty("testing") == "value2"); 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean exception = false; 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty("", "default"); 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes exception = true; 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Expected IllegalArgumentException", exception); 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.System#getSecurityManager() 237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getSecurityManager() { 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method java.lang.SecurityManager 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.lang.System.getSecurityManager() 241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Returned incorrect SecurityManager", System 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getSecurityManager()); 243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.System#identityHashCode(java.lang.Object) 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_identityHashCodeLjava_lang_Object() { 249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method int 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.lang.System.identityHashCode(java.lang.Object) 251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object o = new Object(); 252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String s = "Gabba"; 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Nonzero returned for null", 254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0, System.identityHashCode(null)); 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Nonequal has returned for Object", System 256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .identityHashCode(o) == o.hashCode()); 257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Same as usual hash returned for String", System 258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .identityHashCode(s) != s.hashCode()); 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.System#runFinalization() 263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_runFinalization() { 265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void java.lang.System.runFinalization() 266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes flag = true; 268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes createInstance(); 269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int count = 10; 270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // the gc below likely bogosifies the test, but will have to do for 271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // the moment 272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (!ranFinalize && count-- > 0) { 273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.gc(); 274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.runFinalization(); 275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Failed to run finalization", ranFinalize); 277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.System#runFinalizersOnExit(boolean) 281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("deprecation") 283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_runFinalizersOnExitZ() { 284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Can we call the method at least? 285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.runFinalizersOnExit(false); 286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.System#setProperties(java.util.Properties) 290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_setPropertiesLjava_util_Properties() { 292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.lang.System.setProperties(java.util.Properties) 294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Properties orgProps = System.getProperties(); 296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes java.util.Properties tProps = new java.util.Properties(); 297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tProps.put("test.prop", "this is a test property"); 298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tProps.put("bogus.prop", "bogus"); 299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperties(tProps); 300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Failed to set properties", "this is a test property", System.getProperties() 302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getProperty("test.prop")); 303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // restore the original properties 305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperties(orgProps); 306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //Regression Test for Harmony-2356 310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testEnvUnmodifiable() { 311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Map map = System.getenv(); 312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes map.containsKey(null); 314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerExcepiton."); 315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes map.containsKey(new Integer(10)); 321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw ClassCastException."); 322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassCastException e) { 323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes map.containsValue(null); 328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerExcepiton."); 329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes map.containsValue(new Integer(10)); 335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw ClassCastException."); 336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassCastException e) { 337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes map.get(null); 342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerExcepiton."); 343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes map.get(new Integer(10)); 349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw ClassCastException."); 350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassCastException e) { 351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes map.put(null, "AAA"); 356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw UnsupportedOperationExcepiton."); 357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (UnsupportedOperationException e) { 358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes map.put("AAA", new Integer(10)); 363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw UnsupportedOperationException."); 364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (UnsupportedOperationException e) { 365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes map.put("AAA", "BBB"); 370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw UnsupportedOperationException."); 371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (UnsupportedOperationException e) { 372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes map.clear(); 377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw UnsupportedOperationException."); 378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (UnsupportedOperationException e) { 379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes map.remove(null); 3842a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes // Android isn't as strict about requiring this exception; no modification takes place anyway 3852a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes // fail("Should throw UnsupportedOperationException."); 3862a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes } catch (UnsupportedOperationException expected) { 387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void setUp() { 393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes flag = false; 394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ranFinalize = false; 395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected SystemTest createInstance() { 398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return new SystemTest("FT"); 399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void finalize() { 403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (flag) 404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ranFinalize = true; 405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SystemTest() { 408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SystemTest(String name) { 411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(name); 412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 414