(no commit message)
[utils] / support / general / src / test / java / 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  * @author Erik Brakkee
28  */
29 public final class AssertionUtils {
30
31     /**
32      * Disabled constructor.
33      * 
34      */
35     private AssertionUtils() {
36         // Empty
37     }
38
39     /**
40      * Asserts that two object arrays are equal.
41      * 
42      * @param aExpected
43      *            Expected object array.
44      * @param aActual
45      *            Actual object array.
46      */
47     public static void assertEquals(Object[] aExpected, Object[] aActual) {
48         assertEquals("", aExpected, aActual);
49     }
50
51     /**
52      * Asserts that two object arrays are equal.
53      * 
54      * @param aMsg
55      *            Message.
56      * @param aExpected
57      *            Expected array.
58      * @param aActual
59      *            Actual array.
60      */
61     public static void assertEquals(String aMsg, Object[] aExpected,
62             Object[] aActual) {
63         TestCase.assertEquals(aMsg + ": Array lengths ", aExpected.length,
64                 aActual.length);
65
66         for (int i = 0; i < aExpected.length; i++) {
67             TestCase.assertEquals(aMsg + ": Element " + i, aExpected[i],
68                     aActual[i]);
69         }
70     }
71
72     /**
73      * Asserts that two objects are equal, and in case the object is an Object[]
74      * delegates to {@link #assertEquals(String, Object[], Object[]).
75      * 
76      * @param aMsg
77      *            Message.
78      * @param aExpected
79      *            Expected result.
80      * @param aActual
81      *            Actual result.
82      */
83     public static void assertEquals(String aMsg, Object aExpected,
84             Object aActual) {
85         if (aExpected instanceof Object[]) {
86             AssertionUtils.assertEquals(aMsg, (Object[]) aExpected,
87                     (Object[]) aActual);
88
89             return;
90         }
91
92         TestCase.assertEquals(aMsg, aExpected, aActual);
93     }
94
95     /**
96      * Asserts that two maps are equal by comparing all keys and by checking
97      * that the values for the same keys are the same.
98      * 
99      * @param aMsg
100      *            Message.
101      * @param aExpectedMap
102      *            Expected result.
103      * @param aActual
104      *            Actual result.
105      */
106     public static void assertEquals(String aMsg, Map aExpectedMap, Map aActual) {
107         TestCase.assertEquals("Map sizes differ", aExpectedMap.size(), aActual
108                 .size());
109
110         Set keys = aExpectedMap.keySet();
111
112         for (Iterator i = keys.iterator(); i.hasNext();) {
113             String key = (String) i.next();
114             TestCase.assertTrue("Map does not containg entry for key:" + key,
115                     aActual.containsKey(key));
116             AssertionUtils.assertEquals("Value of key " + key + " of map",
117                     aExpectedMap.get(key), aActual.get(key));
118         }
119     }
120 }