(no commit message)
[utils] / support / test / org / wamblee / test / AssertionUtils.java
1 /*
2  * Copyright 2006 the original author or authors.
3  * 
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  * 
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  * 
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package org.wamblee.test;
17
18 import java.util.Iterator;
19 import java.util.Map;
20 import java.util.Set;
21
22 import junit.framework.TestCase;
23
24 /**
25  * Useful assertions for use in test cases.
26  */
27 public final class AssertionUtils {
28
29     /**
30      * Disabled constructor.
31      * 
32      */
33     private AssertionUtils() {
34         // Empty
35     }
36
37     /**
38      * Asserts that two object arrays are equal.
39      * 
40      * @param aExpected
41      *            Expected object array.
42      * @param aActual
43      *            Actual object array.
44      */
45     public static void assertEquals(Object[] aExpected, Object[] aActual) {
46         assertEquals("", aExpected, aActual);
47     }
48
49     /**
50      * Asserts that two object arrays are equal.
51      * 
52      * @param aMsg
53      *            Message.
54      * @param aExpected
55      *            Expected array.
56      * @param aActual
57      *            Actual array.
58      */
59     public static void assertEquals(String aMsg, Object[] aExpected,
60             Object[] aActual) {
61         TestCase.assertEquals(aMsg + ": Array lengths ", aExpected.length,
62                 aActual.length);
63
64         for (int i = 0; i < aExpected.length; i++) {
65             TestCase.assertEquals(aMsg + ": Element " + i, aExpected[i],
66                     aActual[i]);
67         }
68     }
69
70     /**
71      * Asserts that two objects are equal, and in case the object is an Object[]
72      * delegates to {@link #assertEquals(String, Object[], Object[]).
73      * 
74      * @param aMsg
75      *            Message.
76      * @param aExpected
77      *            Expected result.
78      * @param aActual
79      *            Actual result.
80      */
81     public static void assertEquals(String aMsg, Object aExpected,
82             Object aActual) {
83         if (aExpected instanceof Object[]) {
84             AssertionUtils.assertEquals(aMsg, (Object[]) aExpected,
85                     (Object[]) aActual);
86
87             return;
88         }
89
90         TestCase.assertEquals(aMsg, aExpected, aActual);
91     }
92
93     /**
94      * Asserts that two maps are equal by comparing all keys and by checking
95      * that the values for the same keys are the same.
96      * 
97      * @param aMsg
98      *            Message.
99      * @param aExpectedMap
100      *            Expected result.
101      * @param aActual
102      *            Actual result.
103      */
104     public static void assertEquals(String aMsg, Map aExpectedMap, Map aActual) {
105         TestCase.assertEquals("Map sizes differ", aExpectedMap.size(), aActual
106                 .size());
107
108         Set keys = aExpectedMap.keySet();
109
110         for (Iterator i = keys.iterator(); i.hasNext();) {
111             String key = (String) i.next();
112             TestCase.assertTrue("Map does not containg entry for key:" + key,
113                     aActual.containsKey(key));
114             AssertionUtils.assertEquals("Value of key " + key + " of map",
115                     aExpectedMap.get(key), aActual.get(key));
116         }
117     }
118 }