summaryrefslogtreecommitdiffstats
path: root/utils-test/src/main/java/org/onap/policy/common/utils/test/ExceptionsTester.java
diff options
context:
space:
mode:
Diffstat (limited to 'utils-test/src/main/java/org/onap/policy/common/utils/test/ExceptionsTester.java')
-rw-r--r--utils-test/src/main/java/org/onap/policy/common/utils/test/ExceptionsTester.java490
1 files changed, 48 insertions, 442 deletions
diff --git a/utils-test/src/main/java/org/onap/policy/common/utils/test/ExceptionsTester.java b/utils-test/src/main/java/org/onap/policy/common/utils/test/ExceptionsTester.java
index 8705c48c..156fca89 100644
--- a/utils-test/src/main/java/org/onap/policy/common/utils/test/ExceptionsTester.java
+++ b/utils-test/src/main/java/org/onap/policy/common/utils/test/ExceptionsTester.java
@@ -22,7 +22,6 @@ package org.onap.policy.common.utils.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.lang.reflect.Constructor;
@@ -31,7 +30,7 @@ import java.lang.reflect.Constructor;
* Used to test various Exception subclasses. Uses reflection to identify the
* constructors that the subclass supports.
*/
-public class ExceptionsTester {
+public class ExceptionsTester extends ThrowablesTester {
/**
* Runs tests, on an Exception subclass, for all of the standard
@@ -40,144 +39,43 @@ public class ExceptionsTester {
*
* @param claz
* subclass to be tested
- * @return the number of constructors that the test found/tested
- * @throws Exception
- * if the Exception cannot be constructed
+ * @return the number of constructors that were found/tested
+ * @throws ConstructionError
+ * if the Exception subclass cannot be constructed
+ * @throws AssertionError
+ * if the constructed objects fail to pass various tests
*/
- public <T extends Exception> int test(Class<T> claz) throws Exception {
- int ncons = 0;
+ public <T extends Exception> int test(Class<T> claz) {
+ int ncons = testException(claz);
- ncons += testDefault(claz);
- ncons += testString(claz);
- ncons += testThrowable(claz);
- ncons += testException(claz);
- ncons += testStringThrowable(claz);
- ncons += testStringException(claz);
- ncons += testStringThrowableBooleanBoolean(claz);
- ncons += testStringExceptionBooleanBoolean(claz);
-
assertTrue(ncons > 0);
return ncons;
}
/**
- * Tests exceptions created via the default constructor. Verifies that:
- * <ul>
- * <li><i>toString()</i> returns a non-null value</li>
- * <li><i>getMessage()</i> returns null</li>
- * <li><i>getCause()</i> returns null</li>
- * </ul>
- *
- * If the Exception subclass does not support this type of constructor, then
- * this method simply returns.
- *
- * @param claz
- * subclass to be tested
- * @return {@code 1}, if the subclass supports this type of constructor,
- * {@code 0} otherwise
- * @throws Exception
- * if the Exception cannot be constructed
- */
- public <T extends Exception> int testDefault(Class<T> claz) throws Exception {
- Constructor<T> cons;
-
- try {
- cons = claz.getConstructor();
-
- } catch (NoSuchMethodException | SecurityException e) {
- // this constructor is not defined so nothing to test
- return 0;
- }
-
- T ex = cons.newInstance();
-
- assertNotNull(ex.toString());
- assertNull(ex.getMessage());
- assertNull(ex.getCause());
-
- return 1;
- }
-
- /**
- * Tests exceptions created via the constructor that takes just a String.
- * Verifies that:
- * <ul>
- * <li><i>toString()</i> returns a non-null value</li>
- * <li><i>getMessage()</i> returns the original message passed to the
- * constructor</li>
- * <li><i>getCause()</i> returns null</li>
- * </ul>
- *
- * If the Exception subclass does not support this type of constructor, then
- * this method simply returns.
- *
- * @param claz
- * subclass to be tested
- * @return {@code 1}, if the subclass supports this type of constructor,
- * {@code 0} otherwise
- * @throws Exception
- * if the Exception cannot be constructed
- */
- public <T extends Exception> int testString(Class<T> claz) throws Exception {
- Constructor<T> cons;
-
- try {
- cons = claz.getConstructor(String.class);
-
- } catch (NoSuchMethodException | SecurityException e) {
- // this constructor is not defined so nothing to test
- return 0;
- }
-
- T ex = cons.newInstance("hello");
-
- assertNotNull(ex.toString());
- assertEquals("hello", ex.getMessage());
- assertNull(ex.getCause());
-
- return 1;
- }
-
- /**
- * Tests exceptions created via the constructor that takes just a Throwable.
- * Verifies that:
- * <ul>
- * <li><i>toString()</i> returns a non-null value</li>
- * <li><i>getMessage()</i> returns the cause's message</li>
- * <li><i>getCause()</i> returns the original cause passed to the
- * constructor</li>
- * </ul>
- *
- * If the Exception subclass does not support this type of constructor, then
- * this method simply returns.
+ * Runs tests, on an Exception subclass, for all of the standard
+ * constructors. If the Exception subclass does not support a given type of
+ * constructor, then it skips that test. Does <i>not</i> throw an exception
+ * if no standard constructors are found.
*
* @param claz
* subclass to be tested
- * @return {@code 1}, if the subclass supports this type of constructor,
- * {@code 0} otherwise
- * @throws Exception
- * if the Exception cannot be constructed
+ * @return the number of constructors that were found/tested
+ * @throws ConstructionError
+ * if the Exception subclass cannot be constructed
+ * @throws AssertionError
+ * if the constructed objects fail to pass various tests
*/
- public <T extends Exception> int testThrowable(Class<T> claz) throws Exception {
- Constructor<T> cons;
-
- try {
- cons = claz.getConstructor(Throwable.class);
-
- } catch (NoSuchMethodException | SecurityException e) {
- // this constructor is not defined so nothing to test
- return 0;
- }
-
- Throwable cause = new Throwable("expected exception");
- T ex = cons.newInstance(cause);
+ public <T extends Exception> int testException(Class<T> claz) {
+ int ncons = 0;
- assertEquals(ex.getMessage(), ex.getMessage());
- assertNotNull(ex.toString());
- assertEquals(cause, ex.getCause());
+ ncons += testThrowable(claz);
+ ncons += testException_Exception(claz);
+ ncons += testException_StringException(claz);
+ ncons += testException_StringExceptionBooleanBoolean(claz);
- return 1;
+ return ncons;
}
/**
@@ -197,22 +95,19 @@ public class ExceptionsTester {
* subclass to be tested
* @return {@code 1}, if the subclass supports this type of constructor,
* {@code 0} otherwise
- * @throws Exception
- * if the Exception cannot be constructed
+ * @throws ConstructionError
+ * if the Exception subclass cannot be constructed
+ * @throws AssertionError
+ * if the constructed objects fail to pass various tests
*/
- public <T extends Exception> int testException(Class<T> claz) throws Exception {
- Constructor<T> cons;
-
- try {
- cons = claz.getConstructor(Exception.class);
-
- } catch (NoSuchMethodException | SecurityException e) {
- // this constructor is not defined so nothing to test
+ public <T extends Exception> int testException_Exception(Class<T> claz) {
+ Constructor<T> cons = getConstructor(claz, "exception", Exception.class);
+ if (cons == null) {
return 0;
}
- Exception cause = new Exception("expected exception");
- T ex = cons.newInstance(cause);
+ Exception cause = new Exception(EXPECTED_EXCEPTION_MSG);
+ T ex = newInstance(cons, cause);
assertNotNull(ex.toString());
assertEquals(ex.getMessage(), ex.getMessage());
@@ -222,48 +117,6 @@ public class ExceptionsTester {
}
/**
- * Tests exceptions created via the constructor that takes a String and a
- * Throwable. Verifies that:
- * <ul>
- * <li><i>toString()</i> returns a non-null value</li>
- * <li><i>getMessage()</i> returns the original message passed to the
- * constructor</li>
- * <li><i>getCause()</i> returns the original cause passed to the
- * constructor</li>
- * </ul>
- *
- * If the Exception subclass does not support this type of constructor, then
- * this method simply returns.
- *
- * @param claz
- * subclass to be tested
- * @return {@code 1}, if the subclass supports this type of constructor,
- * {@code 0} otherwise
- * @throws Exception
- * if the Exception cannot be constructed
- */
- public <T extends Exception> int testStringThrowable(Class<T> claz) throws Exception {
- Constructor<T> cons;
-
- try {
- cons = claz.getConstructor(String.class, Throwable.class);
-
- } catch (NoSuchMethodException | SecurityException e) {
- // this constructor is not defined so nothing to test
- return 0;
- }
-
- Throwable cause = new Throwable("expected exception");
- T ex = cons.newInstance("world", cause);
-
- assertNotNull(ex.toString());
- assertEquals("world", ex.getMessage());
- assertEquals(cause, ex.getCause());
-
- return 1;
- }
-
- /**
* Tests exceptions created via the constructor that takes a String and an
* Exception. Verifies that:
* <ul>
@@ -281,22 +134,17 @@ public class ExceptionsTester {
* subclass to be tested
* @return {@code 1}, if the subclass supports this type of constructor,
* {@code 0} otherwise
- * @throws Exception
- * if the Exception cannot be constructed
+ * @throws ConstructionError
+ * if the Exception subclass cannot be constructed
*/
- public <T extends Exception> int testStringException(Class<T> claz) throws Exception {
- Constructor<T> cons;
-
- try {
- cons = claz.getConstructor(String.class, Exception.class);
-
- } catch (NoSuchMethodException | SecurityException e) {
- // this constructor is not defined so nothing to test
+ public <T extends Exception> int testException_StringException(Class<T> claz) {
+ Constructor<T> cons = getConstructor(claz, "string-exception", String.class, Exception.class);
+ if (cons == null) {
return 0;
}
- Exception cause = new Exception("expected exception");
- T ex = cons.newInstance("world", cause);
+ Exception cause = new Exception(EXPECTED_EXCEPTION_MSG);
+ T ex = newInstance(cons, "world", cause);
assertNotNull(ex.toString());
assertEquals("world", ex.getMessage());
@@ -306,52 +154,6 @@ public class ExceptionsTester {
}
/**
- * Tests exceptions created via the constructor that takes a String, a
- * Throwable, and two booleans. Verifies that:
- * <ul>
- * <li><i>toString()</i> returns a non-null value</li>
- * <li><i>getMessage()</i> returns the original message passed to the
- * constructor</li>
- * <li><i>getCause()</i> returns the original cause passed to the
- * constructor</li>
- * <li>suppressed exceptions can be added, if enabled</li>
- * <li>the stack trace can be added, if enabled</li>
- * </ul>
- *
- * If the Exception subclass does not support this type of constructor, then
- * this method simply returns.
- *
- * @param claz
- * subclass to be tested
- * @return {@code 1}, if the subclass supports this type of constructor,
- * {@code 0} otherwise
- * @throws Exception
- * if the Exception cannot be constructed
- */
- public <T extends Exception> int testStringThrowableBooleanBoolean(Class<T> claz) throws Exception {
- Constructor<T> cons;
-
- try {
- cons = claz.getConstructor(String.class, Throwable.class, Boolean.TYPE, Boolean.TYPE);
-
- } catch (NoSuchMethodException | SecurityException e) {
- // this constructor is not defined so nothing to test
- return 0;
- }
-
- // test each combination of "message" and "cause"
- testMessageCauseCombos(cons);
-
- // test each combination of the boolean flags
- testSuppressStack(cons);
- testSuppressNoStack(cons);
- testNoSuppressStack(cons);
- testNoSuppressNoStack(cons);
-
- return 1;
- }
-
- /**
* Tests exceptions created via the constructor that takes a String, an
* Exception, and two booleans. Verifies that:
* <ul>
@@ -371,218 +173,22 @@ public class ExceptionsTester {
* subclass to be tested
* @return {@code 1}, if the subclass supports this type of constructor,
* {@code 0} otherwise
- * @throws Exception
- * if the Exception cannot be constructed
+ * @throws ConstructionError
+ * if the Exception subclass cannot be constructed
*/
- public <T extends Exception> int testStringExceptionBooleanBoolean(Class<T> claz) throws Exception {
- Constructor<T> cons;
-
- try {
- cons = claz.getConstructor(String.class, Exception.class, Boolean.TYPE, Boolean.TYPE);
-
- } catch (NoSuchMethodException | SecurityException e) {
- // this constructor is not defined so nothing to test
+ public <T extends Exception> int testException_StringExceptionBooleanBoolean(Class<T> claz) {
+ Constructor<T> cons = getConstructor(claz, "string-exception-flags", String.class, Exception.class,
+ Boolean.TYPE, Boolean.TYPE);
+ if (cons == null) {
return 0;
}
// test each combination of "message" and "cause"
- testMessageCauseCombos(cons);
+ testThrowable_MessageCauseCombos(cons);
// test each combination of the boolean flags
- testFlagCombos(cons);
+ testThrowable_FlagCombos(cons);
return 1;
}
-
- /**
- * Tests each combination of values for the "message" and the "cause" when
- * using the constructor that takes a String, a Throwable/Exception, and two
- * booleans. Verifies that expected values are returned by <i>toString()/i>,
- * <i>getMessage()</i>, and <i>getCause()</i>.
- * </ul>
- *
- * @param cons
- * constructor to be invoked
- * @throws Exception
- * if the Exception cannot be constructed
- */
- private <T extends Exception> void testMessageCauseCombos(Constructor<T> cons) throws Exception {
- T ex;
- Exception cause = new Exception("expected throwable");
-
- ex = cons.newInstance(null, null, true, true);
- assertNotNull(ex.toString());
- assertNull(ex.getMessage());
- assertNull(ex.getCause());
-
- ex = cons.newInstance("abc", null, true, true);
- assertNotNull(ex.toString());
- assertEquals("abc", ex.getMessage());
- assertNull(ex.getCause());
-
- ex = cons.newInstance(null, cause, true, true);
- assertNotNull(ex.toString());
- assertNull(ex.getMessage());
- assertEquals(cause, ex.getCause());
-
- ex = cons.newInstance("xyz", cause, true, true);
- assertNotNull(ex.toString());
- assertEquals("xyz", ex.getMessage());
- assertEquals(cause, ex.getCause());
- }
-
- /**
- * Tests each combination of values for the "message" and the "cause" when
- * using the constructor that takes a String, a Throwable/Exception, and two
- * booleans. Verifies that expected values are returned by <i>toString()/i>,
- * <i>getMessage()</i>, and <i>getCause()</i>.
- * </ul>
- *
- * @param cons
- * constructor to be invoked
- * @throws Exception
- * if the Exception cannot be constructed
- */
- public <T extends Exception> void testFlagCombos(Constructor<T> cons) throws Exception {
- testSuppressStack(cons);
- testSuppressNoStack(cons);
- testNoSuppressStack(cons);
- testNoSuppressNoStack(cons);
- }
-
- /**
- * Tests exceptions constructed with {@code enableSuppression=true} and
- * {@code writableStackTrace=true}. Verifies that:
- * <ul>
- * <li><i>toString()</i> returns a non-null value</li>
- * <li><i>getMessage()</i> returns the original message passed to the
- * constructor</li>
- * <li><i>getCause()</i> returns the original cause passed to the
- * constructor</li>
- * <li>suppressed exceptions are added</li>
- * <li>the stack trace is added</li>
- * </ul>
- *
- * @param cons
- * the exception's class constructor
- * @throws Exception
- * if the Exception cannot be constructed
- */
- public <T extends Exception> void testSuppressStack(Constructor<T> cons) throws Exception {
- Exception cause = new Exception("expected exception");
- Throwable supr = new Throwable("expected suppressed exception");
- T ex = cons.newInstance("yes,yes", cause, true, true);
-
- ex.addSuppressed(supr);
-
- assertNotNull(ex.toString());
- assertEquals("yes,yes", ex.getMessage());
- assertEquals(cause, ex.getCause());
-
- assertEquals(1, ex.getSuppressed().length);
- assertEquals(supr, ex.getSuppressed()[0]);
-
- assertTrue(ex.getStackTrace().length > 0);
- }
-
- /**
- * Tests exceptions constructed with {@code enableSuppression=true} and
- * {@code writableStackTrace=false}. Verifies that:
- * <ul>
- * <li><i>toString()</i> returns a non-null value</li>
- * <li><i>getMessage()</i> returns the original message passed to the
- * constructor</li>
- * <li><i>getCause()</i> returns the original cause passed to the
- * constructor</li>
- * <li>suppressed exceptions are added</li>
- * <li>the stack trace is <i>not</i> added</li>
- * </ul>
- *
- * @param cons
- * the exception's class constructor
- * @throws Exception
- * if the Exception cannot be constructed
- */
- public <T extends Exception> void testSuppressNoStack(Constructor<T> cons) throws Exception {
- Exception cause = new Exception("expected exception");
- Throwable supr = new Throwable("expected suppressed exception");
- T ex = cons.newInstance("yes,no", cause, true, false);
-
- ex.addSuppressed(supr);
-
- assertNotNull(ex.toString());
- assertEquals("yes,no", ex.getMessage());
- assertEquals(cause, ex.getCause());
-
- assertEquals(1, ex.getSuppressed().length);
- assertEquals(supr, ex.getSuppressed()[0]);
-
- assertEquals(0, ex.getStackTrace().length);
- }
-
- /**
- * Tests exceptions constructed with {@code enableSuppression=false} and
- * {@code writableStackTrace=true}. Verifies that:
- * <ul>
- * <li><i>toString()</i> returns a non-null value</li>
- * <li><i>getMessage()</i> returns the original message passed to the
- * constructor</li>
- * <li><i>getCause()</i> returns the original cause passed to the
- * constructor</li>
- * <li>suppressed exceptions are <i>not</i> added</li>
- * <li>the stack trace is added</li>
- * </ul>
- *
- * @param cons
- * the exception's class constructor
- * @throws Exception
- * if the Exception cannot be constructed
- */
- public <T extends Exception> void testNoSuppressStack(Constructor<T> cons) throws Exception {
- Exception cause = new Exception("expected exception");
- Throwable supr = new Throwable("expected suppressed exception");
- T ex = cons.newInstance("no,yes", cause, false, true);
-
- ex.addSuppressed(supr);
-
- assertNotNull(ex.toString());
- assertEquals("no,yes", ex.getMessage());
- assertEquals(cause, ex.getCause());
-
- assertEquals(0, ex.getSuppressed().length);
-
- assertTrue(ex.getStackTrace().length > 0);
- }
-
- /**
- * Tests exceptions constructed with {@code enableSuppression=false} and
- * {@code writableStackTrace=false}. Verifies that:
- * <ul>
- * <li><i>toString()</i> returns a non-null value</li>
- * <li><i>getMessage()</i> returns the original message passed to the
- * constructor</li>
- * <li><i>getCause()</i> returns the original cause passed to the
- * constructor</li>
- * <li>suppressed exceptions are <i>not</i> added</li>
- * <li>the stack trace is <i>not</i> added</li>
- *
- * @param cons
- * the exception's class constructor
- * @throws Exception
- * if the Exception cannot be constructed
- */
- public <T extends Exception> void testNoSuppressNoStack(Constructor<T> cons) throws Exception {
- Exception cause = new Exception("expected exception");
- Throwable supr = new Throwable("expected suppressed exception");
- T ex = cons.newInstance("no,no", cause, false, false);
-
- ex.addSuppressed(supr);
-
- assertNotNull(ex.toString());
- assertEquals("no,no", ex.getMessage());
- assertEquals(cause, ex.getCause());
-
- assertEquals(0, ex.getSuppressed().length);
- assertEquals(0, ex.getStackTrace().length);
- }
}