View Javadoc
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  }