/* * 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() { } }