01: /* ====================================================================
02: The Jicarilla Software License
03:
04: Copyright (c) 2003 Leo Simons.
05: All rights reserved.
06:
07: Permission is hereby granted, free of charge, to any person obtaining
08: a copy of this software and associated documentation files (the
09: "Software"), to deal in the Software without restriction, including
10: without limitation the rights to use, copy, modify, merge, publish,
11: distribute, sublicense, and/or sell copies of the Software, and to
12: permit persons to whom the Software is furnished to do so, subject to
13: the following conditions:
14:
15: The above copyright notice and this permission notice shall be
16: included in all copies or substantial portions of the Software.
17:
18: THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19: EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20: MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
21: IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
22: CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23: TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24: SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25: ==================================================================== */
26: package org.jicarilla.container.test;
27:
28: import junit.framework.TestCase;
29:
30: /**
31: * <a href="http://www.junit.org/">JUnit</a> {@link junit.framework.TestCase
32: * testcase} for all exceptions.
33: *
34: * @author <a href="lsimons at jicarilla dot org">Leo Simons</a>
35: * @version $Id: AbstractExceptionTestCase.java,v 1.2 2004/01/10 16:04:50 lsimons Exp $
36: */
37: public abstract class AbstractExceptionTestCase extends TestCase {
38: protected abstract Throwable getInstance();
39:
40: protected abstract Throwable getInstance(String message);
41:
42: protected abstract Throwable getInstance(Throwable t);
43:
44: protected abstract Throwable getInstance(String message,
45: Throwable cause);
46:
47: public void testConstructor() {
48: assertNotNull(getInstance("msg", new RuntimeException()));
49:
50: try {
51: assertNotNull(getInstance(null, null));
52: fail("Expected an exception!");
53: } catch (NullPointerException th) {
54: }
55:
56: try {
57: assertNotNull(getInstance("msg", null));
58: fail("Expected an exception!");
59: } catch (NullPointerException th) {
60: }
61:
62: try {
63: assertNotNull(getInstance(null, new RuntimeException()));
64: fail("Expected an exception!");
65: } catch (NullPointerException th) {
66: }
67:
68: assertNotNull(getInstance(new RuntimeException()));
69: assertNotNull(getInstance("msg"));
70: }
71:
72: public void testGetCause() {
73: RuntimeException re = new RuntimeException();
74: Throwable e = getInstance("msg", re);
75:
76: assertEquals(re, e.getCause());
77: assertEquals("msg", e.getMessage());
78:
79: e = getInstance("msg");
80: assertNull(e.getCause());
81: assertEquals("msg", e.getMessage());
82:
83: // default to jdk 1.3 cause (not that it seems to help,
84: // but it still makes sense)
85: Exception exc = new Exception("blah");
86: try {
87: try {
88: throw exc;
89: } catch (Exception ex) {
90: throw getInstance();
91: }
92: } catch (Throwable ex) {
93: ex.getCause();
94: }
95: }
96: }
|