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