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 (primarly testing the negative assertion of the 59 * correspondent methods found in the <tt>junit.framework.Assert</tt> class). 60 * 61 * <h4>Usage</h4> 62 * 63 * <pre> 64 * import junitx.framework.Assert; 65 * 66 * Assert.assertNotEquals(expected, actual); 67 * </pre> 68 * 69 * @version $Revision: 1.13 $ $Date: 2003/03/21 06:13:49 $ 70 * @author <a href="mailto:vbossica@users.sourceforge.net">Vladimir R. Bossicard</a> 71 */ 72 public class Assert 73 extends junit.framework.Assert { 74 75 /** 76 * Don't let anyone have access to this constructor. 77 */ 78 private Assert() { 79 } 80 81 /** 82 * Asserts that a condition is false. Throws a 83 * <tt>junitx.framework.ComparisonFailure</tt> if not. 84 * 85 * @see junitx.framework.ComparisonFailure 86 */ 87 public static void assertFalse(String message, 88 boolean condition) { 89 if (condition) { 90 failFalse(message); 91 } 92 } 93 94 /** 95 * Asserts that a condition is false. Throws a 96 * <tt>junitx.framework.ComparisonFailure</tt> if not. 97 * 98 * @see junitx.framework.ComparisonFailure 99 */ 100 public static void assertFalse(boolean condition) { 101 assertFalse(null, condition); 102 } 103 104 /** 105 * Asserts that two strings are equal. Throws an 106 * <tt>AssertionFailedError</tt> if not. 107 */ 108 public static void assertEquals(String expected, String actual) { 109 assertEquals(null, expected, actual); 110 } 111 112 /** 113 * Asserts that two strings are equal. Throws an 114 * <tt>AssertionFailedError</tt> if not. 115 */ 116 public static void assertEquals(String message, String expected, String actual) { 117 if ((expected == null && actual == null) || (expected != null && expected.equals(actual))) { 118 return; 119 } 120 throw new ComparisonFailure(message, expected, actual); 121 } 122 123 /** 124 * Asserts that two objects are not equal. Throws an 125 * <tt>AssertionFailedError</tt> if they are equal. 126 */ 127 public static void assertNotEquals(String message, 128 Object expected, 129 Object actual) { 130 if ((expected == null && actual == null) || 131 (expected != null && expected.equals(actual))) { 132 failNotEquals(message, expected); 133 } 134 } 135 136 /** 137 * Asserts that two objects are not equal. Throws an 138 * <tt>AssertionFailedError</tt> if they are equal. 139 */ 140 public static void assertNotEquals(Object expected, 141 Object actual) { 142 assertNotEquals(null, expected, actual); 143 } 144 145 /** 146 * Asserts that two bytes are not equal. Throws an 147 * <tt>AssertionFailedError</tt> if they are equal. 148 */ 149 public static void assertNotEquals(String message, 150 byte expected, 151 byte actual) { 152 assertNotEquals(message, new Byte(expected), new Byte(actual)); 153 } 154 155 /** 156 * Asserts that two bytes are not equal. Throws an 157 * <tt>AssertionFailedError</tt> if they are equal. 158 */ 159 public static void assertNotEquals(byte expected, 160 byte actual) { 161 assertNotEquals(null, expected, actual); 162 } 163 164 /** 165 * Asserts that two chars are not equal. Throws an 166 * <tt>AssertionFailedError</tt> if they are equal. 167 */ 168 public static void assertNotEquals(String message, 169 char expected, 170 char actual) { 171 assertNotEquals(message, new Character(expected), new Character(actual)); 172 } 173 174 /** 175 * Asserts that two chars are not equal. Throws an 176 * <tt>AssertionFailedError</tt> if they are equal. 177 */ 178 public static void assertNotEquals(char expected, 179 char actual) { 180 assertNotEquals(null, expected, actual); 181 } 182 183 /** 184 * Asserts that two doubles are not equal concerning a delta. If the 185 * expected value is infinity then the delta value is ignored. Throws an 186 * <tt>AssertionFailedError</tt> if they are equal. 187 */ 188 public static void assertNotEquals(String message, 189 double expected, 190 double actual, 191 double delta) { 192 if (Double.isInfinite(expected)) { 193 if (expected == actual) { 194 failNotEquals(message, new Double(expected)); 195 } 196 } else if (Math.abs(expected - actual) <= delta) { 197 failNotEquals(message, new Double(expected)); 198 } 199 } 200 201 /** 202 * Asserts that two doubles are not equal concerning a delta. If the 203 * expected value is infinity then the delta value is ignored. Throws an 204 * <tt>AssertionFailedError</tt> if they are equal. 205 */ 206 public static void assertNotEquals(double expected, 207 double actual, 208 double delta) { 209 assertNotEquals(null, expected, actual, delta); 210 } 211 212 /** 213 * Asserts that two floats are not equal concerning a delta. If the 214 * expected value is infinity then the delta value is ignored. Throws an 215 * <tt>AssertionFailedError</tt> if they are equal. 216 */ 217 public static void assertNotEquals(String message, 218 float expected, 219 float actual, 220 float delta) { 221 if (Float.isInfinite(expected)) { 222 if (expected == actual) { 223 failNotEquals(message, new Float(expected)); 224 } 225 } else if (Math.abs(expected - actual) <= delta) { 226 failNotEquals(message, new Float(expected)); 227 } 228 } 229 230 /** 231 * Asserts that two floats are not equal concerning a delta. If the 232 * expected value is infinity then the delta value is ignored. Throws an 233 * <tt>AssertionFailedError</tt> if they are equal. 234 */ 235 public static void assertNotEquals(float expected, 236 float actual, 237 float delta) { 238 assertNotEquals(null, expected, actual, delta); 239 } 240 241 /** 242 * Asserts that two ints are not equal. Throws an 243 * <tt>AssertionFailedError</tt> if they are equal. 244 */ 245 public static void assertNotEquals(String message, 246 int expected, 247 int actual) { 248 assertNotEquals(message, new Integer(expected), new Integer(actual)); 249 } 250 251 /** 252 * Asserts that two ints are not equal. Throws an 253 * <tt>AssertionFailedError</tt> if they are equal. 254 */ 255 public static void assertNotEquals(int expected, 256 int actual) { 257 assertNotEquals(null, expected, actual); 258 } 259 260 /** 261 * Asserts that longs objects are not equal. Throws an 262 * <tt>AssertionFailedError</tt> if they are equal. 263 */ 264 public static void assertNotEquals(String message, 265 long expected, 266 long actual) { 267 assertNotEquals(message, new Long(expected), new Long(actual)); 268 } 269 270 /** 271 * Asserts that two longs are not equal. Throws an 272 * <tt>AssertionFailedError</tt> if they are equal. 273 */ 274 public static void assertNotEquals(long expected, 275 long actual) { 276 assertNotEquals(null, expected, actual); 277 } 278 279 /** 280 * Asserts that two shorts are not equal. Throws an 281 * <tt>AssertionFailedError</tt> if they are equal. 282 */ 283 public static void assertNotEquals(String message, 284 short expected, 285 short actual) { 286 assertNotEquals(message, new Short(expected), new Short(actual)); 287 } 288 289 /** 290 * Asserts that two shorts are not equal. Throws an 291 * <tt>AssertionFailedError</tt> if they are equal. 292 */ 293 public static void assertNotEquals(short expected, 294 short actual) { 295 assertNotEquals(null, expected, actual); 296 } 297 298 /** 299 * Asserts that two boolean are not equal. Throws an 300 * <tt>AssertionFailedError</tt> if they are equal. 301 */ 302 public static void assertNotEquals(String message, 303 boolean expected, 304 boolean actual) { 305 assertNotEquals(message, new Boolean(expected), new Boolean(actual)); 306 } 307 308 /** 309 * Asserts that two booleans are not equal. Throws an 310 * <tt>AssertionFailedError</tt> if they are equal. 311 */ 312 public static void assertNotEquals(boolean expected, 313 boolean actual) { 314 assertNotEquals(null, expected, actual); 315 } 316 317 /** 318 * Asserts that two objects do not refer to the same object. Throws an 319 * <tt>AssertionFailedError</tt> if they are equal. 320 */ 321 public static void assertNotSame(String message, 322 Object expected, 323 Object actual) { 324 if (expected == actual) { 325 failSame(message, expected); 326 } 327 } 328 329 /** 330 * Asserts that two objects do not refer to the same object. Throws an 331 * <tt>AssertionFailedError</tt> if they are equal. 332 */ 333 public static void assertNotSame(Object expected, 334 Object actual) { 335 assertNotSame(null, expected, actual); 336 } 337 338 static private void failFalse(String message) { 339 String formatted = ""; 340 if (message != null) { 341 formatted = message + " "; 342 } 343 344 fail(formatted + "expected <false>"); 345 } 346 347 static private void failNotEquals(String message, 348 Object expected) { 349 String formatted = ""; 350 if (message != null) { 351 formatted = message + " "; 352 } 353 354 fail(formatted + "expected not equals to: <" + expected + ">"); 355 } 356 357 static private void failSame(String message, 358 Object expected) { 359 String formatted = ""; 360 if (message != null) { 361 formatted = message + " "; 362 } 363 364 fail(formatted + "expected not same as: <" + expected + ">"); 365 } 366 367 /** 368 * Fails a test with the given <tt>Throwable</tt> object causing the 369 * failure. 370 */ 371 static public void fail(Throwable cause) { 372 fail(null, cause); 373 } 374 375 /** 376 * Fails a test with the given message and the <tt>Throwable</tt> object 377 * causing the failure. 378 */ 379 static public void fail(String message, Throwable cause) { 380 throw new AssertionFailedError(message, cause); 381 } 382 383 }