package be.nikiroo.utils.test;
+import java.util.List;
+
/**
* A {@link TestCase} that can be run with {@link TestLauncher}.
*
class AssertException extends Exception {
private static final long serialVersionUID = 1L;
+ public AssertException(String reason, Exception source) {
+ super(reason, source);
+ }
+
public AssertException(String reason) {
super(reason);
}
/**
* Check that 2 {@link Object}s are equals.
*
- * @param the
- * error message to display if they differ
+ * @param errorMessage
+ * the error message to display if they differ
* @param expected
* the expected value
* @param actual
*/
public void assertEquals(String errorMessage, Object expected, Object actual)
throws AssertException {
-
- if (errorMessage == null) {
- errorMessage = String.format("" //
- + "Assertion failed!\n" //
- + "Expected value: [%s]\n" //
- + "Actual value: [%s]", expected, actual);
- }
-
if ((expected == null && actual != null)
|| (expected != null && !expected.equals(actual))) {
- throw new AssertException(errorMessage);
+ if (errorMessage == null) {
+ throw new AssertException(generateAssertMessage(expected,
+ actual));
+ }
+
+ throw new AssertException(errorMessage, new AssertException(
+ generateAssertMessage(expected, actual)));
}
}
/**
- * Check that 2 {@link Object}s are equals.
+ * Check that 2 longs are equals.
*
* @param expected
* the expected value
* in case they differ
*/
public void assertEquals(long expected, long actual) throws AssertException {
- assertEquals(new Long(expected), new Long(actual));
+ assertEquals(Long.valueOf(expected), Long.valueOf(actual));
}
/**
- * Check that 2 {@link Object}s are equals.
+ * Check that 2 longs are equals.
*
- * @param the
- * error message to display if they differ
+ * @param errorMessage
+ * the error message to display if they differ
* @param expected
* the expected value
* @param actual
*/
public void assertEquals(String errorMessage, long expected, long actual)
throws AssertException {
- assertEquals(errorMessage, new Long(expected), new Long(actual));
+ assertEquals(errorMessage, Long.valueOf(expected), Long.valueOf(actual));
}
/**
- * Check that 2 {@link Object}s are equals.
+ * Check that 2 booleans are equals.
*
* @param expected
* the expected value
*/
public void assertEquals(boolean expected, boolean actual)
throws AssertException {
- assertEquals(new Boolean(expected), new Boolean(actual));
+ assertEquals(Boolean.valueOf(expected), Boolean.valueOf(actual));
}
/**
- * Check that 2 {@link Object}s are equals.
+ * Check that 2 booleans are equals.
*
- * @param the
- * error message to display if they differ
+ * @param errorMessage
+ * the error message to display if they differ
* @param expected
* the expected value
* @param actual
*/
public void assertEquals(String errorMessage, boolean expected,
boolean actual) throws AssertException {
- assertEquals(errorMessage, new Boolean(expected), new Boolean(actual));
+ assertEquals(errorMessage, Boolean.valueOf(expected),
+ Boolean.valueOf(actual));
}
/**
- * Check that 2 {@link Object}s are equals.
+ * Check that 2 doubles are equals.
*
* @param expected
* the expected value
*/
public void assertEquals(double expected, double actual)
throws AssertException {
- assertEquals(new Double(expected), new Double(actual));
+ assertEquals(Double.valueOf(expected), Double.valueOf(actual));
}
/**
- * Check that 2 {@link Object}s are equals.
+ * Check that 2 doubles are equals.
*
- * @param the
- * error message to display if they differ
+ * @param errorMessage
+ * the error message to display if they differ
* @param expected
* the expected value
* @param actual
*/
public void assertEquals(String errorMessage, double expected, double actual)
throws AssertException {
- assertEquals(errorMessage, new Double(expected), new Double(actual));
+ assertEquals(errorMessage, Double.valueOf(expected),
+ Double.valueOf(actual));
+ }
+
+ /**
+ * Check that 2 {@link List}s are equals.
+ *
+ * @param errorMessage
+ * the error message to display if they differ
+ * @param expected
+ * the expected value
+ * @param actual
+ * the actual value
+ *
+ * @throws AssertException
+ * in case they differ
+ */
+ public void assertEquals(List<?> expected, List<?> actual)
+ throws AssertException {
+ assertEquals("Assertion failed", expected, actual);
+ }
+
+ /**
+ * Check that 2 {@link List}s are equals.
+ *
+ * @param errorMessage
+ * the error message to display if they differ
+ * @param expected
+ * the expected value
+ * @param actual
+ * the actual value
+ * @param errorMessage
+ * the error message to display if they differ
+ *
+ * @throws AssertException
+ * in case they differ
+ */
+ public void assertEquals(String errorMessage, List<?> expected,
+ List<?> actual) throws AssertException {
+
+ if (expected.size() != actual.size()) {
+ assertEquals(errorMessage + ": not same number of items",
+ list(expected), list(actual));
+ }
+
+ int size = expected.size();
+ for (int i = 0; i < size; i++) {
+ assertEquals(errorMessage + ": item " + i
+ + " (0-based) is not correct", expected.get(i),
+ actual.get(i));
+ }
+ }
+
+ /**
+ * Check that given {@link Object} is not NULL.
+ *
+ * @param errorMessage
+ * the error message to display if it is NULL
+ * @param actual
+ * the actual value
+ *
+ * @throws AssertException
+ * in case they differ
+ */
+ public void assertNotNull(String errorMessage, Object actual)
+ throws AssertException {
+ if (actual == null) {
+ String defaultReason = String.format("" //
+ + "Assertion failed!%n" //
+ + "Object should not have been NULL");
+
+ if (errorMessage == null) {
+ throw new AssertException(defaultReason);
+ }
+
+ throw new AssertException(errorMessage, new AssertException(
+ defaultReason));
+ }
+ }
+
+ /**
+ * Generate the default assert message for 2 different values that were
+ * supposed to be equals.
+ *
+ * @param expected
+ * the expected value
+ * @param actual
+ * the actual value
+ *
+ * @return the message
+ */
+ public static String generateAssertMessage(Object expected, Object actual) {
+ return String.format("" //
+ + "Assertion failed!%n" //
+ + "Expected value: [%s]%n" //
+ + "Actual value: [%s]", expected, actual);
+ }
+
+ private static String list(List<?> items) {
+ StringBuilder builder = new StringBuilder();
+ for (Object item : items) {
+ if (builder.length() == 0) {
+ builder.append(items.size() + " item(s): ");
+ } else {
+ builder.append(", ");
+ }
+
+ builder.append("" + item);
+
+ if (builder.length() > 60) {
+ builder.setLength(57);
+ builder.append("...");
+ break;
+ }
+ }
+
+ return builder.toString();
}
}