1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18 package org.apache.commons.proxy2.exception;
19
20 import static org.junit.Assert.assertEquals;
21 import static org.junit.Assert.assertNull;
22
23 import org.apache.commons.proxy2.util.AbstractTestCase;
24 import org.junit.Test;
25
26 public abstract class AbstractExceptionClassTestCase extends AbstractTestCase
27 {
28 //**********************************************************************************************************************
29 // Fields
30 //**********************************************************************************************************************
31
32 private final Class<?> exceptionClass;
33
34 //**********************************************************************************************************************
35 // Constructors
36 //**********************************************************************************************************************
37
38 public AbstractExceptionClassTestCase(Class<?> exceptionClass)
39 {
40 this.exceptionClass = exceptionClass;
41 }
42
43 //**********************************************************************************************************************
44 // Other Methods
45 //**********************************************************************************************************************
46
47 @Test
48 public void testCauseOnlyConstructor() throws Exception
49 {
50 final Exception cause = new Exception();
51 Exception e = (Exception) exceptionClass.getConstructor(new Class[] { Throwable.class }).newInstance(
52 new Object[] { cause });
53 assertEquals(cause.toString(), e.getMessage());
54 assertEquals(cause, e.getCause());
55 }
56
57 @Test
58 public void testMessageAndCauseConstructor() throws Exception
59 {
60 final Exception cause = new Exception();
61 final String message = "message";
62 Exception e = (Exception) exceptionClass.getConstructor(new Class[] { String.class, Throwable.class })
63 .newInstance(new Object[] { message, cause });
64 assertEquals(message, e.getMessage());
65 assertEquals(cause, e.getCause());
66 }
67
68 @Test
69 public void testMessageOnlyConstructor() throws Exception
70 {
71 final String message = "message";
72 Exception e = (Exception) exceptionClass.getConstructor(new Class[] { String.class }).newInstance(
73 new Object[] { message });
74 assertEquals(message, e.getMessage());
75 assertNull(e.getCause());
76 }
77
78 @Test
79 public void testNoArgConstructor() throws Exception
80 {
81 Exception e = (Exception) exceptionClass.getConstructor(new Class[] {}).newInstance(new Object[] {});
82 assertNull(e.getMessage());
83 assertNull(e.getCause());
84 }
85 }