diff --git a/src/test/org/apache/commons/lang/exception/NestableExceptionTestCase.java b/src/test/org/apache/commons/lang/exception/NestableExceptionTestCase.java
index 0c504774f..377d8773e 100644
--- a/src/test/org/apache/commons/lang/exception/NestableExceptionTestCase.java
+++ b/src/test/org/apache/commons/lang/exception/NestableExceptionTestCase.java
@@ -57,6 +57,7 @@ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
+import java.io.PrintStream;
import junit.framework.Test;
import junit.framework.TestSuite;
@@ -66,7 +67,7 @@ import junit.textui.TestRunner;
* Tests the org.apache.commons.lang.exception.NestableException class.
*
* @author Steven Caswell
- * @version $Id: NestableExceptionTestCase.java,v 1.8 2003/05/21 23:49:14 scolebourne Exp $
+ * @version $Id: NestableExceptionTestCase.java,v 1.9 2003/08/07 00:50:30 stevencaswell Exp $
*/
public class NestableExceptionTestCase extends AbstractNestableTestCase {
@@ -242,6 +243,42 @@ public class NestableExceptionTestCase extends AbstractNestableTestCase {
{
return Exception.class;
}
+
+ public void testSpecificPrintStackTrace()
+ {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ PrintStream ps = new PrintStream(baos);
+ NestableException ne = new NestableException("outer", new NestableException("inner", new Exception("another exception")));
+ for(int i = 0; i < 2; i++)
+ {
+ if(i == 0)
+ {
+ // Test printStackTrac()
+ // Replace System.err with our own PrintStream so that we can
+ // obtain and check the printStrackTrace output
+ PrintStream err = System.err;
+ System.setErr(ps);
+ ne.printStackTrace();
+ // Restore the System.err
+ System.setErr(err);
+ }
+ else
+ {
+ // Test printStackTrace(PrintStream)
+ ne.printStackTrace(ps);
+ }
+ }
+ String msg = baos.toString();
+ assertTrue( "printStackTrace() starts with outer message", msg.startsWith("org.apache.commons.lang.exception.NestableException: outer"));
+ assertTrue( "printStackTrace() contains 1st nested message", msg.indexOf("Caused by: org.apache.commons.lang.exception.NestableException: inner") >= 0);
+ assertTrue( "printStackTrace() contains 2nd nested message", msg.indexOf("Caused by: java.lang.Exception: another exception") >= 0);
+ assertTrue( "printStackTrace() inner message after outer message",
+ msg.indexOf("org.apache.commons.lang.exception.NestableException: outer") <
+ msg.indexOf("Caused by: org.apache.commons.lang.exception.NestableException: inner"));
+ assertTrue( "printStackTrace() cause message after inner message",
+ msg.indexOf("Caused by: org.apache.commons.lang.exception.NestableException: inner") <
+ msg.indexOf("Caused by: java.lang.Exception: another exception"));
+ }
public void testSerialization()
throws java.io.IOException, ClassNotFoundException
diff --git a/src/test/org/apache/commons/lang/exception/NestableRuntimeExceptionTestCase.java b/src/test/org/apache/commons/lang/exception/NestableRuntimeExceptionTestCase.java
index c44deadcf..45f8a519d 100644
--- a/src/test/org/apache/commons/lang/exception/NestableRuntimeExceptionTestCase.java
+++ b/src/test/org/apache/commons/lang/exception/NestableRuntimeExceptionTestCase.java
@@ -53,6 +53,8 @@
*/
package org.apache.commons.lang.exception;
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
import junit.framework.Test;
import junit.framework.TestSuite;
import junit.textui.TestRunner;
@@ -61,7 +63,7 @@ import junit.textui.TestRunner;
* Tests the org.apache.commons.lang.exception.NestableRuntimeException class.
*
* @author Steven Caswell
- * @version $Id: NestableRuntimeExceptionTestCase.java,v 1.7 2003/05/21 23:49:14 scolebourne Exp $
+ * @version $Id: NestableRuntimeExceptionTestCase.java,v 1.8 2003/08/07 00:50:30 stevencaswell Exp $
*/
public class NestableRuntimeExceptionTestCase extends AbstractNestableTestCase {
@@ -238,6 +240,45 @@ public class NestableRuntimeExceptionTestCase extends AbstractNestableTestCase {
return RuntimeException.class;
}
+ public void testSpecificPrintStackTrace()
+ {
+ // Test printStackTrac()
+ // Replace System.err with our own PrintStream so that we can obtain
+ // and check the printStrackTrace output
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ PrintStream ps = new PrintStream(baos);
+ NestableRuntimeException ne = new NestableRuntimeException("outer", new NestableRuntimeException("inner", new Exception("another exception")));
+ for(int i = 0; i < 2; i++)
+ {
+ if(i == 0)
+ {
+ // Test printStackTrac()
+ // Replace System.err with our own PrintStream so that we can
+ // obtain and check the printStrackTrace output
+ PrintStream err = System.err;
+ System.setErr(ps);
+ ne.printStackTrace();
+ // Restore the System.err
+ System.setErr(err);
+ }
+ else
+ {
+ // Test printStackTrace(PrintStream)
+ ne.printStackTrace(ps);
+ }
+ }
+ String msg = baos.toString();
+ assertTrue( "printStackTrace() starts with outer message", msg.startsWith("org.apache.commons.lang.exception.NestableRuntimeException: outer"));
+ assertTrue( "printStackTrace() contains 1st nested message", msg.indexOf("Caused by: org.apache.commons.lang.exception.NestableRuntimeException: inner") >= 0);
+ assertTrue( "printStackTrace() contains 2nd nested message", msg.indexOf("Caused by: java.lang.Exception: another exception") >= 0);
+ assertTrue( "printStackTrace() inner message after outer message",
+ msg.indexOf("org.apache.commons.lang.exception.NestableRuntimeException: outer") <
+ msg.indexOf("Caused by: org.apache.commons.lang.exception.NestableRuntimeException: inner"));
+ assertTrue( "printStackTrace() cause message after inner message",
+ msg.indexOf("Caused by: org.apache.commons.lang.exception.NestableRuntimeException: inner") <
+ msg.indexOf("Caused by: java.lang.Exception: another exception"));
+ }
+
}
/**