1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership. 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License. You may obtain a copy of the License at 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 18ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamathpackage org.apache.harmony.tests.java.lang.reflect; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.ByteArrayOutputStream; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.CharArrayWriter; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.PrintStream; 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.PrintWriter; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.reflect.Constructor; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.reflect.InvocationTargetException; 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.reflect.Method; 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.reflect.Modifier; 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class InvocationTargetExceptionTest extends junit.framework.TestCase { 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static class TestMethod { 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestMethod() { 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void voidMethod() throws IllegalArgumentException { 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void parmTest(int x, short y, String s, boolean bool, Object o, 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project long l, byte b, char c, double d, float f) { 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int intMethod() { 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return 1; 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final void printTest(int x, short y, String s, 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean bool, Object o, long l, byte b, char c, double d, 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project float f) { 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public double doubleMethod() { 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return 1.0; 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public short shortMethod() { 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return (short) 1; 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public byte byteMethod() { 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return (byte) 1; 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public float floatMethod() { 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return 1.0f; 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public long longMethod() { 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return 1l; 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public char charMethod() { 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return 'T'; 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Object objectMethod() { 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return new Object(); 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static void prstatic() { 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static void pustatic() { 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static synchronized void pustatsynch() { 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static int invokeStaticTest() { 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return 1; 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int invokeInstanceTest() { 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return 1; 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private int privateInvokeTest() { 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return 1; 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int invokeExceptionTest() throws NullPointerException { 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new NullPointerException(); 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static synchronized native void pustatsynchnat(); 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project abstract class AbstractTestMethod { 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public abstract void puabs(); 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 111f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project class SubInvocationTargetException extends InvocationTargetException {} 113f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 115229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.lang.reflect.InvocationTargetException#InvocationTargetException() 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_Constructor() throws Exception { 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Constructor<InvocationTargetException> ctor = InvocationTargetException.class 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getDeclaredConstructor(); 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull("Parameterless constructor does not exist.", ctor); 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Constructor is not protected", Modifier.isProtected(ctor 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getModifiers())); 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //create an instance of a subtype using this constructor 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SubInvocationTargetException subException = new SubInvocationTargetException(); 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 128229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.lang.reflect.InvocationTargetException#InvocationTargetException(java.lang.Throwable) 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_ConstructorLjava_lang_Throwable() { 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.lang.reflect.InvocationTargetException(java.lang.Throwable) 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Method mth = TestMethod.class.getDeclaredMethod( 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "invokeExceptionTest", new Class[0]); 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object[] args = { Object.class }; 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object ret = mth.invoke(new TestMethod(), new Object[0]); 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvocationTargetException e) { 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Correct behaviour 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchMethodException e) { 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalAccessException e) { 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Failed to throw exception"); 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 148229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.lang.reflect.InvocationTargetException#InvocationTargetException(java.lang.Throwable, 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * java.lang.String) 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_ConstructorLjava_lang_ThrowableLjava_lang_String() { 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.lang.reflect.InvocationTargetException(java.lang.Throwable, 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.lang.String) 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Method mth = TestMethod.class.getDeclaredMethod( 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "invokeExceptionTest", new Class[0]); 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object[] args = { Object.class }; 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object ret = mth.invoke(new TestMethod(), new Object[0]); 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvocationTargetException e) { 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Correct behaviour 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchMethodException e) { 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ; 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalAccessException e) { 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Failed to throw exception"); 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 171229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.lang.reflect.InvocationTargetException#getTargetException() 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getTargetException() { 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.lang.Throwable 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.lang.reflect.InvocationTargetException.getTargetException() 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Method mth = TestMethod.class.getDeclaredMethod( 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "invokeExceptionTest", new Class[0]); 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object[] args = { Object.class }; 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object ret = mth.invoke(new TestMethod(), new Object[0]); 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvocationTargetException e) { 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Correct behaviour 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned incorrect target exception", e 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getTargetException() instanceof NullPointerException); 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception during constructor test : " + e.getMessage()); 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Failed to throw exception"); 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 191f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 193229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.lang.reflect.InvocationTargetException#getCause() 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getCause() { 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.lang.reflect.InvocationTargetException.getCause() 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Method mth = TestMethod.class.getDeclaredMethod( 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "invokeExceptionTest", new Class[0]); 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object[] args = {Object.class}; 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object ret = mth.invoke(new TestMethod(), new Object[0]); 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvocationTargetException e) { 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Correct behaviour 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned incorrect cause", 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project e.getCause() instanceof NullPointerException); 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception during InvocationTargetException test : " 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + e.getMessage()); 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Failed to throw exception"); 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 215229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.lang.reflect.InvocationTargetException#printStackTrace() 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_printStackTrace() { 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method void 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.lang.reflect.InvocationTargetException.printStackTrace() 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ByteArrayOutputStream bao = new ByteArrayOutputStream(); 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PrintStream ps = new PrintStream(bao); 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PrintStream oldErr = System.err; 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project System.setErr(ps); 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project InvocationTargetException ite = new InvocationTargetException(null); 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ite.printStackTrace(); 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project System.setErr(oldErr); 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String s = new String(bao.toByteArray()); 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Incorrect Stack trace: " + s, s != null 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && s.length() > 300); 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("printStackTrace() caused exception : " + e.getMessage()); 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 239229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.lang.reflect.InvocationTargetException#printStackTrace(java.io.PrintStream) 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_printStackTraceLjava_io_PrintStream() { 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method void 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.lang.reflect.InvocationTargetException.printStackTrace(java.io.PrintStream) 244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Tested via test_printStackTrace().", true); 245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ByteArrayOutputStream bao = new ByteArrayOutputStream(); 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PrintStream ps = new PrintStream(bao); 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project InvocationTargetException ite = new InvocationTargetException( 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new InvocationTargetException(null)); 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ite.printStackTrace(ps); 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String s = bao.toString(); 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("printStackTrace failed." + s.length(), s != null 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && s.length() > 400); 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 256229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.lang.reflect.InvocationTargetException#printStackTrace(java.io.PrintWriter) 257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_printStackTraceLjava_io_PrintWriter() { 259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method void 260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.lang.reflect.InvocationTargetException.printStackTrace(java.io.PrintWriter) 261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PrintWriter pw; 263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project InvocationTargetException ite; 264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String s; 265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CharArrayWriter caw = new CharArrayWriter(); 266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project pw = new PrintWriter(caw); 267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ite = new InvocationTargetException(new InvocationTargetException( 268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project null)); 269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ite.printStackTrace(pw); 270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project s = caw.toString(); 272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("printStackTrace failed." + s.length(), s != null 273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && s.length() > 400); 274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project pw.close(); 275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ByteArrayOutputStream bao = new ByteArrayOutputStream(); 277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project pw = new PrintWriter(bao); 278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ite = new InvocationTargetException(new InvocationTargetException( 279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project null)); 280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ite.printStackTrace(pw); 281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project pw.flush(); // Test will fail if this line removed. 283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project s = bao.toString(); 284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("printStackTrace failed." + s.length(), s != null 285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && s.length() > 400); 286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception during test : " + e.getMessage()); 289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Sets up the fixture, for example, open a network connection. This method 294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * is called before a test is executed. 295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void setUp() { 297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tears down the fixture, for example, close a network connection. This 301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * method is called after a test is executed. 302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void tearDown() { 304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 306