package be.nikiroo.utils.test;
+import java.util.List;
+
/**
* A {@link TestCase} that can be run with {@link TestLauncher}.
*
this.name = name;
}
+ /**
+ * This constructor can be used if you require a no-param constructor. In
+ * this case, you are allowed to set the name manually via
+ * {@link TestCase#setName}.
+ */
+ protected TestCase() {
+ this("no name");
+ }
+
/**
* Setup the test (called before the test is run).
*
* @throws Exception
* in case of error
*/
- @SuppressWarnings("unused")
public void setUp() throws Exception {
}
* @throws Exception
* in case of error
*/
- @SuppressWarnings("unused")
public void tearDown() throws Exception {
}
return name;
}
+ /**
+ * The test name.
+ *
+ * @param name
+ * the new name (internal use only)
+ *
+ * @return this (so we can chain and so we can initialize it in a member
+ * variable if this is an anonymous inner class)
+ */
+ protected TestCase setName(String name) {
+ this.name = name;
+ return this;
+ }
+
/**
* Actually do the test.
*
}
/**
- * Check that 2 {@link Object}s are equals.
+ * Check that 2 longs are equals.
*
* @param expected
* the expected value
}
/**
- * Check that 2 {@link Object}s are equals.
+ * Check that 2 longs are equals.
*
* @param errorMessage
* the error message to display if they differ
}
/**
- * Check that 2 {@link Object}s are equals.
+ * Check that 2 booleans are equals.
*
* @param expected
* the expected value
}
/**
- * Check that 2 {@link Object}s are equals.
+ * Check that 2 booleans are equals.
*
* @param errorMessage
* the error message to display if they differ
}
/**
- * Check that 2 {@link Object}s are equals.
+ * Check that 2 doubles are equals.
*
* @param expected
* the expected value
}
/**
- * Check that 2 {@link Object}s are equals.
+ * Check that 2 doubles are equals.
*
* @param errorMessage
* the error message to display if they differ
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.
*
+ "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();
+ }
}