1 /*
2 * The JUnit-addons Software License, Version 1.0
3 * (based on the Apache Software License, Version 1.1)
4 *
5 * Copyright (c) 2002-2003 Vladimir R. Bossicard. All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 *
14 * 2. Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in
16 * the documentation and/or other materials provided with the
17 * distribution.
18 *
19 * 3. The end-user documentation included with the redistribution, if
20 * any, must include the following acknowlegement:
21 * "This product includes software developed by Vladimir R.
22 * Bossicard as well as other contributors
23 * (http://junit-addons.sourceforge.net/)."
24 * Alternately, this acknowlegement may appear in the software itself,
25 * if and wherever such third-party acknowlegements normally appear.
26 *
27 * 4. The name "JUnit-addons" must not be used to endorse or promote
28 * products derived from this software without prior written
29 * permission. For written permission, please contact
30 * vbossica@users.sourceforge.net.
31 *
32 * 5. Products derived from this software may not be called "JUnit-addons"
33 * nor may "JUnit-addons" appear in their names without prior written
34 * permission of the project managers.
35 *
36 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
37 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
38 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
39 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
40 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
42 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
43 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
44 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
45 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
46 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
47 * SUCH DAMAGE.
48 * ======================================================================
49 *
50 * This software consists of voluntary contributions made by many
51 * individuals. For more information on the JUnit-addons Project, please
52 * see <http://junit-addons.sourceforge.net/>.
53 */
54
55 package junitx.framework;
56
57 /**
58 * A set of assert methods specially targetted to asserting objects.
59 *
60 * @version $Revision: 1.7 $ $Date: 2003/04/27 02:14:33 $
61 * @author <a href="mailto:vbossica@users.sourceforge.net">Vladimir R. Bossicard</a>
62 */
63 public class ObjectAssert {
64
65 /**
66 * Don't let anyone have access to this constructor.
67 */
68 private ObjectAssert() {
69 }
70
71 /**
72 * Asserts that an object is an instance of a class. Throws an
73 * <tt>AssertionFailedError</tt> if it is not an instance of that class.
74 */
75 public static void assertInstanceOf(String message,
76 Class expected,
77 Object actual) {
78 if (expected.isInstance(actual)) {
79 return;
80 }
81 failInstanceOf(message, expected, actual);
82 }
83
84 /**
85 * Asserts that an object is an instance of a class. Throws an
86 * <tt>AssertionFailedError</tt> if it is not an instance of that class.
87 */
88 public static void assertInstanceOf(Class expected,
89 Object actual) {
90 assertInstanceOf(null, expected, actual);
91 }
92
93 /**
94 * Asserts that an object is not an instance of a class. Throws an
95 * <tt>AssertionFailedError</tt> if it is an instance of that class.
96 */
97 public static void assertNotInstanceOf(String message,
98 Class expected,
99 Object actual) {
100 if (!expected.isInstance(actual)) {
101 return;
102 }
103 failNotInstanceOf(message, expected);
104 }
105
106 /**
107 * Asserts that an object is not an instance of a class. Throws an
108 * <tt>AssertionFailedError</tt> if it is an instance of that class.
109 */
110 public static void assertNotInstanceOf(Class expected,
111 Object actual) {
112 assertNotInstanceOf(null, expected, actual);
113 }
114
115 /**
116 * Asserts that an object are the same. Throws an
117 * <tt>AssertionFailedError</tt> if they are not (including the objects'
118 * values).
119 */
120 public static void assertSame(Object expected,
121 Object actual) {
122 assertSame(null, expected, actual);
123 }
124
125 /**
126 * Asserts that an object are the same. Throws an
127 * <tt>AssertionFailedError</tt> if they are not (including the objects'
128 * values).
129 */
130 public static void assertSame(String message,
131 Object expected,
132 Object actual) {
133 if (expected == actual) {
134 return;
135 }
136 failSame(message, expected, actual);
137 }
138
139 /**
140 * Asserts that an object are not the same. Throws an
141 * <tt>AssertionFailedError</tt> if they are.
142 */
143 public static void assertNotSame(Object expected,
144 Object actual) {
145 assertNotSame(null, expected, actual);
146 }
147
148 /**
149 * Asserts that an object are not the same. Throws an
150 * <tt>AssertionFailedError</tt> if they are.
151 */
152 public static void assertNotSame(String message,
153 Object expected,
154 Object actual) {
155 if (expected != actual) {
156 return;
157 }
158 failNotSame(message, expected);
159 }
160
161 static private void failInstanceOf(String message,
162 Class expected,
163 Object actual) {
164 String formatted = "";
165 if (message != null) {
166 formatted = message + " ";
167 }
168
169 Assert.fail(formatted + "expected instance of class: <" + expected.getName() + "> but was of class: <" + actual.getClass().getName() + ">");
170 }
171
172 static private void failNotInstanceOf(String message,
173 Class expected) {
174 String formatted = "";
175 if (message != null) {
176 formatted = message + " ";
177 }
178
179 Assert.fail(formatted + "expected not instance of class: <" + expected.getName() + ">");
180 }
181
182 static private void failSame(String message,
183 Object expected,
184 Object actual) {
185 String formatted = "";
186 if (message != null) {
187 formatted = message + " ";
188 }
189
190 Assert.fail(formatted + "expected same as : <" + expected + "> but was <" + actual + ">");
191 }
192
193 static private void failNotSame(String message,
194 Object expected) {
195 String formatted = "";
196 if (message != null) {
197 formatted = message + " ";
198 }
199
200 Assert.fail(formatted + "expected not same as : <" + expected + ">");
201 }
202
203 }