X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=support%2Fgeneral%2Fsrc%2Ftest%2Fjava%2Forg%2Fwamblee%2Ftest%2FAssertionUtils.java;h=a0216a8b994128fa314c69c9954580e9ed7e9180;hb=12cfffc613724b7368016b5e3bc83a686d3a6733;hp=8d179db7ad1d488a9d53361c414b3adea6d1e5f8;hpb=32a62ca2c752e33a7873ac868a7a1f289caedcd4;p=utils diff --git a/support/general/src/test/java/org/wamblee/test/AssertionUtils.java b/support/general/src/test/java/org/wamblee/test/AssertionUtils.java index 8d179db7..a0216a8b 100644 --- a/support/general/src/test/java/org/wamblee/test/AssertionUtils.java +++ b/support/general/src/test/java/org/wamblee/test/AssertionUtils.java @@ -15,18 +15,24 @@ */ package org.wamblee.test; +import java.util.Arrays; import java.util.Iterator; import java.util.Map; import java.util.Set; import junit.framework.TestCase; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + /** * Useful assertions for use in test cases. * * @author Erik Brakkee */ public final class AssertionUtils { + + private static final Log LOG = LogFactory.getLog(AssertionUtils.class); /** * Disabled constructor. @@ -35,7 +41,7 @@ public final class AssertionUtils { private AssertionUtils() { // Empty } - + /** * Asserts that two object arrays are equal. * @@ -44,9 +50,10 @@ public final class AssertionUtils { * @param aActual * Actual object array. */ - public static void assertEquals(Object[] aExpected, Object[] aActual) { + public static void assertEquals(T[] aExpected, T[] aActual) { assertEquals("", aExpected, aActual); } + /** * Asserts that two object arrays are equal. @@ -58,9 +65,11 @@ public final class AssertionUtils { * @param aActual * Actual array. */ - public static void assertEquals(String aMsg, Object[] aExpected, - Object[] aActual) { - TestCase.assertEquals(aMsg + ": Array lengths ", aExpected.length, + public static void assertEquals(String aMsg, T[] aExpected, + T[] aActual) { + TestCase.assertEquals(aMsg + " expected " + + Arrays.asList(aExpected) + ", actual " + + Arrays.asList(aActual) + ": Array lengths ", aExpected.length, aActual.length); for (int i = 0; i < aExpected.length; i++) { @@ -68,6 +77,7 @@ public final class AssertionUtils { aActual[i]); } } + /** * Asserts that two objects are equal, and in case the object is an Object[] @@ -80,8 +90,8 @@ public final class AssertionUtils { * @param aActual * Actual result. */ - public static void assertEquals(String aMsg, Object aExpected, - Object aActual) { + public static void assertEquals(String aMsg, T aExpected, + T aActual) { if (aExpected instanceof Object[]) { AssertionUtils.assertEquals(aMsg, (Object[]) aExpected, (Object[]) aActual); @@ -103,7 +113,8 @@ public final class AssertionUtils { * @param aActual * Actual result. */ - public static void assertEquals(String aMsg, Map aExpectedMap, Map aActual) { + public static void assertEquals(String aMsg, + Map aExpectedMap, Map aActual) { TestCase.assertEquals("Map sizes differ", aExpectedMap.size(), aActual .size()); @@ -117,4 +128,29 @@ public final class AssertionUtils { aExpectedMap.get(key), aActual.get(key)); } } + + public static interface ErroneousCode { + void run() throws Exception; + } + + /** + * Asserts that an exception occurs. + * @param aRunnable Test cases should create a subclass of this which contains the + * code that should throw an exception. + * @param aType Type of exception that is expected. + */ + public static void assertException(ErroneousCode aObject, Class aType) { + try { + aObject.run(); + throw new RuntimeException("No exception occurred"); + } catch (Throwable t) { + if ( aType.isInstance(t)) { + LOG.info("Expected exception occured " + t.getMessage()); + return; // ok + } + else { + throw new RuntimeException(t); + } + } + } }