blob: 1d56fa3b6b6667df8c4d8bcb67b4fee2b5575afe [file] [log] [blame]
/*
* Copyright 2006 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package junit.framework;
import javaemul.internal.annotations.DoNotInline;
/**
* Translatable version of JUnit's <code>Assert</code>.
*/
public class Assert {
@DoNotInline
public static void assertEquals(boolean obj1, boolean obj2) {
assertEquals("", obj1, obj2);
}
@DoNotInline
public static void assertEquals(byte obj1, byte obj2) {
assertEquals("", obj1, obj2);
}
@DoNotInline
public static void assertEquals(char obj1, char obj2) {
assertEquals("", obj1, obj2);
}
@DoNotInline
public static void assertEquals(double obj1, double obj2, double delta) {
assertEquals("", obj1, obj2, delta);
}
@DoNotInline
public static void assertEquals(float obj1, float obj2, float delta) {
assertEquals("", obj1, obj2, delta);
}
@DoNotInline
public static void assertEquals(int expected, int actual) {
assertEquals("", expected, actual);
}
@DoNotInline
public static void assertEquals(long obj1, long obj2) {
assertEquals("", obj1, obj2);
}
@DoNotInline
public static void assertEquals(Object obj1, Object obj2) {
assertEquals("", obj1, obj2);
}
@DoNotInline
public static void assertEquals(short expected, short actual) {
assertEquals("", expected, actual);
}
@DoNotInline
public static void assertEquals(String str, boolean obj1, boolean obj2) {
assertEquals(str, Boolean.valueOf(obj1), Boolean.valueOf(obj2));
}
@DoNotInline
public static void assertEquals(String str, byte obj1, byte obj2) {
assertEquals(str, Byte.valueOf(obj1), Byte.valueOf(obj2));
}
@DoNotInline
public static void assertEquals(String str, char obj1, char obj2) {
assertEquals(str, Character.valueOf(obj1), Character.valueOf(obj2));
}
@DoNotInline
public static void assertEquals(String str, double obj1, double obj2,
double delta) {
// Handles special cases like NaN
if (Double.compare(obj1, obj2) == 0) {
return;
} else if (Math.abs(obj1 - obj2) <= delta) {
return;
} else {
failFloatingPointNotEquals(str, format(obj1), format(obj2), format(delta));
}
}
@DoNotInline
public static void assertEquals(String str, float obj1, float obj2,
float delta) {
// Handles special cases like NaN
if (Float.compare(obj1, obj2) == 0) {
return;
} else if (Math.abs(obj1 - obj2) <= delta) {
return;
} else {
failFloatingPointNotEquals(str, format(obj1), format(obj2), format(delta));
}
}
@DoNotInline
public static void assertEquals(String msg, int expected, int actual) {
if (expected != actual) {
failNotEquals(msg, expected, actual);
}
}
@DoNotInline
public static void assertEquals(String str, long obj1, long obj2) {
assertEquals(str, new Long(obj1), new Long(obj2));
}
@DoNotInline
public static void assertEquals(String msg, Object obj1, Object obj2) {
if (obj1 == null && obj2 == null) {
return;
}
if (obj1 != null && obj1.equals(obj2)) {
return;
}
failNotEquals(msg, obj1, obj2);
}
@DoNotInline
public static void assertEquals(String str, short obj1, short obj2) {
assertEquals(str, Short.valueOf(obj1), Short.valueOf(obj2));
}
@DoNotInline
public static void assertEquals(String obj1, String obj2) {
assertEquals("", obj1, obj2);
}
@DoNotInline
public static void assertEquals(String message, String expected, String actual) {
assertEquals(message, (Object) expected, (Object) actual);
}
@DoNotInline
public static void assertFalse(boolean condition) {
assertFalse(null, condition);
}
@DoNotInline
public static void assertFalse(String message, boolean condition) {
assertEquals(message, false, condition);
}
@DoNotInline
public static void assertNotNull(Object obj) {
assertNotNull(null, obj);
}
@DoNotInline
public static void assertNotNull(String msg, Object obj) {
if (obj == null) {
fail(concatMessages(msg, "expected: not null, actual: null"));
}
}
@DoNotInline
public static void assertNotSame(Object obj1, Object obj2) {
assertNotSame(null, obj1, obj2);
}
@DoNotInline
public static void assertNotSame(String msg, Object obj1, Object obj2) {
if (obj1 != obj2) {
return;
}
fail(concatMessages(msg, "expected: not same as " + format(obj1) + ", actual: same"));
}
@DoNotInline
public static void assertNull(Object obj) {
assertNull(null, obj);
}
@DoNotInline
public static void assertNull(String msg, Object obj) {
assertEquals(msg, null, obj);
}
@DoNotInline
public static void assertSame(Object obj1, Object obj2) {
assertSame(null, obj1, obj2);
}
@DoNotInline
public static void assertSame(String msg, Object obj1, Object obj2) {
if (obj1 == obj2) {
return;
}
failNotSame(msg, obj1, obj2);
}
@DoNotInline
public static void assertTrue(boolean condition) {
assertTrue(null, condition);
}
@DoNotInline
public static void assertTrue(String message, boolean condition) {
assertEquals(message, true, condition);
}
@DoNotInline
public static void fail() {
fail(null);
}
@DoNotInline
public static void fail(String message) {
if (message == null) {
message = "failed";
}
throw new AssertionFailedError(message);
}
@DoNotInline
public static void failNotEquals(String message, Object expected,
Object actual) {
fail(concatMessages(message, "expected: " + format(expected) + ", actual: " + format(actual)));
}
@DoNotInline
public static void failNotSame(String message, Object expected, Object actual) {
fail(concatMessages(
message, "expected: same as " + format(expected) + ", actual: " + format(actual)));
}
@DoNotInline
public static void failSame(String message) {
fail(concatMessages(message, "expected: not same, actual: same"));
}
/**
* Concatenates a user-supplied message and a JUnit-generated message. The user message
* may be null, which is treated as "".
*/
private static String concatMessages(String userMessage, String junitMessage) {
if (userMessage == null || userMessage.isEmpty()) {
return junitMessage;
}
return userMessage + " - " + junitMessage;
}
/**
* Fails with a message that the given floating-point numbers aren't within the delta.
*/
private static void failFloatingPointNotEquals(
String userMessage, String expected, String actual, String delta) {
fail(concatMessages(
userMessage,
"expected: within " + delta + " of " + expected + ", actual: " + actual));
}
/**
* Returns obj.toString() inside angled brackets if obj is not null; otherwise returns
* "null". This function is used to format arguments of assert*() methods. The angled
* brackets make a value easier to find by a human, and help the reader know the
* boundary of the value when it has leading or trailing whitespace. Also, they allow the
* reader to distinguish between a null object (formatted as "null") and a String whose
* contents are "null" (formatted as "<null>").
*/
private static String format(Object obj) {
if (obj == null) {
return "null";
}
return "<" + obj.toString() + ">";
}
/**
* Utility class, no public constructor needed.
*/
protected Assert() {
}
}