blob: 57b8dc59350bc4c483af19278a10a574d977a86a [file] [log] [blame]
/* Assert.java -- Assertions to be used by tests
Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
This file is part of Mauve.
Mauve is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
Mauve is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with Mauve; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
*/
// Tags: not-a-test
package junit.framework;
import gnu.testlet.TestHarness;
/**
* Test assertions to be used by test cases.
*/
public class Assert
{
/**
* The mauve test harness. The assertions are delegated to the harness
* if this is not null. Otherwise the normal JUnit behaviour is implemented,
* which is to throw an AssertionFailedError.
*/
static TestHarness harness;
/**
* Creates a new Assert object.
*/
protected Assert()
{
// Nothing to do here.
}
/**
* Checks if <code>value</code> is <code>true</code>.
*
* @param message the error message in the case this assertion fails
* @param value the value to check.
*/
public static void assertTrue(String message, boolean value)
{
if (harness != null)
harness.check(value);
else if (! value)
fail(message);
}
/**
* Checks if <code>value</code> is <code>true</code>.
*
* @param value the value to check.
*/
public static void assertTrue(boolean value)
{
assertTrue(null, value);
}
/**
* Checks if <code>value</code> is <code>true</code>.
*
* @param message the error message in the case this assertion fails
* @param value the value to check.
*/
public static void assertFalse(String message, boolean value)
{
assertTrue(message, ! value);
}
/**
* Checks if <code>value</code> is <code>false</code>.
*
* @param value the value to check.
*/
public static void assertFalse(boolean value)
{
assertFalse(null, value);
}
/**
* Unconditionally fails with the specified message.
*
* @param message
*/
public static void fail(String message)
{
if (harness != null)
harness.check(false);
else
throw new AssertionFailedError(message);
}
/**
* Unconditionally fails without message.
*/
public static void fail()
{
fail(null);
}
/**
* Checks if <code>value</code> is equal to <code>expexted</code> in the
* sense of <code>Object.equals()</code>.
*
* @param message the error message in case of failure
* @param expected the expected value
* @param value the actual value to check
*/
public static void assertEquals(String message, Object expected,
Object value)
{
if (harness != null)
harness.check(expected, value);
else
{
if ((expected != null || value != null)
&& (expected == null || ! expected.equals(value)))
failNotEquals(message, expected, value);
}
}
/**
* Checks if <code>value</code> is equal to <code>expexted</code> in the
* sense of <code>Object.equals()</code>.
*
* @param expected the expected value
* @param value the actual value to check
*/
public static void assertEquals(Object expected, Object value)
{
assertEquals(null, expected, value);
}
/**
* Checks if <code>value</code> is equal to <code>expexted</code> in the
* sense of <code>Object.equals()</code>.
*
* @param message the error message in case of failure
* @param expected the expected value
* @param value the actual value to check
*/
public static void assertEquals(String message, String expected,
String value)
{
if (harness != null)
harness.check(expected, value);
else
{
if ((expected != null || value != null)
&& (expected == null || ! expected.equals(value)))
throw new ComparisonFailure(message, expected, value);
}
}
/**
* Checks if <code>value</code> is equal to <code>expexted</code> in the
* sense of <code>Object.equals()</code>.
*
* @param expected the expected value
* @param value the actual value to check
*/
public static void assertEquals(String expected, String value)
{
assertEquals(null, expected, value);
}
/**
* Checks if <code>value</code> is equal to <code>expected</code>, taking
* a rounding delta <code>delta</code> into account.
*
* @param message the error message in the case of failure
* @param expected the expected value
* @param value the actual value to check
* @param delta the rounding delta
*/
public static void assertEquals(String message, double expected,
double value, double delta)
{
if (harness != null)
harness.check(expected, value, delta);
else
{
if (Double.isInfinite(expected))
{
if (value != expected)
failNotEquals(message, new Double(expected), new Double(value));
}
else if (! (Math.abs(expected - value) <= delta))
failNotEquals(message, new Double(expected), new Double(value));
}
}
/**
* Checks if <code>value</code> is equal to <code>expected</code>, taking
* a rounding delta <code>delta</code> into account.
*
* @param expected the expected value
* @param value the actual value to check
* @param delta the rounding delta
*/
public static void assertEquals(double expected, double value, double delta)
{
assertEquals(null, expected, value, delta);
}
/**
* Checks if <code>value</code> is equal to <code>expected</code>, taking
* a rounding delta <code>delta</code> into account.
*
* @param message the error message in the case of failure
* @param expected the expected value
* @param value the actual value to check
* @param delta the rounding delta
*/
public static void assertEquals(String message, float expected, float value,
float delta)
{
if (harness != null)
harness.check(expected, value, delta);
else
{
if (Float.isInfinite(expected))
{
if (value != expected)
failNotEquals(message, new Float(expected), new Float(value));
}
else if (! (Math.abs(expected - value) <= delta))
failNotEquals(message, new Float(expected), new Float(value));
}
}
/**
* Checks if <code>value</code> is equal to <code>expected</code>, taking
* a rounding delta <code>delta</code> into account.
*
* @param expected the expected value
* @param value the actual value to check
* @param delta the rounding delta
*/
public static void assertEquals(float expected, float value, float delta)
{
assertEquals(null, expected, value, delta);
}
/**
* Checks if <code>value</code> is equal to <code>expected</code>.
*
* @param message the error message in the case of failure
* @param expected the expected value
* @param value the actual value
*/
public static void assertEquals(String message, long expected, long value)
{
if (harness != null)
harness.check(expected, value);
else
failNotEquals(message, new Long(expected), new Long(value));
}
/**
* Checks if <code>value</code> is equal to <code>expected</code>.
*
* @param expected the expected value
* @param value the actual value
*/
public static void assertEquals(long expected, long value)
{
assertEquals(null, expected, value);
}
/**
* Checks if <code>value</code> is equal to <code>expected</code>.
*
* @param message the error message in the case of failure
* @param expected the expected value
* @param value the actual value
*/
public static void assertEquals(String message, boolean expected,
boolean value)
{
if (harness != null)
harness.check(expected, value);
else
failNotEquals(message, new Boolean(expected), new Boolean(value));
}
/**
* Checks if <code>value</code> is equal to <code>expected</code>.
*
* @param expected the expected value
* @param value the actual value
*/
public static void assertEquals(boolean expected, boolean value)
{
assertEquals(null, expected, value);
}
/**
* Checks if <code>value</code> is equal to <code>expected</code>.
*
* @param message the error message in the case of failure
* @param expected the expected value
* @param value the actual value
*/
public static void assertEquals(String message, byte expected, byte value)
{
if (harness != null)
harness.check(expected, value);
else
failNotEquals(message, new Byte(expected), new Byte(value));
}
/**
* Checks if <code>value</code> is equal to <code>expected</code>.
*
* @param expected the expected value
* @param value the actual value
*/
public static void assertEquals(byte expected, byte value)
{
assertEquals(null, expected, value);
}
/**
* Checks if <code>value</code> is equal to <code>expected</code>.
*
* @param message the error message in the case of failure
* @param expected the expected value
* @param value the actual value
*/
public static void assertEquals(String message, char expected, char value)
{
if (harness != null)
harness.check(expected, value);
else
failNotEquals(message, new Character(expected), new Character(value));
}
/**
* Checks if <code>value</code> is equal to <code>expected</code>.
*
* @param expected the expected value
* @param value the actual value
*/
public static void assertEquals(char expected, char value)
{
assertEquals(null, expected, value);
}
/**
* Checks if <code>value</code> is equal to <code>expected</code>.
*
* @param message the error message in the case of failure
* @param expected the expected value
* @param value the actual value
*/
public static void assertEquals(String message, short expected, short value)
{
if (harness != null)
harness.check(expected, value);
else
failNotEquals(message, new Short(expected), new Short(value));
}
/**
* Checks if <code>value</code> is equal to <code>expected</code>.
*
* @param expected the expected value
* @param value the actual value
*/
public static void assertEquals(short expected, short value)
{
assertEquals(null, expected, value);
}
/**
* Checks if <code>value</code> is equal to <code>expected</code>.
*
* @param message the error message in the case of failure
* @param expected the expected value
* @param value the actual value
*/
public static void assertEquals(String message, int expected, int value)
{
if (harness != null)
harness.check(expected, value);
else
failNotEquals(message, new Integer(expected), new Integer(value));
}
/**
* Checks if <code>value</code> is equal to <code>expected</code>.
*
* @param expected the expected value
* @param value the actual value
*/
public static void assertEquals(int expected, int value)
{
assertEquals(null, expected, value);
}
/**
* Checks that the <code>value</code> is not null.
*
* @param message the error message in the case of failure
* @param value the value to check
*/
public static void assertNotNull(String message, Object value)
{
assertTrue(message, value != null);
}
/**
* Checks that the <code>value</code> is not null.
*
* @param value the value to check
*/
public static void assertNotNull(Object value)
{
assertNotNull(null, value);
}
/**
* Checks that the <code>value</code> is null.
*
* @param message the error message in the case of failure
* @param value the value to check
*/
public static void assertNull(String message, Object value)
{
assertTrue(message, value == null);
}
/**
* Checks that the <code>value</code> is null.
*
* @param value the value to check
*/
public static void assertNull(Object value)
{
assertNull(null, value);
}
/**
* Checks that the <code>value</code> is the same object instance as
* <code>expected</code>.
*
* @param message the error message in case of failure
* @param expected the expected value
* @param value the actual value to check
*/
public static void assertSame(String message, Object expected, Object value)
{
if (harness != null)
harness.check(expected == value);
else if (value != expected)
{
StringBuffer str = new StringBuffer();
if (message != null)
{
str.append(message);
str.append(' ');
str.append("expected to be same");
}
fail(format(str, expected, value));
}
}
/**
* Checks that the <code>value</code> is the same object instance as
* <code>expected</code>.
*
* @param expected the expected value
* @param value the actual value to check
*/
public static void assertSame(Object expected, Object value)
{
assertSame(null, expected, value);
}
/**
* Checks that the <code>value</code> is not the same object instance as
* <code>expected</code>.
*
* @param message the error message in case of failure
* @param expected the expected value
* @param value the actual value to check
*/
public static void assertNotSame(String message, Object expected,
Object value)
{
if (harness != null)
harness.check(expected != value);
else if (value == expected)
{
StringBuffer str = new StringBuffer();
if (message != null)
{
str.append(message);
str.append(' ');
str.append("expected to be not the same");
}
fail(format(str, expected, value));
}
}
/**
* Checks that the <code>value</code> is not the same object instance as
* <code>expected</code>.
*
* @param expected the expected value
* @param value the actual value to check
*/
public static void assertNotSame(Object expected, Object value)
{
assertNotSame(null, expected, value);
}
/**
* Called when a test failed because two objects are not equal.
*
* @param message the error message
* @param expected the expected value
* @param value the actual value
*/
private static void failNotEquals(String message, Object expected,
Object value)
{
StringBuffer str = new StringBuffer();
if (message != null)
{
str.append(message);
str.append(' ');
}
fail(format(str, expected, value));
}
/**
* Formats the error message.
*
* @param str the string buffer to append to, with the start of the error
* message
* @param expected the expected value
* @param value the actual value
*
* @return the formatted message
*/
private static String format(StringBuffer str, Object expected,
Object value)
{
str.append(' ');
str.append(" expected value: ");
str.append(expected);
str.append(" actual value: " + value);
return str.toString();
}
}