Added SetterConfiguration class for configuring how setters correspond to required...
[utils] / support / general / src / test / java / org / wamblee / test / AssertionUtils.java
index fc4040721d9aabeffac4017ad0b5f4907caa0529..824620418797fc7c42dc2688457c789b6a85a325 100644 (file)
@@ -15,6 +15,8 @@
  */
 package org.wamblee.test;
 
+import java.util.Arrays;
+import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -37,25 +39,6 @@ public final class AssertionUtils {
         // Empty
     }
     
-    /**
-     * Asserts that two collections are equal including equality of the elements. 
-     * @param aExpected
-     * @param aActual
-     */
-    public static void assertEquals(List aExpected, List aActual) { 
-       assertEquals(aExpected.toArray(), aActual.toArray());
-    }
-    
-    /**
-     * Asserts that two collections are equal including equality of the elements. 
-     * @param aMsg
-     * @param aExpected
-     * @param aActual
-     */
-    public static void assertEquals(String aMsg, List aExpected, List aActual) { 
-       assertEquals(aMsg, aExpected.toArray(), aActual.toArray());
-    }
-
     /**
      * Asserts that two object arrays are equal.
      * 
@@ -64,9 +47,10 @@ public final class AssertionUtils {
      * @param aActual
      *            Actual object array.
      */
-    public static void assertEquals(Object[] aExpected, Object[] aActual) {
+    public static <T> void assertEquals(T[] aExpected, T[] aActual) {
         assertEquals("", aExpected, aActual);
     }
+    
 
     /**
      * Asserts that two object arrays are equal.
@@ -78,8 +62,8 @@ public final class AssertionUtils {
      * @param aActual
      *            Actual array.
      */
-    public static void assertEquals(String aMsg, Object[] aExpected,
-            Object[] aActual) {
+    public static <T> void assertEquals(String aMsg, T[] aExpected,
+            T[] aActual) {
         TestCase.assertEquals(aMsg + ": Array lengths ", aExpected.length,
                 aActual.length);
 
@@ -88,6 +72,7 @@ public final class AssertionUtils {
                     aActual[i]);
         }
     }
+    
 
     /**
      * Asserts that two objects are equal, and in case the object is an Object[]
@@ -100,8 +85,8 @@ public final class AssertionUtils {
      * @param aActual
      *            Actual result.
      */
-    public static void assertEquals(String aMsg, Object aExpected,
-            Object aActual) {
+    public static <T> void assertEquals(String aMsg, T aExpected,
+            T aActual) {
         if (aExpected instanceof Object[]) {
             AssertionUtils.assertEquals(aMsg, (Object[]) aExpected,
                     (Object[]) aActual);
@@ -123,7 +108,8 @@ public final class AssertionUtils {
      * @param aActual
      *            Actual result.
      */
-    public static void assertEquals(String aMsg, Map aExpectedMap, Map aActual) {
+    public static <Key,Value> void assertEquals(String aMsg, 
+            Map<Key,Value> aExpectedMap, Map<Key,Value> aActual) {
         TestCase.assertEquals("Map sizes differ", aExpectedMap.size(), aActual
                 .size());
 
@@ -137,4 +123,28 @@ 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)) { 
+                       return; // ok 
+               }
+               else { 
+                       throw new RuntimeException(t);
+               }
+       }
+    }
 }