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 }