1 package junit.framework; 2 3 /** 4 * A set of assert methods. Messages are only displayed when an assert fails. 5 */ 6 7 public class Assert { 8 /** 9 * Protect constructor since it is a static only class 10 */ Assert()11 protected Assert() { 12 } 13 14 /** 15 * Asserts that a condition is true. If it isn't it throws 16 * an AssertionFailedError with the given message. 17 */ assertTrue(String message, boolean condition)18 static public void assertTrue(String message, boolean condition) { 19 if (!condition) 20 fail(message); 21 } 22 /** 23 * Asserts that a condition is true. If it isn't it throws 24 * an AssertionFailedError. 25 */ assertTrue(boolean condition)26 static public void assertTrue(boolean condition) { 27 assertTrue(null, condition); 28 } 29 /** 30 * Asserts that a condition is false. If it isn't it throws 31 * an AssertionFailedError with the given message. 32 */ assertFalse(String message, boolean condition)33 static public void assertFalse(String message, boolean condition) { 34 assertTrue(message, !condition); 35 } 36 /** 37 * Asserts that a condition is false. If it isn't it throws 38 * an AssertionFailedError. 39 */ assertFalse(boolean condition)40 static public void assertFalse(boolean condition) { 41 assertFalse(null, condition); 42 } 43 /** 44 * Fails a test with the given message. 45 */ fail(String message)46 static public void fail(String message) { 47 throw new AssertionFailedError(message); 48 } 49 /** 50 * Fails a test with no message. 51 */ fail()52 static public void fail() { 53 fail(null); 54 } 55 /** 56 * Asserts that two objects are equal. If they are not 57 * an AssertionFailedError is thrown with the given message. 58 */ assertEquals(String message, Object expected, Object actual)59 static public void assertEquals(String message, Object expected, Object actual) { 60 if (expected == null && actual == null) 61 return; 62 if (expected != null && expected.equals(actual)) 63 return; 64 failNotEquals(message, expected, actual); 65 } 66 /** 67 * Asserts that two objects are equal. If they are not 68 * an AssertionFailedError is thrown. 69 */ assertEquals(Object expected, Object actual)70 static public void assertEquals(Object expected, Object actual) { 71 assertEquals(null, expected, actual); 72 } 73 /** 74 * Asserts that two Strings are equal. 75 */ assertEquals(String message, String expected, String actual)76 static public void assertEquals(String message, String expected, String actual) { 77 if (expected == null && actual == null) 78 return; 79 if (expected != null && expected.equals(actual)) 80 return; 81 throw new ComparisonFailure(message, expected, actual); 82 } 83 /** 84 * Asserts that two Strings are equal. 85 */ assertEquals(String expected, String actual)86 static public void assertEquals(String expected, String actual) { 87 assertEquals(null, expected, actual); 88 } 89 /** 90 * Asserts that two doubles are equal concerning a delta. If they are not 91 * an AssertionFailedError is thrown with the given message. If the expected 92 * value is infinity then the delta value is ignored. 93 */ assertEquals(String message, double expected, double actual, double delta)94 static public void assertEquals(String message, double expected, double actual, double delta) { 95 // handle infinity specially since subtracting to infinite values gives NaN and the 96 // the following test fails 97 if (Double.isInfinite(expected)) { 98 if (!(expected == actual)) 99 failNotEquals(message, new Double(expected), new Double(actual)); 100 } else if (!(Math.abs(expected-actual) <= delta)) // Because comparison with NaN always returns false 101 failNotEquals(message, new Double(expected), new Double(actual)); 102 } 103 /** 104 * Asserts that two doubles are equal concerning a delta. If the expected 105 * value is infinity then the delta value is ignored. 106 */ assertEquals(double expected, double actual, double delta)107 static public void assertEquals(double expected, double actual, double delta) { 108 assertEquals(null, expected, actual, delta); 109 } 110 /** 111 * Asserts that two floats are equal concerning a delta. If they are not 112 * an AssertionFailedError is thrown with the given message. If the expected 113 * value is infinity then the delta value is ignored. 114 */ assertEquals(String message, float expected, float actual, float delta)115 static public void assertEquals(String message, float expected, float actual, float delta) { 116 // handle infinity specially since subtracting to infinite values gives NaN and the 117 // the following test fails 118 if (Float.isInfinite(expected)) { 119 if (!(expected == actual)) 120 failNotEquals(message, new Float(expected), new Float(actual)); 121 } else if (!(Math.abs(expected-actual) <= delta)) 122 failNotEquals(message, new Float(expected), new Float(actual)); 123 } 124 /** 125 * Asserts that two floats are equal concerning a delta. If the expected 126 * value is infinity then the delta value is ignored. 127 */ assertEquals(float expected, float actual, float delta)128 static public void assertEquals(float expected, float actual, float delta) { 129 assertEquals(null, expected, actual, delta); 130 } 131 /** 132 * Asserts that two longs are equal. If they are not 133 * an AssertionFailedError is thrown with the given message. 134 */ assertEquals(String message, long expected, long actual)135 static public void assertEquals(String message, long expected, long actual) { 136 assertEquals(message, new Long(expected), new Long(actual)); 137 } 138 /** 139 * Asserts that two longs are equal. 140 */ assertEquals(long expected, long actual)141 static public void assertEquals(long expected, long actual) { 142 assertEquals(null, expected, actual); 143 } 144 /** 145 * Asserts that two booleans are equal. If they are not 146 * an AssertionFailedError is thrown with the given message. 147 */ assertEquals(String message, boolean expected, boolean actual)148 static public void assertEquals(String message, boolean expected, boolean actual) { 149 assertEquals(message, new Boolean(expected), new Boolean(actual)); 150 } 151 /** 152 * Asserts that two booleans are equal. 153 */ assertEquals(boolean expected, boolean actual)154 static public void assertEquals(boolean expected, boolean actual) { 155 assertEquals(null, expected, actual); 156 } 157 /** 158 * Asserts that two bytes are equal. If they are not 159 * an AssertionFailedError is thrown with the given message. 160 */ assertEquals(String message, byte expected, byte actual)161 static public void assertEquals(String message, byte expected, byte actual) { 162 assertEquals(message, new Byte(expected), new Byte(actual)); 163 } 164 /** 165 * Asserts that two bytes are equal. 166 */ assertEquals(byte expected, byte actual)167 static public void assertEquals(byte expected, byte actual) { 168 assertEquals(null, expected, actual); 169 } 170 /** 171 * Asserts that two chars are equal. If they are not 172 * an AssertionFailedError is thrown with the given message. 173 */ assertEquals(String message, char expected, char actual)174 static public void assertEquals(String message, char expected, char actual) { 175 assertEquals(message, new Character(expected), new Character(actual)); 176 } 177 /** 178 * Asserts that two chars are equal. 179 */ assertEquals(char expected, char actual)180 static public void assertEquals(char expected, char actual) { 181 assertEquals(null, expected, actual); 182 } 183 /** 184 * Asserts that two shorts are equal. If they are not 185 * an AssertionFailedError is thrown with the given message. 186 */ assertEquals(String message, short expected, short actual)187 static public void assertEquals(String message, short expected, short actual) { 188 assertEquals(message, new Short(expected), new Short(actual)); 189 } 190 /** 191 * Asserts that two shorts are equal. 192 */ assertEquals(short expected, short actual)193 static public void assertEquals(short expected, short actual) { 194 assertEquals(null, expected, actual); 195 } 196 /** 197 * Asserts that two ints are equal. If they are not 198 * an AssertionFailedError is thrown with the given message. 199 */ assertEquals(String message, int expected, int actual)200 static public void assertEquals(String message, int expected, int actual) { 201 assertEquals(message, new Integer(expected), new Integer(actual)); 202 } 203 /** 204 * Asserts that two ints are equal. 205 */ assertEquals(int expected, int actual)206 static public void assertEquals(int expected, int actual) { 207 assertEquals(null, expected, actual); 208 } 209 /** 210 * Asserts that an object isn't null. 211 */ assertNotNull(Object object)212 static public void assertNotNull(Object object) { 213 assertNotNull(null, object); 214 } 215 /** 216 * Asserts that an object isn't null. If it is 217 * an AssertionFailedError is thrown with the given message. 218 */ assertNotNull(String message, Object object)219 static public void assertNotNull(String message, Object object) { 220 assertTrue(message, object != null); 221 } 222 /** 223 * Asserts that an object is null. 224 */ assertNull(Object object)225 static public void assertNull(Object object) { 226 assertNull(null, object); 227 } 228 /** 229 * Asserts that an object is null. If it is not 230 * an AssertionFailedError is thrown with the given message. 231 */ assertNull(String message, Object object)232 static public void assertNull(String message, Object object) { 233 assertTrue(message, object == null); 234 } 235 /** 236 * Asserts that two objects refer to the same object. If they are not 237 * an AssertionFailedError is thrown with the given message. 238 */ assertSame(String message, Object expected, Object actual)239 static public void assertSame(String message, Object expected, Object actual) { 240 if (expected == actual) 241 return; 242 failNotSame(message, expected, actual); 243 } 244 /** 245 * Asserts that two objects refer to the same object. If they are not 246 * the same an AssertionFailedError is thrown. 247 */ assertSame(Object expected, Object actual)248 static public void assertSame(Object expected, Object actual) { 249 assertSame(null, expected, actual); 250 } 251 /** 252 * Asserts that two objects refer to the same object. If they are not 253 * an AssertionFailedError is thrown with the given message. 254 */ assertNotSame(String message, Object expected, Object actual)255 static public void assertNotSame(String message, Object expected, Object actual) { 256 if (expected == actual) 257 failSame(message); 258 } 259 /** 260 * Asserts that two objects refer to the same object. If they are not 261 * the same an AssertionFailedError is thrown. 262 */ assertNotSame(Object expected, Object actual)263 static public void assertNotSame(Object expected, Object actual) { 264 assertNotSame(null, expected, actual); 265 } 266 failSame(String message)267 static private void failSame(String message) { 268 String formatted= ""; 269 if (message != null) 270 formatted= message+" "; 271 fail(formatted+"expected not same"); 272 } 273 failNotSame(String message, Object expected, Object actual)274 static private void failNotSame(String message, Object expected, Object actual) { 275 String formatted= ""; 276 if (message != null) 277 formatted= message+" "; 278 fail(formatted+"expected same:<"+expected+"> was not:<"+actual+">"); 279 } 280 failNotEquals(String message, Object expected, Object actual)281 static private void failNotEquals(String message, Object expected, Object actual) { 282 fail(format(message, expected, actual)); 283 } 284 format(String message, Object expected, Object actual)285 static String format(String message, Object expected, Object actual) { 286 String formatted= ""; 287 if (message != null) 288 formatted= message+" "; 289 return formatted+"expected:<"+expected+"> but was:<"+actual+">"; 290 } 291 } 292