KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > commons > httpclient > TestExceptions


1 /*
2  * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//httpclient/src/test/org/apache/commons/httpclient/TestExceptions.java,v 1.4 2004/03/25 20:37:20 olegk Exp $
3  * $Revision: 480424 $
4  * $Date: 2006-11-29 05:56:49 +0000 (Wed, 29 Nov 2006) $
5  *
6  * ====================================================================
7  *
8  * Licensed to the Apache Software Foundation (ASF) under one or more
9  * contributor license agreements. See the NOTICE file distributed with
10  * this work for additional information regarding copyright ownership.
11  * The ASF licenses this file to You under the Apache License, Version 2.0
12  * (the "License"); you may not use this file except in compliance with
13  * the License. You may obtain a copy of the License at
14  *
15  * http://www.apache.org/licenses/LICENSE-2.0
16  *
17  * Unless required by applicable law or agreed to in writing, software
18  * distributed under the License is distributed on an "AS IS" BASIS,
19  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20  * See the License for the specific language governing permissions and
21  * limitations under the License.
22  * ====================================================================
23  *
24  * This software consists of voluntary contributions made by many
25  * individuals on behalf of the Apache Software Foundation. For more
26  * information on the Apache Software Foundation, please see
27  * <http://www.apache.org/>.
28  *
29  */

30 package org.apache.commons.httpclient;
31
32 import java.io.ByteArrayOutputStream JavaDoc;
33 import java.io.IOException JavaDoc;
34 import java.io.PrintStream JavaDoc;
35 import java.io.PrintWriter JavaDoc;
36 import java.io.StringWriter JavaDoc;
37
38 import junit.framework.Test;
39 import junit.framework.TestCase;
40 import junit.framework.TestSuite;
41
42 /**
43  *
44  * @author <a HREF="mailto:laura@lwerner.org">Laura Werner</a>
45  */

46 public class TestExceptions extends TestCase
47 {
48
49     // ------------------------------------------------------------ Constructor
50
public TestExceptions(String JavaDoc testName) {
51         super(testName);
52     }
53
54     // ------------------------------------------------------------------- Main
55
public static void main(String JavaDoc args[]) {
56         String JavaDoc[] testCaseName = { TestExceptions.class.getName() };
57         junit.textui.TestRunner.main(testCaseName);
58     }
59
60     // ------------------------------------------------------- TestCase Methods
61

62     public static Test suite() {
63         return new TestSuite(TestExceptions.class);
64     }
65
66     /** Make sure that you can retrieve the "cause" from an HttpException */
67     public void testGetCause() {
68         
69         Exception JavaDoc aCause = new IOException JavaDoc("the cause");
70         
71         try {
72             throw new HttpException("http exception", aCause);
73         }
74         catch (HttpException e) {
75             assertEquals("Retrieve cause from caught exception", e.getCause(), aCause);
76         }
77     }
78     
79     /** Make sure HttpConnection prints its stack trace to a PrintWriter properly */
80     public void testStackTraceWriter() {
81         
82         Exception JavaDoc aCause = new IOException JavaDoc("initial exception");
83         try {
84             throw new HttpException("http exception", aCause);
85         }
86         catch (HttpException e) {
87             // Get the stack trace printed into a string
88
StringWriter JavaDoc stringWriter = new StringWriter JavaDoc();
89             PrintWriter JavaDoc writer = new PrintWriter JavaDoc(stringWriter);
90             e.printStackTrace(writer);
91             writer.flush();
92             String JavaDoc stackTrace = stringWriter.toString();
93             
94             // Do some validation on what got printed
95
validateStackTrace(e, stackTrace);
96         }
97     }
98     
99     /** Make sure HttpConnection prints its stack trace to a PrintStream properly */
100     public void testStackTraceStream() {
101         
102         Exception JavaDoc aCause = new IOException JavaDoc("initial exception");
103         try {
104             throw new HttpException("http exception", aCause);
105         }
106         catch (HttpException e) {
107             // Get the stack trace printed into a string
108
ByteArrayOutputStream JavaDoc byteStream = new ByteArrayOutputStream JavaDoc();
109             PrintStream JavaDoc stream = new PrintStream JavaDoc(byteStream);
110             e.printStackTrace(stream);
111             stream.flush();
112             String JavaDoc stackTrace = byteStream.toString(); // Assume default charset
113

114             // Do some validation on what got printed
115
validateStackTrace(e, stackTrace);
116         }
117     }
118     
119     /**
120      * Make sure an HttpException stack trace has the right info in it.
121      * This doesn't bother parsing the whole thing, just does some sanity checks.
122      */

123     private void validateStackTrace(HttpException exception, String JavaDoc stackTrace) {
124         assertTrue("Starts with exception string", stackTrace.startsWith(exception.toString()));
125         
126         Throwable JavaDoc cause = exception.getCause();
127         if (cause != null) {
128             assertTrue("Contains 'cause'", stackTrace.toLowerCase().indexOf("cause") != -1);
129             assertTrue("Contains cause.toString()", stackTrace.indexOf(cause.toString()) != -1);
130         }
131     }
132 }
133
Popular Tags