From 534332fff48954b4d26c6394a79d7a7aff605f67 Mon Sep 17 00:00:00 2001 From: Niki Roo Date: Sun, 25 Mar 2018 11:40:12 +0200 Subject: [PATCH] TestCase: improve error messages for comparisons --- src/be/nikiroo/utils/test/TestCase.java | 54 ++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 6 deletions(-) diff --git a/src/be/nikiroo/utils/test/TestCase.java b/src/be/nikiroo/utils/test/TestCase.java index 5cff3630..4e7d3800 100644 --- a/src/be/nikiroo/utils/test/TestCase.java +++ b/src/be/nikiroo/utils/test/TestCase.java @@ -44,7 +44,6 @@ abstract public class TestCase { * @throws Exception * in case of error */ - @SuppressWarnings("unused") public void setUp() throws Exception { } @@ -54,7 +53,6 @@ abstract public class TestCase { * @throws Exception * in case of error */ - @SuppressWarnings("unused") public void tearDown() throws Exception { } @@ -259,14 +257,37 @@ abstract public class TestCase { */ 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 { - assertEquals("The 2 lists don't contain the same number of items", - expected.size(), actual.size()); + 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("Line " + i + " (0-based) is not correct", - expected.get(i), actual.get(i)); + assertEquals(errorMessage + ": item " + i + + " (0-based) is not correct", expected.get(i), + actual.get(i)); } } @@ -314,4 +335,25 @@ abstract public class TestCase { + "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(); + } } -- 2.27.0