1cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath/* 2cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Licensed to the Apache Software Foundation (ASF) under one or more 3cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * contributor license agreements. See the NOTICE file distributed with 4cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * this work for additional information regarding copyright ownership. 5cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * The ASF licenses this file to You under the Apache License, Version 2.0 6cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * (the "License"); you may not use this file except in compliance with 7cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * the License. You may obtain a copy of the License at 8cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * 9cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * http://www.apache.org/licenses/LICENSE-2.0 10cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * 11cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Unless required by applicable law or agreed to in writing, software 12cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * distributed under the License is distributed on an "AS IS" BASIS, 13cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * See the License for the specific language governing permissions and 15cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * limitations under the License. 16cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 17cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 18ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamathpackage org.apache.harmony.tests.java.lang; 19cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 20cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.ByteArrayInputStream; 21cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.ByteArrayOutputStream; 22cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.File; 23cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.InputStream; 24cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.PrintStream; 25cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Map; 26cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Properties; 27cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 28cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathpublic class SystemTest extends junit.framework.TestCase { 29cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 30cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static boolean flag = false; 31cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 32cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static boolean ranFinalize = false; 33cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 34cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 35cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.lang.System#setIn(java.io.InputStream) 36cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 37cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_setInLjava_io_InputStream() { 38cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath InputStream orgIn = System.in; 39cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath InputStream in = new ByteArrayInputStream(new byte[0]); 40cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath System.setIn(in); 41cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("in not set", System.in == in); 42cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath System.setIn(orgIn); 43cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 44cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 45cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 46cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.lang.System#setOut(java.io.PrintStream) 47cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 48cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_setOutLjava_io_PrintStream() { 49cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PrintStream orgOut = System.out; 50cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PrintStream out = new PrintStream(new ByteArrayOutputStream()); 51cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath System.setOut(out); 52cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("out not set", System.out == out); 53cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath System.setOut(orgOut); 54cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 55cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 56cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 57cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.lang.System#setErr(java.io.PrintStream) 58cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 59cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_setErrLjava_io_PrintStream() { 60cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PrintStream orgErr = System.err; 61cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PrintStream err = new PrintStream(new ByteArrayOutputStream()); 62cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath System.setErr(err); 63cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("err not set", System.err == err); 64cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath System.setErr(orgErr); 65cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 66cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 67cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 68cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.lang.System#arraycopy(java.lang.Object, int, 69cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *java.lang.Object, int, int) 70cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 71cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_arraycopyLjava_lang_ObjectILjava_lang_ObjectII() { 72cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.lang.System.arraycopy(java.lang.Object, 73cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // int, java.lang.Object, int, int) 74cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Integer a[] = new Integer[20]; 75cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Integer b[] = new Integer[20]; 76cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath int i = 0; 77cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath while (i < a.length) { 78cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath a[i] = new Integer(i); 79cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ++i; 80cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 81cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath System.arraycopy(a, 0, b, 0, a.length); 82cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath for (i = 0; i < a.length; i++) 83cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Copied elements incorrectly", a[i].equals(b[i])); 84cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 85cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /* Non primitive array types don't need to be identical */ 86cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String[] source1 = new String[] { "element1" }; 87cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Object[] dest1 = new Object[1]; 88cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath System.arraycopy(source1, 0, dest1, 0, dest1.length); 89cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Invalid copy 1", dest1[0] == source1[0]); 90cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 91cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath char[][] source = new char[][] { { 'H', 'e', 'l', 'l', 'o' }, 92cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath { 'W', 'o', 'r', 'l', 'd' } }; 93cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath char[][] dest = new char[2][]; 94cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath System.arraycopy(source, 0, dest, 0, dest.length); 95cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Invalid copy 2", dest[0] == source[0] 96cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath && dest[1] == source[1]); 97cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 98cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 99cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.lang.System#currentTimeMillis() 101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_currentTimeMillis() { 103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method long java.lang.System.currentTimeMillis() 104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath long firstRead = System.currentTimeMillis(); 105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Thread.sleep(150); 107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (InterruptedException e) { 108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath long secondRead = System.currentTimeMillis(); 110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Incorrect times returned: " + firstRead + ", " 111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath + secondRead, firstRead < secondRead); 112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.lang.System#exit(int) 116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_exitI() { 118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.lang.System.exit(int) 119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Tested in destructive test: Test_System_Exit ??? 120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.lang.System#getProperties() 124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_getProperties() { 126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method java.util.Properties java.lang.System.getProperties() 127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Properties p = System.getProperties(); 128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Ensure spec'ed properties are non-null. See System.getProperties() 130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // spec. 131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String[] props = { "java.version", "java.vendor", "java.vendor.url", 132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "java.home", "java.vm.specification.version", 133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "java.vm.specification.vendor", "java.vm.specification.name", 134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "java.vm.version", "java.vm.vendor", "java.vm.name", 135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "java.specification.name", "java.specification.vendor", 136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "java.specification.name", "java.class.version", 137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "java.class.path", "java.ext.dirs", "os.name", "os.arch", 138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "os.version", "file.separator", "path.separator", 139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "line.separator", "user.name", "user.home", "user.dir", }; 140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath for (int i = 0; i < props.length; i++) { 141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertNotNull(props[i], System.getProperty(props[i])); 142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.lang.System#getProperty(java.lang.String) 147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_getPropertyLjava_lang_String() { 149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method java.lang.String 150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // java.lang.System.getProperty(java.lang.String) 151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath boolean is8859_1 = true; 153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String encoding = System.getProperty("file.encoding"); 154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath byte[] bytes = new byte[128]; 155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath char[] chars = new char[128]; 156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath for (int i = 0; i < bytes.length; i++) { 157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath bytes[i] = (byte) (i + 128); 158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath chars[i] = (char) (i + 128); 159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String charResult = new String(bytes); 161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath byte[] byteResult = new String(chars).getBytes(); 162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath if (charResult.length() == 128 && byteResult.length == 128) { 163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath for (int i = 0; i < bytes.length; i++) { 164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath if (charResult.charAt(i) != (char) (i + 128) 165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath || byteResult[i] != (byte) (i + 128)) 166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath is8859_1 = false; 167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } else 169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath is8859_1 = false; 170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String[] possibles = new String[] { "ISO8859_1", "8859_1", "ISO8859-1", 171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "ISO-8859-1", "ISO_8859-1", "ISO_8859-1:1978", "ISO-IR-100", 172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "LATIN1", "CSISOLATIN1" }; 173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath boolean found8859_1 = false; 174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath for (int i = 0; i < possibles.length; i++) { 175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath if (possibles[i].equals(encoding)) { 176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath found8859_1 = true; 177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath break; 178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Wrong encoding: " + encoding, !is8859_1 || found8859_1); 181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.lang.System#getProperty(java.lang.String) 185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Tests that there are no extra path separator in boot class path. 186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Regression test for HARMONY-3298 187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_getProperty_bootClassPath() { 189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String bootClassPath = System.getProperty("org.apache.harmony.boot.class.path"); 190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath if (bootClassPath == null) { 192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath bootClassPath = System.getProperty("sun.boot.class.path"); 193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath if (bootClassPath != null 196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath && (bootClassPath.indexOf(File.pathSeparator + File.pathSeparator) >= 0)) { 197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Boot class path contains extra path separator: " + bootClassPath); 198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.lang.System#getProperty(java.lang.String, java.lang.String) 203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_getPropertyLjava_lang_StringLjava_lang_String() { 205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method java.lang.String 206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // java.lang.System.getProperty(java.lang.String, java.lang.String) 207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue(!System.getProperty("java.version", "99999").equals("99999")); 208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("Failed to return correct property value", "bogus", System 209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .getProperty("bogus.prop", "bogus")); 210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.lang.System#setProperty(java.lang.String, java.lang.String) 214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_setPropertyLjava_lang_StringLjava_lang_String() { 216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method java.lang.String 217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // java.lang.System.setProperty(java.lang.String, java.lang.String) 218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertNull("Failed to return null", System.setProperty("testing", 220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "value1")); 221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Failed to return old value", System.setProperty("testing", 222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "value2") == "value1"); 223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Failed to find value", 224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath System.getProperty("testing") == "value2"); 225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath boolean exception = false; 227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath System.setProperty("", "default"); 229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IllegalArgumentException e) { 230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath exception = true; 231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Expected IllegalArgumentException", exception); 233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.lang.System#getSecurityManager() 237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_getSecurityManager() { 239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method java.lang.SecurityManager 240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // java.lang.System.getSecurityManager() 241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertNull("Returned incorrect SecurityManager", System 242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .getSecurityManager()); 243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.lang.System#identityHashCode(java.lang.Object) 247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_identityHashCodeLjava_lang_Object() { 249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method int 250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // java.lang.System.identityHashCode(java.lang.Object) 251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Object o = new Object(); 252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String s = "Gabba"; 253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("Nonzero returned for null", 254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 0, System.identityHashCode(null)); 255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Nonequal has returned for Object", System 256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .identityHashCode(o) == o.hashCode()); 257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Same as usual hash returned for String", System 258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .identityHashCode(s) != s.hashCode()); 259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.lang.System#runFinalization() 263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_runFinalization() { 265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.lang.System.runFinalization() 266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath flag = true; 268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath createInstance(); 269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath int count = 10; 270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // the gc below likely bogosifies the test, but will have to do for 271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // the moment 272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath while (!ranFinalize && count-- > 0) { 273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath System.gc(); 274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath System.runFinalization(); 275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Failed to run finalization", ranFinalize); 277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.lang.System#runFinalizersOnExit(boolean) 281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @SuppressWarnings("deprecation") 283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_runFinalizersOnExitZ() { 284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Can we call the method at least? 285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath System.runFinalizersOnExit(false); 286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.lang.System#setProperties(java.util.Properties) 290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_setPropertiesLjava_util_Properties() { 292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void 293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // java.lang.System.setProperties(java.util.Properties) 294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Properties orgProps = System.getProperties(); 296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath java.util.Properties tProps = new java.util.Properties(); 297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath tProps.put("test.prop", "this is a test property"); 298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath tProps.put("bogus.prop", "bogus"); 299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath System.setProperties(tProps); 300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("Failed to set properties", "this is a test property", System.getProperties() 302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .getProperty("test.prop")); 303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } finally { 304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // restore the original properties 305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath System.setProperties(orgProps); 306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath //Regression Test for Harmony-2356 310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void testEnvUnmodifiable() { 311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Map map = System.getenv(); 312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath map.containsKey(null); 314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw NullPointerExcepiton."); 315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath map.containsKey(new Integer(10)); 321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw ClassCastException."); 322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (ClassCastException e) { 323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath map.containsValue(null); 328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw NullPointerExcepiton."); 329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath map.containsValue(new Integer(10)); 335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw ClassCastException."); 336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (ClassCastException e) { 337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath map.get(null); 342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw NullPointerExcepiton."); 343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath map.get(new Integer(10)); 349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw ClassCastException."); 350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (ClassCastException e) { 351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath map.put(null, "AAA"); 356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw UnsupportedOperationExcepiton."); 357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (UnsupportedOperationException e) { 358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath map.put("AAA", new Integer(10)); 363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw UnsupportedOperationException."); 364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (UnsupportedOperationException e) { 365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath map.put("AAA", "BBB"); 370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw UnsupportedOperationException."); 371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (UnsupportedOperationException e) { 372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath map.clear(); 377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw UnsupportedOperationException."); 378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (UnsupportedOperationException e) { 379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath map.remove(null); 384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Android isn't as strict about requiring this exception; no modification takes place anyway 385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // fail("Should throw UnsupportedOperationException."); 386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (UnsupportedOperationException expected) { 387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected void setUp() { 393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath flag = false; 394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ranFinalize = false; 395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected SystemTest createInstance() { 398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return new SystemTest("FT"); 399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected void finalize() { 403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath if (flag) 404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ranFinalize = true; 405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public SystemTest() { 408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public SystemTest(String name) { 411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath super(name); 412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath} 414