1   package junit.tests.extensions;
2   
3   import junit.framework.*;
4   import junit.extensions.*;
5   
6   public class ExceptionTestCaseTest extends junit.framework.TestCase {
7   
8   	static public class ThrowExceptionTestCase extends ExceptionTestCase {
9   		public ThrowExceptionTestCase(String name, Class exception) {
10  			super(name, exception);
11  		}
12  		public void test() {
13  			throw new IndexOutOfBoundsException();
14  		}
15  	}
16  
17  	static public class ThrowRuntimeExceptionTestCase extends ExceptionTestCase {
18  		public ThrowRuntimeExceptionTestCase(String name, Class exception) {
19  			super(name, exception);
20  		}
21  		public void test() {
22  			throw new RuntimeException();
23  		}
24  	}
25  
26  	static public class ThrowNoExceptionTestCase extends ExceptionTestCase {
27  		public ThrowNoExceptionTestCase(String name, Class exception) {
28  			super(name, exception);
29  		}
30  		public void test() {
31  		}
32  	}
33  
34  	public void testExceptionSubclass() {
35  		ExceptionTestCase test= new ThrowExceptionTestCase("test", IndexOutOfBoundsException.class);
36  		TestResult result= test.run();
37  		assertEquals(1, result.runCount());
38  		assertTrue(result.wasSuccessful());
39  	}
40  	public void testExceptionTest() {
41  		ExceptionTestCase test= new ThrowExceptionTestCase("test", IndexOutOfBoundsException.class);
42  		TestResult result= test.run();
43  		assertEquals(1, result.runCount());
44  		assertTrue(result.wasSuccessful());
45  	}
46  	public void testFailure() {
47  		ExceptionTestCase test= new ThrowRuntimeExceptionTestCase("test", IndexOutOfBoundsException.class);
48  		TestResult result= test.run();
49  		assertEquals(1, result.runCount());
50  		assertEquals(1, result.errorCount());
51  	}
52  	public void testNoException() {
53  		ExceptionTestCase test= new ThrowNoExceptionTestCase("test", Exception.class);
54  		TestResult result= test.run();
55  		assertEquals(1, result.runCount());
56  		assertEquals(1, result.failureCount());
57  	}
58  	public void testWrongException() {
59  		ExceptionTestCase test= new ThrowRuntimeExceptionTestCase("test", IndexOutOfBoundsException.class);
60  		TestResult result= test.run();
61  		assertEquals(1, result.runCount());
62  		assertEquals(1, result.errorCount());
63  	}
64  }